From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- docs/doxygen/nel/constraint_8h-source.html | 362 +++++++++++++++++++++++++++++ 1 file changed, 362 insertions(+) create mode 100644 docs/doxygen/nel/constraint_8h-source.html (limited to 'docs/doxygen/nel/constraint_8h-source.html') diff --git a/docs/doxygen/nel/constraint_8h-source.html b/docs/doxygen/nel/constraint_8h-source.html new file mode 100644 index 00000000..bd67006d --- /dev/null +++ b/docs/doxygen/nel/constraint_8h-source.html @@ -0,0 +1,362 @@ + + + + nevrax.org : docs + + + + + + + + + + + + + + +
# Home   # nevrax.com   
+ + + + +
Nevrax
+ + + + + + + + + + +
+ + +
+ Nevrax.org
+ + + + + + + +
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
+
+ + +
+ + +
+Docs + +
+  + + + + + +
Documentation 
+ +
+Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  
+

constraint.h

Go to the documentation of this file.
00001 
+00007 /* Copyright, 2000 Nevrax Ltd.
+00008  *
+00009  * This file is part of NEVRAX NEL.
+00010  * NEVRAX NEL is free software; you can redistribute it and/or modify
+00011  * it under the terms of the GNU General Public License as published by
+00012  * the Free Software Foundation; either version 2, or (at your option)
+00013  * any later version.
+00014 
+00015  * NEVRAX NEL is distributed in the hope that it will be useful, but
+00016  * WITHOUT ANY WARRANTY; without even the implied warranty of
+00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+00018  * General Public License for more details.
+00019 
+00020  * You should have received a copy of the GNU General Public License
+00021  * along with NEVRAX NEL; see the file COPYING. If not, write to the
+00022  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+00023  * MA 02111-1307, USA.
+00024  */
+00025 
+00026 #ifndef NL_CONSTRAINT_H
+00027 #define NL_CONSTRAINT_H
+00028 
+00029 #include "nel/ai/script/interpret_methodes.h"
+00030 
+00031 namespace NLAISCRIPT
+00032 {
+00033         class CCompilateur;
+00034         class CCodeBrancheRun;  
+00035         class CMethodeName;
+00036         class IClassInterpret;
+00037         class IOpCode;
+00038 
+00049         struct CFunctionTag
+00050         {
+00052                 sint32 Inheritance;
+00054                 sint32 MethodNum;
+00056                 CMethodeName *Method;
+00058                 const NLAIAGENT::IObjectIA *Object;
+00060                 const NLAIAGENT::IVarName *MethodName;
+00062                 std::list<sint32>       Member;
+00064                 NLAIAGENT::IObjectIA *ReturnType;
+00065 
+00067                 CFunctionTag()
+00068                 {
+00069                         Method = NULL;
+00070                         Object = NULL;
+00071                         ReturnType = NULL;
+00072                         MethodName = NULL;
+00073                 }
+00074 
+00076                 CFunctionTag(const CFunctionTag &c)
+00077                 {
+00078                         Inheritance = c.Inheritance;
+00079                         MethodNum = c.MethodNum;
+00080                         Method = c.Method;  
+00081                         Object = c.Object;
+00082                         MethodName = c.MethodName;
+00083                         Member = c.Member;
+00084                         ReturnType = c.ReturnType;
+00085                         if(ReturnType) ReturnType->incRef();
+00086                 }
+00087 
+00089                 const CFunctionTag &operator = (const CFunctionTag &c)
+00090                 {
+00091                         Inheritance = c.Inheritance;
+00092                         MethodNum = c.MethodNum;
+00093                         Method = c.Method;  
+00094                         Object = c.Object;
+00095                         MethodName = c.MethodName;
+00096                         Member = c.Member;
+00097                         if(ReturnType) ReturnType->release();
+00098                         ReturnType = c.ReturnType;
+00099                         if(ReturnType) ReturnType->incRef();
+00100                         return *this;
+00101                 }
+00102 
+00103                 
+00105                 void setTypeObject(NLAIAGENT::IObjectIA *o)
+00106                 {
+00107                         if(ReturnType) ReturnType->release();
+00108                         ReturnType = o;
+00109                         ReturnType->incRef();
+00110                 }
+00111 
+00112                 virtual ~CFunctionTag()
+00113                 {
+00114                         if(ReturnType) ReturnType->release();
+00115                 }
+00116 
+00117         };
+00118 
+00129         class IConstraint : public NLAIC::IPointerGestion
+00130         {
+00131         public:
+00138                 enum ConstraintTypeEnum
+00139                 {
+00141                         constraintMethode,
+00143                         constraintChkMethodeType,
+00145                         operandSimple,
+00147                         operandSimpleListOr,
+00149                         operandAnyObject,
+00151                         operandVoid,
+00153                         operandUnknown,
+00155                         operationType,
+00157                         operationTypeGD,
+00159                         operandListType,
+00161                         constraintStackComp,
+00163                         constraintDebug,
+00165                         constraintFindRun
+00166                 };
+00167 
+00168         private:
+00170                 std::list<IConstraint *> _ConstraintList;
+00171 
+00172         public:
+00173                 IConstraint() {}
+00174 
+00176                 virtual void run(CCompilateur &) = 0;
+00178                 virtual void run(IConstraint *) = 0;
+00180                 virtual bool satisfied() = 0;
+00184                 virtual void addIndex(int n,CCodeBrancheRun *opcodePtr) = 0;
+00186                 virtual ConstraintTypeEnum getTypeOfClass() const = 0;
+00188                 virtual void getError(char *) const = 0;
+00189                 
+00191                 virtual int getLine() const = 0;                
+00193                 virtual int getColone() const = 0;              
+00194                 
+00195                 virtual bool operator == (const IConstraint &) const = 0;
+00196 
+00198                 virtual const NLAIC::CIdentType *getConstraintTypeOf() = 0;
+00200                 virtual const IConstraint *clone() const = 0;
+00202                 virtual const char *getInfo() = 0;
+00204                 virtual bool dependOn(const IConstraint *) const = 0;
+00205                 
+00207                 void addConstraint(IConstraint *c)
+00208                 {
+00209                         _ConstraintList.push_back(c);
+00210                 }
+00212                 void popConstraint(IConstraint *c);     
+00214                 void runConnexcion()
+00215                 {
+00216                         while(_ConstraintList.size())
+00217                         {
+00218                                 IConstraint *a = _ConstraintList.back();
+00219                                 _ConstraintList.pop_back();
+00220                                 a->run(this);
+00221                         }               
+00222                 }
+00223 
+00224                 virtual ~IConstraint() 
+00225                 {
+00226                 }
+00227 
+00228         };      
+00229         class IClassInterpret;
+00230         
+00231 
+00241         class CConstraintMethode: public IConstraint
+00242         {       
+00243 
+00244         public:
+00249                 enum TCallTypeOpCode{
+00251                         normalCall,
+00253                         stackCall,
+00255                         heapCall,
+00257                         newCall,
+00259                         searchCall
+00260                 };
+00261         protected:
+00263                 TCallTypeOpCode _CallType;
+00265                 IConstraint *_BaseClass;
+00267                 NLAIAGENT::IBaseGroupType *_MethodName;
+00269                 CParam *_Param;         
+00270                 bool _Satisfied;                                
+00271                 int _Lin;
+00272                 int _Col;
+00273                 std::list<std::pair<int, CCodeBrancheRun *> > _Code;
+00274                 char *_Txt;
+00275                 IConstraint *_Type;
+00276                 char *_TxtInfo;         
+00277                 int _PosHeap;
+00278                 bool _DelCType;
+00279                 CFunctionTag _M;                
+00280                 
+00281         public:
+00282                 CConstraintMethode(TCallTypeOpCode callType,int posHeap,IConstraint *baseClass,NLAIAGENT::IBaseGroupType *methodName,CParam *param,int lin,int col):
+00283                         _CallType(callType),_BaseClass(baseClass),_MethodName(methodName),_Param(param),_Satisfied(false),_Lin(lin),_Col(col),_PosHeap(posHeap)
+00284                 {                                               
+00285                         _Txt = NULL;
+00286                         _Type = NULL;
+00287                         std::string txt;
+00288                         std::string m;
+00289                         std::string p;
+00290                         _MethodName->getDebugString(m);
+00291                         _Param->getDebugString(p);
+00292                         txt = "constraint<CConstraintMethode> for";
+00293                         txt += m;
+00294                         txt += p;
+00295                         txt += NLAIC::stringGetBuild(" at line %d",_Lin);
+00296                         _TxtInfo = new char [strlen(txt.c_str()) + 1];
+00297                         strcpy(_TxtInfo,txt.c_str());                   
+00298                         _DelCType = false;
+00299                 }
+00301 
+00302 
+00303                 const char *getInfo() 
+00304                 {
+00305                         return _TxtInfo;
+00306                 }               
+00307 
+00308                 virtual void run(CCompilateur &);
+00309                 virtual void run(IConstraint *);
+00310 
+00311                 bool satisfied()
+00312                 {
+00313                         return _Satisfied;
+00314                 }               
+00315 
+00316                 bool dependOn(const IConstraint *c) const
+00317                 {
+00318                         if( c == _Type || c == _BaseClass || c == this) return true;
+00319                         return false;
+00320                 }
+00321 
+00322                 bool operator == (const IConstraint &c) const
+00323                 {
+00324                         if(getTypeOfClass() == c.getTypeOfClass() && 
+00325                                 ((const CConstraintMethode &)c)._CallType == _CallType &&
+00326                                 ((const CConstraintMethode &)c)._BaseClass == _BaseClass &&
+00327                                 ((const CConstraintMethode &)c).isEqual(*_MethodName,*_Param)) 
+00328                         {                               
+00329                                 return true;
+00330                         }
+00331                         return false;
+00332                 }               
+00333 
+00334                 void addIndex(int i,CCodeBrancheRun *c)
+00335                 {                       
+00336                         _Code.push_back(std::pair<sint32, CCodeBrancheRun *>(i,c));
+00337                 }
+00338 
+00339                 void getError(char *) const;
+00340 
+00341                 const IConstraint *clone() const;                                       
+00342 
+00343                 bool isEqual(const NLAIAGENT::IBaseGroupType &,const CParam &) const;
+00344 
+00345                 virtual void setOpCode(CCompilateur &comp,IOpCode *x,IConstraint *cType,bool del);
+00346 
+00347                 const NLAIC::CIdentType *getConstraintTypeOf()
+00348                 {                                                       
+00349                         return _Type == NULL ? NULL : _Type->getConstraintTypeOf();
+00350                 }
+00351 
+00352                 virtual ConstraintTypeEnum getTypeOfClass() const
+00353                 {
+00354                         return constraintMethode;
+00355                 }
+00356 
+00357                 const CFunctionTag &getfunctionTag() const
+00358                 {
+00359                         return _M;
+00360                 }
+00361 
+00362                 int getLine() const
+00363                 {
+00364                         return _Lin;
+00365                 }
+00366                 int getColone() const
+00367                 {
+00368                         return _Col;
+00369                 }
+00371 
+00372                 virtual ~CConstraintMethode()
+00373                 {
+00374                         _MethodName->release();
+00375                         _Param->release();
+00376                         if(_BaseClass)_BaseClass->release();
+00377                         if(_Txt != NULL) delete _Txt;
+00378                         delete _TxtInfo;                        
+00379                         if(_DelCType) _Type->release();
+00380                 }
+00381                 
+00382         };      
+00383 }
+00384 #include "nel/ai/script/constraint_type.h"
+00385 #endif
+
+ + +
                                                                                                                                                                    +
+ + -- cgit v1.2.1