170 likes | 248 Views
www.virtual-maxim.de/purga. Purga - Scriptengine. Ein Einblick. Inhalt. Überblick Grundlagen Variablen Schleifen Bedingte Anweisungen Purga to C++ C++ to Purga Ausblick. Überblick. Website: www.virtual-maxim.de/purga Wird seit 2007 entwickelt Kostenlos und frei verwendbar
E N D
www.virtual-maxim.de/purga Purga - Scriptengine Ein Einblick
Inhalt Überblick Grundlagen Variablen Schleifen Bedingte Anweisungen Purga to C++ C++ to Purga Ausblick
Überblick Website: www.virtual-maxim.de/purga Wird seit 2007 entwickelt Kostenlos und frei verwendbar Für Windows und Linux verfügbar Beinhaltet Dokumentation und Beispiele Syntax ist sehr C++ - ähnlich Einfache Einbindung in C++ - Programme
Grundlagen Schlüsselwörter int, float, string, void, bool, table, vector, false, true, if, while, else, elseif, for, and, or, const, function, return, ref Tokens
Variablen 1 Statische Typzuweisung Auto-Initialisierung Datentypen: Konstanten werden mit const eingeleitet
Variablen 2 Deklaration Initialisierung Deklaration & Initialisierung Datentyp Name; Name = Wert; Datentyp Name = Wert;
Schleifen 1 - for Syntax: for( Initialisierung; Bedingung; Anweisung) { // Anweisung } Beispiel: for( int i = 0; i < 5; i++) { // Anweisung }
Schleifen 2 - while Syntax: while(Bedingung) { // Anweisung } Beispiel: int i = -5; while( i < 0) { i++; }
Bedingte Anweisungen 1 – if / else Syntax: Beispiel: if(Bedingung) { // Anweisung 1 } else { // Anweisung 2 } int i = -5; if( i < 0) { i++; } else { i = -10; }
Bedingte Anweisungen 2 – elseif Syntax: Beispiel: if(Bedingung) { // Anweisung 1 } elseif { // Anweisung 2 } int i = -5; if( i < 0) { i++; } elseif( i > 0 and i < 12) { i = -10; } else { i = 20; }
Purga to C++ / Variablen In Purga deklarierte Variablen in C++ verwenden Funktioniert nur mit globalen Variablen Es stehen folgende Methoden bereit: // Eine globale Purga-Variable in C++ exportieren bool GetVariable(constwchar_t* var_name, int& variable); bool GetVariable(constwchar_t* var_name, double& variable); bool GetVariable(constwchar_t* var_name, std::wstring& variable); bool GetVariable(constwchar_t* var_name, bool& variable);
Purga to C++ / Variablen - Beispiel Purga-Script: int ivariable = -4; C++ Code: int purga_var = 0; Purga_Instanz.GetVariable(“ivariable”, purga_var); std::cout << purga_var << std::endl;
C++ to Purga / Variablen • Variablen die in C++ deklariert wurden in Purga verwenden • Es stehen folgende Methoden bereit: bool RegisterVariable(constwchar_t* var_name, int &var); bool RegisterVariable(constwchar_t* var_name, double &var); bool RegisterVariable(constwchar_t* var_name, std::wstring &var); bool RegisterVariable(constwchar_t* var_name, bool &var);
C++ to Purga / Variablen - Beispiel C++ Code: float cpp_var = 0; Purga_Instanz.RegisterVariable(“cpp_var”, cpp_var ); std::cout << purga_var << std::endl; Purga-Script: cpp_var = 34.67; C++ Code: // Nach der Ausführung des Scripts // wird auf dem Bildschirm 34.67 erscheinen std::cout << cpp_var << std::endl;
C++ to Purga / Funktionen C++ Funktionen in Purga aufrufen _stdcall oder _cdecl Aufrufkonvention Funktionen wird mit folgender Methode exportiert: bool RegisterFunction(constwchar_t* FullNameOfFunction, void* function, eCallType calltype = purga::CALL_STDCALL);
C++ to Purga / Funktionen - Beispiel C++ Code: Purga_Instanz.RegisterFunction(L"int print(string)", &wprintf, purga::CALL_CDECL); Purga-Script: print("hallo \n");
Ausblick Zukünftige Features: Purga-Funktionen, Tabellen, Referenzen Steigern der Geschwindigkeit Erweitern der Dokumentation Bessere Fehlererkennung Danke für Ihr Interesse!