From 84d1f79fdf02e0010e4b2d118458e8cd8ce0dd71 Mon Sep 17 00:00:00 2001 From: Krzysztof H Date: Fri, 9 Mar 2012 17:08:05 +0100 Subject: Added license info using a small program SrcHead. --- src/CBot/CBotDll.h | 459 +++++++++++++++++++++++++++-------------------------- 1 file changed, 235 insertions(+), 224 deletions(-) (limited to 'src/CBot/CBotDll.h') diff --git a/src/CBot/CBotDll.h b/src/CBot/CBotDll.h index 4e0c5b1..973ccdb 100644 --- a/src/CBot/CBotDll.h +++ b/src/CBot/CBotDll.h @@ -1,7 +1,18 @@ -//////////////////////////////////////////////////////////////////////// -// Librairie pour l'interprétation du language CBOT -// pour le jeu COLOBOT -// +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see . //#include "stdafx.h" @@ -13,26 +24,26 @@ #define CBOTVERSION 104 //////////////////////////////////////////////////////////////////////// -// quelques classes définies par ailleurs +// quelques classes d�finies par ailleurs -class CBotToken; // programme transformé en "jetons" -class CBotStack; // pile pour l'exécution +class CBotToken; // programme transform� en "jetons" +class CBotStack; // pile pour l'ex�cution class CBotClass; // classe d'object -class CBotInstr; // instruction à exécuter +class CBotInstr; // instruction � ex�cuter class CBotFunction; // les fonctions user class CBotVar; // les variables class CBotVarClass; // une instance de classe -class CBotVarPointer; // pointeur à une instance de classe +class CBotVarPointer; // pointeur � une instance de classe class CBotCall; // les fonctions -class CBotCallMethode; // les méthodes -class CBotDefParam; // liste de paramètres +class CBotCallMethode; // les m�thodes +class CBotDefParam; // liste de param�tres //////////////////////////////////////////////////////////////////////// // Gestion des variables //////////////////////////////////////////////////////////////////////// -// ces types sont calqués sur les types Java +// ces types sont calqu�s sur les types Java // ne pas changer l'ordre de ces types enum CBotType @@ -40,24 +51,24 @@ enum CBotType CBotTypVoid = 0, // fonction retournant void CBotTypByte = 1, //n // nombre entier ( 8 bits) CBotTypShort = 2, //n // nombre entier (16 bits) - CBotTypChar = 3, //n // caractère "unicode" (16 bits) + CBotTypChar = 3, //n // caract�re "unicode" (16 bits) CBotTypInt = 4, // nombre entier (32 bits) CBotTypLong = 5, //n // nombre entier (64 bits) - CBotTypFloat = 6, // nombre décimal (32 bits) - CBotTypDouble = 7, //n // nombre décimal (64 bits) + CBotTypFloat = 6, // nombre d�cimal (32 bits) + CBotTypDouble = 7, //n // nombre d�cimal (64 bits) CBotTypBoolean = 8, // true ou false exclusivement - CBotTypString = 9, // chaine de caractère + CBotTypString = 9, // chaine de caract�re CBotTypArrayPointer = 10, // un tableau de variables - CBotTypArrayBody = 11, // idem mais crée l'instance + CBotTypArrayBody = 11, // idem mais cr�e l'instance - CBotTypPointer = 12, // pointeur à une instance - CBotTypNullPointer = 13, // pointeur null est spécial + CBotTypPointer = 12, // pointeur � une instance + CBotTypNullPointer = 13, // pointeur null est sp�cial CBotTypClass = 15, // instance d'une classe - CBotTypIntrinsic = 16 // instance d'une classe intrinsèque + CBotTypIntrinsic = 16 // instance d'une classe intrins�que }; - //n = non encore implémenté + //n = non encore impl�ment� // pour SetUserPtr lors de la suppression d'un objet #define OBJECTDELETED ((void*)-1) @@ -65,13 +76,13 @@ enum CBotType #define OBJECTCREATED ((void*)-2) -// classe permettant de définir le type complet d'un résultat +// classe permettant de d�finir le type complet d'un r�sultat class CBotTypResult { private: int m_type; CBotTypResult* m_pNext; // pour les types de types - CBotClass* m_pClass; // pour les dérivés de classe + CBotClass* m_pClass; // pour les d�riv�s de classe int m_limite; // limitation des tableaux friend class CBotVarClass; friend class CBotVarPointer; @@ -80,13 +91,13 @@ public: // divers constructeurs selon les besoins DllExport CBotTypResult(int type); - // pour les types simples (CBotTypInt à CBotTypString) + // pour les types simples (CBotTypInt � CBotTypString) DllExport CBotTypResult(int type, const char* name); // pour les types pointeur et classe intrinsic DllExport CBotTypResult(int type, CBotClass* pClass); - // idem à partir de l'instance d'une classe + // idem � partir de l'instance d'une classe DllExport CBotTypResult(int type, CBotTypResult elem); // pour les tableaux de variables @@ -96,20 +107,20 @@ public: // pour les assignations DllExport CBotTypResult(); - // pour par défaut + // pour par d�faut DllExport ~CBotTypResult(); DllExport int GivType(int mode = 0); - // rend le type CBotTyp* du résultat + // rend le type CBotTyp* du r�sultat void SetType(int n); // modifie le type DllExport CBotClass* GivClass(); - // rend le pointeur à la classe (pour les CBotTypClass, CBotTypPointer) + // rend le pointeur � la classe (pour les CBotTypClass, CBotTypPointer) DllExport int GivLimite(); @@ -124,7 +135,7 @@ public: DllExport CBotTypResult& GivTypElem(); - // rend le type des éléments du tableau (CBotTypArray) + // rend le type des �l�ments du tableau (CBotTypArray) DllExport BOOL Compare(CBotTypResult& typ); @@ -140,7 +151,7 @@ public: }; /* -// pour définir un résultat en sortie, utiliser par exemple +// pour d�finir un r�sultat en sortie, utiliser par exemple // pour rendre un simple Float return CBotTypResult( CBotTypFloat ); @@ -157,16 +168,16 @@ public: //////////////////////////////////////////////////////////////////////// -// Gestion des erreurs compilation et exécution +// Gestion des erreurs compilation et ex�cution //////////////////////////////////////////////////////////////////////// -// voici la liste des erreurs pouvant être retournées par le module +// voici la liste des erreurs pouvant �tre retourn�es par le module // pour la compilation -#define CBotErrOpenPar 5000 // manque la parenthèse ouvrante -#define CBotErrClosePar 5001 // manque la parenthèse fermante -#define CBotErrNotBoolean 5002 // l'expression doit être un boolean -#define CBotErrUndefVar 5003 // variable non déclarée +#define CBotErrOpenPar 5000 // manque la parenth�se ouvrante +#define CBotErrClosePar 5001 // manque la parenth�se fermante +#define CBotErrNotBoolean 5002 // l'expression doit �tre un boolean +#define CBotErrUndefVar 5003 // variable non d�clar�e #define CBotErrBadLeft 5004 // assignation impossible ( 5 = ... ) #define CBotErrNoTerminator 5005 // point-virgule attendu #define CBotErrCaseOut 5006 // case en dehors d'un switch @@ -175,8 +186,8 @@ public: #define CBotErrElseWhitoutIf 5009 // else sans if correspondant #define CBotErrOpenBlock 5010 // manque " { " #define CBotErrBadType1 5011 // mauvais type pour l'assignation -#define CBotErrRedefVar 5012 // redéfinition de la variable -#define CBotErrBadType2 5013 // 2 opérandes de type incompatibles +#define CBotErrRedefVar 5012 // red�finition de la variable +#define CBotErrBadType2 5013 // 2 op�randes de type incompatibles #define CBotErrUndefCall 5014 // routine inconnue #define CBotErrNoDoubleDots 5015 // " : " attendu // CBotErrWhile 5016, plus utile @@ -186,63 +197,63 @@ public: #define CBotErrNoCase 5020 // manque " case " #define CBotErrBadNum 5021 // nombre attendu #define CBotErrVoid 5022 // " void " pas possible ici -#define CBotErrNoType 5023 // déclaration de type attendue +#define CBotErrNoType 5023 // d�claration de type attendue #define CBotErrNoVar 5024 // nom de variable attendu #define CBotErrNoFunc 5025 // nom de fonction attendu -#define CBotErrOverParam 5026 // trop de paramètres -#define CBotErrRedefFunc 5027 // cette fonction existe déjà -#define CBotErrLowParam 5028 // pas assez de paramètres -#define CBotErrBadParam 5029 // mauvais types de paramètres -#define CBotErrNbParam 5030 // mauvais nombre de paramètres -#define CBotErrUndefItem 5031 // élément n'existe pas dans la classe +#define CBotErrOverParam 5026 // trop de param�tres +#define CBotErrRedefFunc 5027 // cette fonction existe d�j� +#define CBotErrLowParam 5028 // pas assez de param�tres +#define CBotErrBadParam 5029 // mauvais types de param�tres +#define CBotErrNbParam 5030 // mauvais nombre de param�tres +#define CBotErrUndefItem 5031 // �l�ment n'existe pas dans la classe #define CBotErrUndefClass 5032 // variable n'est pas une classe -#define CBotErrNoConstruct 5033 // pas de constructeur approprié -#define CBotErrRedefClass 5034 // classe existe déjà +#define CBotErrNoConstruct 5033 // pas de constructeur appropri� +#define CBotErrRedefClass 5034 // classe existe d�j� #define CBotErrCloseIndex 5035 // " ] " attendu -#define CBotErrReserved 5036 // mot réservé (par un DefineNum) -#define CBotErrBadNew 5037 // mauvais paramètre pour new +#define CBotErrReserved 5036 // mot r�serv� (par un DefineNum) +#define CBotErrBadNew 5037 // mauvais param�tre pour new #define CBotErrOpenIndex 5038 // " [ " attendu -#define CBotErrBadString 5039 // chaîne de caractère attendue +#define CBotErrBadString 5039 // cha�ne de caract�re attendue #define CBotErrBadIndex 5040 // mauvais type d'index "[ false ]" -#define CBotErrPrivate 5041 // élément protégé +#define CBotErrPrivate 5041 // �l�ment prot�g� #define CBotErrNoPublic 5042 // manque le mot "public" -// voici la liste des erreurs pouvant être retournées par le module -// pour l'exécution +// voici la liste des erreurs pouvant �tre retourn�es par le module +// pour l'ex�cution -#define CBotErrZeroDiv 6000 // division par zéro -#define CBotErrNotInit 6001 // variable non initialisée -#define CBotErrBadThrow 6002 // throw d'une valeur négative -#define CBotErrNoRetVal 6003 // fonction n'a pas retourné de résultat +#define CBotErrZeroDiv 6000 // division par z�ro +#define CBotErrNotInit 6001 // variable non initialis�e +#define CBotErrBadThrow 6002 // throw d'une valeur n�gative +#define CBotErrNoRetVal 6003 // fonction n'a pas retourn� de r�sultat #define CBotErrNoRun 6004 // Run() sans fonction active #define CBotErrUndefFunc 6005 // appel d'une fonction qui n'existe plus #define CBotErrNotClass 6006 // cette classe n'existe pas #define CBotErrNull 6007 // pointeur null #define CBotErrNan 6008 // calcul avec un NAN #define CBotErrOutArray 6009 // index hors du tableau -#define CBotErrStackOver 6010 // dépassement de la pile -#define CBotErrDeletedPtr 6011 // pointeur à un objet détruit +#define CBotErrStackOver 6010 // d�passement de la pile +#define CBotErrDeletedPtr 6011 // pointeur � un objet d�truit #define CBotErrFileOpen 6012 // ouverture du fichier impossible #define CBotErrNotOpen 6013 // canal pas ouvert -#define CBotErrRead 6014 // erreur à la lecture -#define CBotErrWrite 6015 // erreur à l'écriture +#define CBotErrRead 6014 // erreur � la lecture +#define CBotErrWrite 6015 // erreur � l'�criture -// d'autres valeurs peuvent être rendues +// d'autres valeurs peuvent �tre rendues // par exemple les exceptions rendues par les routines externes // et les " throw " avec un nombre quelconque. //////////////////////////////////////////////////////////////////////// -// définie une classe pour l'utilisation des strings -// car CString fait partie de MFC pas utilisé ici. +// d�finie une classe pour l'utilisation des strings +// car CString fait partie de MFC pas utilis� ici. // -// ( toutes les fonctions ne sont pas encore implémentées ) +// ( toutes les fonctions ne sont pas encore impl�ment�es ) class CBotString { private: - char* m_ptr; // pointeur à la chaine + char* m_ptr; // pointeur � la chaine int m_lg; // longueur de la chaine static HINSTANCE m_hInstance; @@ -349,9 +360,9 @@ public: class CBotStringArray : public CBotString { private: - int m_nSize; // nombre d'éléments - int m_nMaxSize; // taille réservée - CBotString* m_pData; // ^aux données + int m_nSize; // nombre d'�l�ments + int m_nMaxSize; // taille r�serv�e + CBotString* m_pData; // ^aux donn�es public: DllExport @@ -371,7 +382,7 @@ public: CBotString& ElementAt(int nIndex); }; -// différents mode pour GetPosition +// diff�rents mode pour GetPosition enum CBotGet { GetPosExtern = 1, @@ -381,16 +392,16 @@ enum CBotGet }; //////////////////////////////////////////////////////////////////// -// classe principale gérant un programme CBot +// classe principale g�rant un programme CBot // class CBotProgram { private: - CBotFunction* m_Prog; // les fonctions définies par l'utilisateur - CBotFunction* m_pRun; // la fonction de base pour l'exécution - CBotClass* m_pClass; // les classes définies dans cette partie - CBotStack* m_pStack; // la pile d'exécution + CBotFunction* m_Prog; // les fonctions d�finies par l'utilisateur + CBotFunction* m_pRun; // la fonction de base pour l'ex�cution + CBotClass* m_pClass; // les classes d�finies dans cette partie + CBotStack* m_pStack; // la pile d'ex�cution CBotVar* m_pInstance; // instance de la classe parent friend class CBotFunction; @@ -398,12 +409,12 @@ private: int m_ErrorStart; int m_ErrorEnd; - long m_Ident; // identificateur associé + long m_Ident; // identificateur associ� public: static CBotString m_DebugVarStr; // a fin de debug - BOOL m_bDebugDD; // idem déclanchable par robot + BOOL m_bDebugDD; // idem d�clanchable par robot BOOL m_bCompileClass; @@ -411,12 +422,12 @@ public: DllExport static void Init(); - // initialise le module (défini les mots clefs pour les erreurs) - // doit être fait une fois (et une seule) au tout début + // initialise le module (d�fini les mots clefs pour les erreurs) + // doit �tre fait une fois (et une seule) au tout d�but DllExport static void Free(); - // libère les zones mémoires statiques + // lib�re les zones m�moires statiques DllExport static @@ -433,11 +444,11 @@ public: DllExport BOOL Compile( const char* program, CBotStringArray& ListFonctions, void* pUser = NULL); - // compile le programme donné en texte - // retourne FALSE s'il y a une erreur à la compilation - // voir GetCompileError() pour récupérer l'erreur - // ListFonctions retourne le nom des fonctions déclarées extern - // pUser permet de passer un pointeur pour les routines définies par AddFunction + // compile le programme donn� en texte + // retourne FALSE s'il y a une erreur � la compilation + // voir GetCompileError() pour r�cup�rer l'erreur + // ListFonctions retourne le nom des fonctions d�clar�es extern + // pUser permet de passer un pointeur pour les routines d�finies par AddFunction DllExport void SetIdent(long n); @@ -454,10 +465,10 @@ public: DllExport BOOL GetError(int& code, int& start, int& end, CBotProgram* &pProg); // si TRUE - // donne l'erreur trouvée à la compilation - // ou à l'exécution - // start et end délimite le bloc où se trouve l'erreur - // pProg permet de savoir dans quel "module" s'est produite l'erreur d'exécution + // donne l'erreur trouv�e � la compilation + // ou � l'ex�cution + // start et end d�limite le bloc o� se trouve l'erreur + // pProg permet de savoir dans quel "module" s'est produite l'erreur d'ex�cution DllExport static CBotString GivErrorText(int code); @@ -465,42 +476,42 @@ public: DllExport BOOL Start(const char* name); - // définie quelle fonction doit être exécutée - // retourne FALSE si la fontion name n'est pas trouvée + // d�finie quelle fonction doit �tre ex�cut�e + // retourne FALSE si la fontion name n'est pas trouv�e // le programme ne fait rien, il faut appeller Run() pour cela DllExport BOOL Run(void* pUser = NULL, int timer = -1); - // exécute le programme - // retourne FALSE si le programme a été suspendu - // retourne TRUE si le programme s'est terminé avec ou sans erreur - // timer = 0 permet de faire une avance pas à pas + // ex�cute le programme + // retourne FALSE si le programme a �t� suspendu + // retourne TRUE si le programme s'est termin� avec ou sans erreur + // timer = 0 permet de faire une avance pas � pas DllExport BOOL GetRunPos(const char* &FunctionName, int &start, int &end); - // donne la position dans le programme en exécution - // retourne FALSE si on n'est pas en exécution (programme terminé) + // donne la position dans le programme en ex�cution + // retourne FALSE si on n'est pas en ex�cution (programme termin�) // FunctionName est un pointeur rendu sur le nom de la fonction // start et end la position dans le texte du token en traitement DllExport CBotVar* GivStackVars(const char* &FunctionName, int level); - // permet d'obtenir le pointeur aux variables sur la pile d'exécution - // level est un paramètre d'entrée, 0 pour le dernier niveau, -1, -2, etc pour les autres niveau - // la valeur retournée (CBotVar*) est une liste de variable (ou NULL) - // qui peut être traité que la liste des paramètres reçu par une routine - // FunctionName donne le nom de la fonction où se trouvent ces variables + // permet d'obtenir le pointeur aux variables sur la pile d'ex�cution + // level est un param�tre d'entr�e, 0 pour le dernier niveau, -1, -2, etc pour les autres niveau + // la valeur retourn�e (CBotVar*) est une liste de variable (ou NULL) + // qui peut �tre trait� que la liste des param�tres re�u par une routine + // FunctionName donne le nom de la fonction o� se trouvent ces variables // FunctionName == NULL signifiant qu'on est plus dans le programme (selon level) DllExport void Stop(); - // arrête l'exécution du programme + // arr�te l'ex�cution du programme // quitte donc le mode "suspendu" DllExport static void SetTimer(int n); - // défini le nombre de pas (parties d'instructions) à faire + // d�fini le nombre de pas (parties d'instructions) � faire // dans Run() avant de rendre la main "FALSE" DllExport @@ -508,7 +519,7 @@ public: BOOL AddFunction(const char* name, BOOL rExec (CBotVar* pVar, CBotVar* pResult, int& Exception, void* pUser), CBotTypResult rCompile (CBotVar* &pVar, void* pUser)); - // cet appel permet d'ajouter de manière externe (**) + // cet appel permet d'ajouter de mani�re externe (**) // une nouvelle fonction utilisable par le programme CBot DllExport @@ -517,20 +528,20 @@ public: DllExport BOOL SaveState(FILE* pf); - // sauvegarde l'état d'exécution dans le fichier - // le fichier doit avoir été ouvert avec l'appel fopen de cette dll - // sinon le système plante + // sauvegarde l'�tat d'ex�cution dans le fichier + // le fichier doit avoir �t� ouvert avec l'appel fopen de cette dll + // sinon le syst�me plante DllExport BOOL RestoreState(FILE* pf); - // rétablie l'état de l'exécution depuis le fichier - // le programme compilé doit évidemment être identique + // r�tablie l'�tat de l'ex�cution depuis le fichier + // le programme compil� doit �videmment �tre identique DllExport BOOL GetPosition(const char* name, int& start, int& stop, CBotGet modestart = GetPosExtern, CBotGet modestop = GetPosBloc); // donne la position d'une routine dans le texte d'origine - // le mode permet de choisir l'élément à trouver pour le début et la fin + // le mode permet de choisir l'�l�ment � trouver pour le d�but et la fin // voir les modes ci-dessus dans CBotGet @@ -553,21 +564,21 @@ public: #if 0 /* (**) Note: - Pour définir une fonction externe, il faut procéder ainsi: + Pour d�finir une fonction externe, il faut proc�der ainsi: - a) définir une routine pour la compilation - cette routine reçois la liste des paramètres (sans valeurs) - et retourne soit un type de résultat (CBotTyp... ou 0 = void) - soit un numéro d'erreur - b) définir une routine pour l'exécution - cette rourine reCoit la liste des paramètres (avec valeurs), - une variable pour stocker le résultat (selon le type donné à la compilation) + a) d�finir une routine pour la compilation + cette routine re�ois la liste des param�tres (sans valeurs) + et retourne soit un type de r�sultat (CBotTyp... ou 0 = void) + soit un num�ro d'erreur + b) d�finir une routine pour l'ex�cution + cette rourine reCoit la liste des param�tres (avec valeurs), + une variable pour stocker le r�sultat (selon le type donn� � la compilation) - Par exemple, une routine qui calcule la moyenne d'une liste de paramètres */ + Par exemple, une routine qui calcule la moyenne d'une liste de param�tres */ int cMoyenne(CBotVar* &pVar, CBotString& ClassName) { - if ( pVar == NULL ) return 6001; // il n'y a aucun paramètre ! + if ( pVar == NULL ) return 6001; // il n'y a aucun param�tre ! while ( pVar != NULL ) { @@ -575,7 +586,7 @@ int cMoyenne(CBotVar* &pVar, CBotString& ClassName) pVar = pVar -> GivNext(); } - return CBotTypFloat; // le type du résultat pourrait dépendre des paramètres ! + return CBotTypFloat; // le type du r�sultat pourrait d�pendre des param�tres ! } @@ -591,7 +602,7 @@ BOOL rMoyenne(CBotVar* pVar, CBotVar* pResult, int& Exception) } pResult->SetValFloat(total/nb); // retourne la valeur moyenne - return TRUE; // opération totalement terminée + return TRUE; // op�ration totalement termin�e } #endif @@ -599,20 +610,20 @@ BOOL rMoyenne(CBotVar* pVar, CBotVar* pResult, int& Exception) ///////////////////////////////////////////////////////////////////////////////// // Classe pour la gestion des variables -// les méthodes marquées DllExport -// peuvent être utile à l'exterieur du module -// ( il n'est pour l'instant pas prévu de pouvoir créer ces objets en externe ) +// les m�thodes marqu�es DllExport +// peuvent �tre utile � l'exterieur du module +// ( il n'est pour l'instant pas pr�vu de pouvoir cr�er ces objets en externe ) -// résultats pour GivInit() -#define IS_UNDEF 0 // variable indéfinie -#define IS_DEF 1 // variable définie -#define IS_NAN 999 // variable définie comme étant not a number +// r�sultats pour GivInit() +#define IS_UNDEF 0 // variable ind�finie +#define IS_DEF 1 // variable d�finie +#define IS_NAN 999 // variable d�finie comme �tant not a number // type de variable SetPrivate / IsPrivate #define PR_PUBLIC 0 // variable publique #define PR_READ 1 // read only -#define PR_PROTECT 2 // protected (héritage) -#define PR_PRIVATE 3 // strictement privée +#define PR_PROTECT 2 // protected (h�ritage) +#define PR_PRIVATE 3 // strictement priv�e class CBotVar { @@ -627,11 +638,11 @@ protected: CBotTypResult m_type; // type de valeur - int m_binit; // pas initialisée ? - CBotVarClass* m_pMyThis; // ^élément this correspondant - void* m_pUserPtr; // ^données user s'il y a lieu - BOOL m_bStatic; // élément static (dans une classe) - int m_mPrivate; // élément public, protected ou private ? + int m_binit; // pas initialis�e ? + CBotVarClass* m_pMyThis; // ^�l�ment this correspondant + void* m_pUserPtr; // ^donn�es user s'il y a lieu + BOOL m_bStatic; // �l�ment static (dans une classe) + int m_mPrivate; // �l�ment public, protected ou private ? CBotInstr* m_InitExpr; // expression pour le contenu initial CBotInstr* m_LimExpr; // liste des limites pour un tableau @@ -651,12 +662,12 @@ virtual ~CBotVar( ); // destructeur /* DllExport static CBotVar* Create( const char* name, int type, const char* ClassName = NULL); - // crée une variable selon son type,*/ + // cr�e une variable selon son type,*/ DllExport static CBotVar* Create( const char* name, CBotTypResult type); - // idem à partir du type complet + // idem � partir du type complet DllExport static @@ -677,16 +688,16 @@ virtual ~CBotVar( ); // destructeur DllExport void SetUserPtr(void* pUser); - // associe un pointeur utilisateur à une instance + // associe un pointeur utilisateur � une instance DllExport virtual void SetIdent(long UniqId); - // associe un identificateur unique à une instance - // ( c'est à l'utilisateur de s'assurer que l'id est unique) + // associe un identificateur unique � une instance + // ( c'est � l'utilisateur de s'assurer que l'id est unique) DllExport void* GivUserPtr(); - // rend le pointeur associé à la variable + // rend le pointeur associ� � la variable DllExport CBotString GivName(); // le nom de la variable, s'il est connu @@ -705,10 +716,10 @@ virtual ~CBotVar( ); // destructeur void SetType(CBotTypResult& type); DllExport - void SetInit(int bInit); // met la variable dans l'état IS_UNDEF, IS_DEF, IS_NAN + void SetInit(int bInit); // met la variable dans l'�tat IS_UNDEF, IS_DEF, IS_NAN DllExport - int GivInit(); // donne l'état de la variable + int GivInit(); // donne l'�tat de la variable DllExport void SetStatic(BOOL bStatic); @@ -729,9 +740,9 @@ virtual ~CBotVar( ); // destructeur DllExport virtual - CBotVar* GivItem(const char* name); // rend un élément d'une classe selon son nom (*) + CBotVar* GivItem(const char* name); // rend un �l�ment d'une classe selon son nom (*) virtual - CBotVar* GivItemRef(int nIdent); // idem à partir du n° ref + CBotVar* GivItemRef(int nIdent); // idem � partir du n� ref DllExport virtual @@ -739,18 +750,18 @@ virtual ~CBotVar( ); // destructeur DllExport virtual - CBotVar* GivItemList(); // donne la liste des éléments + CBotVar* GivItemList(); // donne la liste des �l�ments DllExport - CBotVar* GivStaticVar(); // rend le pointeur à la variable si elle est statique + CBotVar* GivStaticVar(); // rend le pointeur � la variable si elle est statique DllExport BOOL IsElemOfClass(const char* name); - // dit si l'élément appartient à la classe "name" + // dit si l'�l�ment appartient � la classe "name" // rend TRUE si l'objet est d'une classe fille DllExport - CBotVar* GivNext(); // prochaine variable dans la liste (paramètres) + CBotVar* GivNext(); // prochaine variable dans la liste (param�tres) //////////////////////////////////////////////////////////////////////////////////////////// void AddNext(CBotVar* pVar); // ajoute dans une liste @@ -760,27 +771,27 @@ virtual ~CBotVar( ); // destructeur DllExport virtual void SetValInt(int val, const char* name = NULL); - // initialise avec une valeur entière (#) + // initialise avec une valeur enti�re (#) ///////////////////////////////////////////////////////////////////////////////// DllExport - virtual void SetValFloat(float val); // initialise avec une valeur réelle (#) + virtual void SetValFloat(float val); // initialise avec une valeur r�elle (#) //////////////////////////////////////////////////////////////////////////////// DllExport - virtual void SetValString(const char* p);// initialise avec une valeur chaîne (#) + virtual void SetValString(const char* p);// initialise avec une valeur cha�ne (#) //////////////////////////////////////////////////////////////////////////////// DllExport - virtual int GivValInt(); // demande la valeur entière (#) + virtual int GivValInt(); // demande la valeur enti�re (#) //////////////////////////////////////////////////////////////////////// DllExport - virtual float GivValFloat(); // demande la valeur réelle (#) + virtual float GivValFloat(); // demande la valeur r�elle (#) /////////////////////////////////////////////////////////////////////// virtual - CBotString GivValString(); // demande la valeur chaîne (#) + CBotString GivValString(); // demande la valeur cha�ne (#) /////////////////////////////////////////////////////////////////////// virtual void SetClass(CBotClass* pClass); @@ -839,16 +850,16 @@ virtual ~CBotVar( ); // destructeur }; /* NOTE (#) - les méthodes SetValInt() SetValFloat() et SetValString() - ne peuvent êtes appellées qu'avec des objets respectivement entier, réelle ou chaîne - toujours s'assurer du type de la variable avant d'appeller ces méthodes + les m�thodes SetValInt() SetValFloat() et SetValString() + ne peuvent �tes appell�es qu'avec des objets respectivement entier, r�elle ou cha�ne + toujours s'assurer du type de la variable avant d'appeller ces m�thodes if ( pVar->GivType() == CBotInt() ) pVar->SetValFloat( 3.3 ); // plante !! - les méthodes GivValInt(), GivValFloat() et GivValString() + les m�thodes GivValInt(), GivValFloat() et GivValString() font des conversions de valeur, - GivValString() fonctionne sur des nombres (rend la chaîne correspondante) - par contre il ne faut pas faire de GivValInt() avec une variable de type chaîne ! + GivValString() fonctionne sur des nombres (rend la cha�ne correspondante) + par contre il ne faut pas faire de GivValInt() avec une variable de type cha�ne ! */ @@ -857,41 +868,41 @@ virtual ~CBotVar( ); // destructeur // Gestion des classes //////////////////////////////////////////////////////////////////////// -// classe pour définir de nouvelle classes dans le language CBOT -// par exemple pour définir la classe CPoint (x,y) +// classe pour d�finir de nouvelle classes dans le language CBOT +// par exemple pour d�finir la classe CPoint (x,y) class CBotClass { private: static - CBotClass* m_ExClass; // liste des classes existante à un moment donné - CBotClass* m_ExNext; // pour cette liste générale - CBotClass* m_ExPrev; // pour cette liste générale + CBotClass* m_ExClass; // liste des classes existante � un moment donn� + CBotClass* m_ExNext; // pour cette liste g�n�rale + CBotClass* m_ExPrev; // pour cette liste g�n�rale private: CBotClass* m_pParent; // classe parent CBotString m_name; // nom de cette classe-ci - int m_nbVar; // nombre de variables dans la chaîne + int m_nbVar; // nombre de variables dans la cha�ne CBotVar* m_pVar; // contenu de la classe - BOOL m_bIntrinsic; // classe intrinsèque + BOOL m_bIntrinsic; // classe intrins�que CBotClass* m_next; // chaine les classe - CBotCallMethode* m_pCalls; // liste des méthodes définie en externe - CBotFunction* m_pMethod; // liste des méthodes compilées + CBotCallMethode* m_pCalls; // liste des m�thodes d�finie en externe + CBotFunction* m_pMethod; // liste des m�thodes compil�es void (*m_rMaj) ( CBotVar* pThis, void* pUser ); friend class CBotVarClass; int m_cptLock; // pour Lock / UnLock - int m_cptOne; // pour réentrance Lock + int m_cptOne; // pour r�entrance Lock CBotProgram* m_ProgInLock[5];// processus en attente pour synchro public: - BOOL m_IsDef; // marque si est définie ou pas encore + BOOL m_IsDef; // marque si est d�finie ou pas encore DllExport CBotClass( const char* name, CBotClass* pParent, BOOL bIntrinsic = FALSE ); // constructeur - // Dès qu'une classe est créée, elle est connue + // D�s qu'une classe est cr��e, elle est connue // partout dans CBot - // le mode intrinsic donne une classe qui n'est pas gérée par des pointeurs + // le mode intrinsic donne une classe qui n'est pas g�r�e par des pointeurs DllExport ~CBotClass( ); // destructeur @@ -900,41 +911,41 @@ public: BOOL AddFunction(const char* name, BOOL rExec (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception), CBotTypResult rCompile (CBotVar* pThis, CBotVar* &pVar)); - // cet appel permet d'ajouter de manière externe (**) - // une nouvelle méthode utilisable par les objets de cette classe + // cet appel permet d'ajouter de mani�re externe (**) + // une nouvelle m�thode utilisable par les objets de cette classe DllExport BOOL AddUpdateFunc( void rMaj ( CBotVar* pThis, void* pUser ) ); - // défini la routine qui sera appellée pour mettre à jour les élements de la classe + // d�fini la routine qui sera appell�e pour mettre � jour les �lements de la classe DllExport BOOL AddItem(CBotString name, CBotTypResult type, int mPrivate = PR_PUBLIC); - // ajoute un élément à la classe + // ajoute un �l�ment � la classe // DllExport // BOOL AddItem(CBotString name, CBotClass* pClass); - // idem pour des éléments appartenant à pClass + // idem pour des �l�ments appartenant � pClass DllExport BOOL AddItem(CBotVar* pVar); - // idem en passant le pointeur à une instance d'une variable - // l'objet est pris tel quel, il ne faut donc pas le détruire + // idem en passant le pointeur � une instance d'une variable + // l'objet est pris tel quel, il ne faut donc pas le d�truire - // idem en donnant un élément de type CBotVar + // idem en donnant un �l�ment de type CBotVar void AddNext(CBotClass* pClass); DllExport CBotString GivName(); // rend le nom de la classe DllExport - CBotClass* GivParent(); // donne la classe père (ou NULL) + CBotClass* GivParent(); // donne la classe p�re (ou NULL) - // dit si une classe est dérivée (Extends) d'une autre + // dit si une classe est d�riv�e (Extends) d'une autre // rend TRUE aussi si les classes sont identiques DllExport BOOL IsChildOf(CBotClass* pClass); static - CBotClass* Find(CBotToken* &pToken); // trouve une classe d'après son nom + CBotClass* Find(CBotToken* &pToken); // trouve une classe d'apr�s son nom DllExport static @@ -950,7 +961,7 @@ public: BOOL ExecuteMethode(long& nIdent, const char* name, CBotVar* pThis, CBotVar** ppParams, CBotVar* &pResult, CBotStack* &pStack, CBotToken* pToken); void RestoreMethode(long& nIdent, const char* name, CBotVar* pThis, CBotVar** ppParams, CBotStack* &pStack); - // compile une classe déclarée par l'utilisateur + // compile une classe d�clar�e par l'utilisateur static CBotClass* Compile(CBotToken* &p, CBotCStack* pStack); static @@ -992,9 +1003,9 @@ public: #define TokenTypDef 5 // une valeur selon DefineNum #define TokenKeyWord 2000 // les mots clefs du langage -#define TokenKeyDeclare 2100 // mots clefs pour déclarations (int, float,..) -#define TokenKeyVal 2200 // les mots représentant une "valeur" (true, false, null, nan) -#define TokenKeyOp 2300 // les opérateurs +#define TokenKeyDeclare 2100 // mots clefs pour d�clarations (int, float,..) +#define TokenKeyVal 2200 // les mots repr�sentant une "valeur" (true, false, null, nan) +#define TokenKeyOp 2300 // les op�rateurs class CBotToken @@ -1006,19 +1017,19 @@ private: int m_ListIdKeyWords[200]; // les codes correspondants static - CBotStringArray m_ListKeyDefine; // les noms définis par un DefineNum + CBotStringArray m_ListKeyDefine; // les noms d�finis par un DefineNum static - long m_ListKeyNums[MAXDEFNUM]; // les valeurs associées + long m_ListKeyNums[MAXDEFNUM]; // les valeurs associ�es private: CBotToken* m_next; // suivant dans la liste CBotToken* m_prev; int m_type; // type de Token - long m_IdKeyWord; // numéro du mot clef si c'en est un + long m_IdKeyWord; // num�ro du mot clef si c'en est un // ou valeur du "define" - CBotString m_Text; // mot trouvé comme token - CBotString m_Sep; // séparateurs qui suivent + CBotString m_Text; // mot trouv� comme token + CBotString m_Sep; // s�parateurs qui suivent int m_start; // position dans le texte d'origine (programme) int m_end; // itou pour la fin du token @@ -1043,20 +1054,20 @@ public: int GivType(); // rend le type du token DllExport - CBotString& GivString(); // rend la chaine correspondant à ce token + CBotString& GivString(); // rend la chaine correspondant � ce token DllExport - CBotString& GivSep(); // rend le séparateur suivant le token + CBotString& GivSep(); // rend le s�parateur suivant le token DllExport - int GivStart(); // position du début dans le texte + int GivStart(); // position du d�but dans le texte DllExport int GivEnd(); // position de fin dans le texte DllExport CBotToken* GivNext(); // rend le suivant dans la liste DllExport - CBotToken* GivPrev(); // rend le Précédent dans la liste + CBotToken* GivPrev(); // rend le Pr�c�dent dans la liste DllExport static @@ -1064,7 +1075,7 @@ public: // transforme tout le programme DllExport static - void Delete(CBotToken* pToken); // libère la liste + void Delete(CBotToken* pToken); // lib�re la liste // fonctions non utiles en export @@ -1091,10 +1102,10 @@ public: #if 0 //////////////////////////////////////////////////////////////////////// // Exemples d'utilisation -// Définition de classes et de fonctions +// D�finition de classes et de fonctions -// définie la classe globale CPoint +// d�finie la classe globale CPoint // -------------------------------- m_pClassPoint = new CBotClass("CPoint", NULL); // ajoute le composant ".x" @@ -1104,17 +1115,17 @@ public: // le joueur peut alors utiliser les instructions // CPoint position; position.x = 12; position.y = -13.6 -// définie la classe CColobotObject +// d�finie la classe CColobotObject // -------------------------------- -// cette classe gère tous les objets dans le monde de COLOBOT -// le programme utilisateur "main" appartient à cette classe +// cette classe g�re tous les objets dans le monde de COLOBOT +// le programme utilisateur "main" appartient � cette classe m_pClassObject = new CBotClass("CColobotObject", m_pClassBase); // ajoute le composant ".position" m_pClassObject->AddItem("position", m_pClassPoint); // ajoute le composant ".type" m_pClassObject->AddItem("type", CBotTypResult(CBotTypShort)); - // ajoute une définition de constante - m_pClassObject->AddConst("ROBOT", CBotTypShort, 1); // ROBOT équivalent à la valeur 1 + // ajoute une d�finition de constante + m_pClassObject->AddConst("ROBOT", CBotTypShort, 1); // ROBOT �quivalent � la valeur 1 // ajoute la routine FIND m_pClassObject->AddFunction( rCompFind, rDoFind ); // le joueur peut maintenant utiliser les instructions @@ -1122,9 +1133,9 @@ public: -// définie la classe CColobotRobot dérivée de CColobotObject +// d�finie la classe CColobotRobot d�riv�e de CColobotObject // --------------------------------------------------------- -// les programmes "main" associés aux robots font partie de cette classe +// les programmes "main" associ�s aux robots font partie de cette classe m_pClassRobot = new CBotClass("CColobotRobot", m_pClassObject); // ajoute la routine GOTO m_pClassRobot->AddFunction( rCompGoto, rDoGoto ); @@ -1132,49 +1143,49 @@ public: // GOTO( FIND ( ROBOT ) ); -// crée une instance de la classe Robot +// cr�e une instance de la classe Robot // ------------------------------------ -// par exemple un nouveau robot qui vient d'être fabriqué +// par exemple un nouveau robot qui vient d'�tre fabriqu� CBotVar* m_pMonRobot = new CBotVar("MonRobot", m_pClassRobot); -// compile le programme main pour ce robot-là +// compile le programme main pour ce robot-l� // ------------------------------------------ CString LeProgramme( "void main() {GOTO(0, 0); return 0;}" ); if ( !m_pMonRobot->Compile( LeProgramme ) ) {gestion d'erreur...}; -// construit une pile pour l'interpréteur +// construit une pile pour l'interpr�teur // -------------------------------------- CBotStack* pStack = new CBotStack(NULL); -// exécute le programme main +// ex�cute le programme main // ------------------------- while( FALSE = m_pMonRobot->Execute( "main", pStack )) { // programme suspendu - // on pourrait passer la main à un autre (en sauvegardant pStack pour ce robot-là) + // on pourrait passer la main � un autre (en sauvegardant pStack pour ce robot-l�) }; - // programme "main" terminé ! + // programme "main" termin� ! -// routine implémentant l'instruction GOTO( CPoint pos ) +// routine impl�mentant l'instruction GOTO( CPoint pos ) BOOL rDoGoto( CBotVar* pVar, CBotVar* pResult, int& exception ) { if (pVar->GivType() != CBotTypeClass || pVar->IsElemOfClas("CPoint") ) { exception = 6522; return FALSE; ) - // le paramètre n'est pas de la bonne classe ? - // NB en fait ce contrôle est déjà fait par la routine pour la compilation + // le param�tre n'est pas de la bonne classe ? + // NB en fait ce contr�le est d�j� fait par la routine pour la compilation - m_PosToGo.Copy( pVar ); // garde la position à atteindre (object type CBotVar) + m_PosToGo.Copy( pVar ); // garde la position � atteindre (object type CBotVar) // ou alors CBotVar* temp; - temp = pVar->GivItem("x"); // trouve forcément pour un object de type "CPoint" + temp = pVar->GivItem("x"); // trouve forc�ment pour un object de type "CPoint" ASSERT (temp != NULL && temp->GivType() == CBotTypFloat); m_PosToGo.x = temp->GivValFloat(); - temp = pVar->GivItem("y"); // trouve forcément pour un object de type "CPoint" + temp = pVar->GivItem("y"); // trouve forc�ment pour un object de type "CPoint" ASSERT (temp != NULL && temp->GivType() == CBotTypFloat); m_PosToGo.y = temp->GivValFloat(); @@ -1182,4 +1193,4 @@ BOOL rDoGoto( CBotVar* pVar, CBotVar* pResult, int& exception ) // rend FALSE s'il faut patienter encore } -#endif \ No newline at end of file +#endif -- cgit v1.2.3-1-g7c22