#include <type_def.h>
Inheritance diagram for NLAISCRIPT::COperationTypeGD:
This class define an unknow opertation type. For exemple to know the type of the expression (a + b).
Nevrax France
Definition at line 695 of file type_def.h.
Public Types | |
enum | ConstraintTypeEnum { constraintMethode, constraintChkMethodeType, operandSimple, operandSimpleListOr, operandAnyObject, operandVoid, operandUnknown, operationType, operationTypeGD, operandListType, constraintStackComp, constraintDebug, constraintFindRun } |
Public Member Functions | |
void | addConstraint (IConstraint *c) |
Add a constraint dependency. We add a constraint dependency when a given constraint want the result of an other constraint. | |
const IConstraint * | clone () const |
Get a clone pointer memory. | |
COperationTypeGD () | |
COperationTypeGD (const COperationType &opG, const COperationType &opD, NLAIC::CTypeOfOperator::TTypeOp op) | |
sint32 | decRef () |
Decrement the reference of an object. | |
bool | dependOn (const IConstraint *c) const |
If this constraint depond on other constraint. | |
const NLAIC::CIdentType * | getConstraintTypeOf () |
Type of the expression that it have to be resolve by constraint. | |
virtual void | getDebugString (std::string &t) const |
const char * | getInfo () |
Get a string info. | |
const sint32 & | getRef () const |
get the refence count. | |
virtual ConstraintTypeEnum | getTypeOfClass () const |
get the type of class. the type must be in the ConstraintTypeEnum enumeration. | |
void | incRef () |
Inc a reference. We use this when we have to conserve a pointer memeory for exemple in a list. | |
bool | operator== (const IConstraint &c) const |
void | popConstraint (IConstraint *c) |
pop the last constaint dependency. | |
virtual void | release () |
Release allow to release the pointer. The last release when the _Ref is nul delete the object. | |
void | run (IConstraint *c) |
Run with a IConstraint dependency. | |
virtual void | run (CCompilateur &c) |
Run with a CCompilateur dependency. | |
void | runConnexcion () |
When a constraint is resoved,we call all dependency. | |
bool | satisfied () |
If the constraint is resolved. | |
virtual void | serial (NLMISC::IStream &f) throw (NLMISC::EStream) |
void | setOp (NLAIC::CTypeOfOperator::TTypeOp op) |
void | setOperationD (IOpType *opD) |
void | setOperationG (IOpType *opG) |
virtual | ~COperationTypeGD () |
Redefinition of base class method | |
virtual void | addIndex (int i, CCodeBrancheRun *) |
virtual double | eval (IOpType *) |
double | evalParam (IOpType *) |
Redefinition of base class method | |
virtual void | addIndex (int i, CCodeBrancheRun *) |
virtual double | eval (IOpType *) |
double | evalParam (IOpType *) |
virtual int | getColone () const |
get the colone of the expression that it have to be resolve by constraint in the code source. | |
virtual void | getError (char *) const |
get an error string when the constraint is'nt stisfied. | |
virtual int | getLine () const |
get the line of the expression that it have to be resolve by constraint in the code source. | |
Redefinition of base class method | |
virtual void | addIndex (int i, CCodeBrancheRun *) |
virtual double | eval (IOpType *) |
double | evalParam (IOpType *) |
virtual int | getColone () const |
get the colone of the expression that it have to be resolve by constraint in the code source. | |
virtual void | getError (char *) const |
get an error string when the constraint is'nt stisfied. | |
virtual int | getLine () const |
get the line of the expression that it have to be resolve by constraint in the code source. | |
Redefinition of base class method | |
virtual void | addIndex (int i, CCodeBrancheRun *) |
virtual double | eval (IOpType *) |
double | evalParam (IOpType *) |
virtual int | getColone () const |
get the colone of the expression that it have to be resolve by constraint in the code source. | |
virtual void | getError (char *) const |
get an error string when the constraint is'nt stisfied. | |
virtual int | getLine () const |
get the line of the expression that it have to be resolve by constraint in the code source. | |
Static Public Member Functions | |
const IOpType * | loadIOpType (NLMISC::IStream &f) |
Loader for IOpType. Not that we save and load an know type. | |
Private Attributes | |
NLAIC::CIdentType * | _Id |
NLAIC::CTypeOfOperator::TTypeOp | _Op |
Operation type. | |
IOpType * | _OpD |
IOpType * | _OpG |
Right oprand. | |
char * | _TxtInfo |
|
This enum define all IConstraint class type defined. That is'nt very clean because it is'nt very objects way to do jobs but that make easy to make job with out make heavy the hisarchy class. Because the best way is to derive class form NLAIC::IBasicInterface but we have to register class in class factory, define a save an load ..., in short make a lot of work for an internal work. If later peopole need this kind of class we'll clean it.
Definition at line 138 of file constraint.h.
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 }; |
|
Definition at line 707 of file type_def.h. References _OpD, _OpG, and NLAISCRIPT::IConstraint::getInfo().
00707 : 00708 _OpG((IOpType *)opG.clone()),_OpD((IOpType *)opD.clone()),_Op(op) 00709 { 00710 char txt[1028*8]; 00711 sprintf(txt,"constraint<COperationType> for <%s> <%s>",_OpG->getInfo(),_OpD->getInfo()); 00712 _TxtInfo = new char [strlen(txt) + 1]; 00713 strcpy(_TxtInfo,txt); 00714 _Id = NULL; 00715 _TxtInfo = NULL; 00716 00717 } |
|
Definition at line 719 of file type_def.h. Referenced by clone().
|
|
Definition at line 813 of file type_def.h. References _OpD, _OpG, and NLAIC::IPointerGestion::release().
|
|
Add a constraint dependency. We add a constraint dependency when a given constraint want the result of an other constraint.
Definition at line 207 of file constraint.h. References NLAISCRIPT::IConstraint::_ConstraintList. Referenced by NLAISCRIPT::COperandUnknown::COperandUnknown().
00208 { 00209 _ConstraintList.push_back(c); 00210 } |
|
Add a op-code dependency. the integer n is the index of the opcode in in the opcodePtr pointer. Implements NLAISCRIPT::IConstraint. Definition at line 55 of file type_def.h.
00055 {} |
|
Get a clone pointer memory.
Implements NLAISCRIPT::IConstraint. Definition at line 770 of file type_def.h. References _OpD, _OpG, COperationTypeGD(), and x.
00771 { 00772 IConstraint *x = new COperationTypeGD ((const COperationType &)*_OpG,(const COperationType &)*_OpD,_Op); 00773 return x; 00774 } |
|
Decrement the reference of an object.
Definition at line 93 of file abstract_interface.h. References NLAIC::IPointerGestion::_Ref, and sint32. Referenced by NLAIC::IPointerGestion::release(), and NLAIAGENT::CAgentTimerHandle::~CAgentTimerHandle().
00094 {
00095 return --_Ref;
00096 }
|
|
If this constraint depond on other constraint.
Implements NLAISCRIPT::IConstraint. Definition at line 749 of file type_def.h. References _OpD, _OpG, and NLAISCRIPT::IConstraint::dependOn().
|
|
Reimplemented in NLAISCRIPT::COperandSimpleListOr. Definition at line 76 of file type_def.cpp. References NLAISCRIPT::IOpType::evalParam(), NLAISCRIPT::IConstraint::getConstraintTypeOf(), NLAISCRIPT::IConstraint::getTypeOfClass(), NLAISCRIPT::l, and x. Referenced by NLAISCRIPT::CParam::eval().
00077 { 00078 if(getConstraintTypeOf() != NULL && e->getConstraintTypeOf() != NULL) 00079 { 00080 if(e->getTypeOfClass() == operandSimpleListOr) 00081 { 00082 COperandSimpleListOr *l = (COperandSimpleListOr *)e; 00083 std::list<NLAIC::CIdentType *>::const_iterator i = l->getList().begin(); 00084 while(i != l->getList().end() ) 00085 { 00086 COperandSimple *x =new COperandSimple (new NLAIC::CIdentType(*(*i++))); 00087 double d = evalParam(x); 00088 delete x; 00089 if(d >= 0.0) return d; 00090 } 00091 00092 } 00093 else return evalParam(e); 00094 } 00095 return -1.0; 00096 } |
|
Definition at line 34 of file type_def.cpp. References NLAISCRIPT::IClassInterpret::getComputeBaseClass(), NLAISCRIPT::IConstraint::getConstraintTypeOf(), NLAIC::CIdentType::getFactory(), NLAISCRIPT::IClassInterpret::getType(), and type. Referenced by NLAISCRIPT::IOpType::eval().
00035 { 00036 double d; 00037 if(e->getConstraintTypeOf() != NULL) 00038 { 00039 const NLAIC::CIdentType &idG = *getConstraintTypeOf(); 00040 const NLAIC::CIdentType &idD = *e->getConstraintTypeOf(); 00041 if(!(idG == idD)) 00042 { 00043 if(((const NLAIC::CTypeOfObject &)idD) & NLAIC::CTypeOfObject::tInterpret ) 00044 { 00045 IClassInterpret *o = (IClassInterpret *)((CClassInterpretFactory *)idD.getFactory())->getClass(); 00046 bool type = false; 00047 d = 0.0; 00048 while(o != NULL) 00049 { 00050 if( o->getType() == idG) 00051 { 00052 d += 1.0; 00053 type = true; 00054 break; 00055 } 00056 o = (IClassInterpret *)o->getComputeBaseClass(); 00057 } 00058 if(!type) return -1.0; 00059 else return d; 00060 } 00061 else 00062 { 00063 //NLAIC::CTypeOfObject o_t(tNombre | TString | tList | tLogic); 00064 if(((const NLAIC::CTypeOfObject &)idD) & ((const NLAIC::CTypeOfObject &)idG)) 00065 { 00066 return 0.0; 00067 } 00068 else return -1.0; 00069 } 00070 } 00071 else return 0.0; 00072 } 00073 else return -1.0; 00074 } |
|
Implements NLMISC::IClassable. Reimplemented in NLAIC::CIdentType. Definition at line 116 of file abstract_interface.h. Referenced by NLAISCRIPT::CAgentClass::isClassInheritedFrom().
00117 { 00118 return std::string("<unnamed>"); 00119 } |
|
get the colone of the expression that it have to be resolve by constraint in the code source.
Implements NLAISCRIPT::IConstraint. Reimplemented in NLAISCRIPT::CConstraintStackComp. Definition at line 58 of file type_def.h.
00058 {return 0;}
|
|
Type of the expression that it have to be resolve by constraint.
Implements NLAISCRIPT::IConstraint. Definition at line 789 of file type_def.h. References _OpG, NLAISCRIPT::IConstraint::getConstraintTypeOf(), and satisfied(). Referenced by run().
00790 { 00791 if(satisfied()) return (_Id = (NLAIC::CIdentType *)_OpG->getConstraintTypeOf()); 00792 return NULL; 00793 } |
|
|
get an error string when the constraint is'nt stisfied.
Implements NLAISCRIPT::IConstraint. Reimplemented in NLAISCRIPT::CConstraintStackComp. Definition at line 56 of file type_def.h.
00056 {} |
|
Get a string info.
Implements NLAISCRIPT::IConstraint. Definition at line 737 of file type_def.h. References _OpD, _OpG, and NLAISCRIPT::IConstraint::getInfo().
|
|
get the line of the expression that it have to be resolve by constraint in the code source.
Implements NLAISCRIPT::IConstraint. Reimplemented in NLAISCRIPT::CConstraintStackComp. Definition at line 57 of file type_def.h.
00057 { return 0;}
|
|
get the refence count.
Definition at line 99 of file abstract_interface.h. References NLAIC::IPointerGestion::_Ref, and sint32. Referenced by NLAIAGENT::CAgentTimerHandle::~CAgentTimerHandle().
00100 {
00101 return _Ref;
00102 }
|
|
get the type of class. the type must be in the ConstraintTypeEnum enumeration.
Implements NLAISCRIPT::IConstraint. Definition at line 808 of file type_def.h. Referenced by operator==().
00809 { 00810 return operationTypeGD; 00811 } |
|
|
Loader for IOpType. Not that we save and load an know type.
Definition at line 982 of file type_def.h. References NLMISC::IStream::serial(), sint32, and x.
00983 { 00984 IConstraint::ConstraintTypeEnum k = constraintMethode; 00985 IOpType *x; 00986 00987 f.serial((sint32 &)k); 00988 00989 switch(k) 00990 { 00991 case operandAnyObject: 00992 x = new COperandAnyObject(); 00993 return x; 00994 00995 case operandVoid: 00996 x = new COperandVoid(); 00997 return x; 00998 00999 case operandSimple: 01000 x = new COperandSimple(f); 01001 return x; 01002 01003 case operandSimpleListOr: 01004 x = new COperandSimpleListOr(f); 01005 return x; 01006 default: break; 01007 } 01008 return NULL; 01009 } |
|
Implements NLAISCRIPT::IConstraint. Definition at line 798 of file type_def.h. References _OpD, _OpG, NLAISCRIPT::IConstraint::getTypeOfClass(), and getTypeOfClass().
00799 { 00800 if(getTypeOfClass() == c.getTypeOfClass() && *((const COperationTypeGD &)c)._OpG == *_OpG && *((const COperationTypeGD &)c)._OpD == *_OpD) 00801 { 00802 return true; 00803 } 00804 return false; 00805 } |
|
pop the last constaint dependency.
Definition at line 32 of file constraint.cpp. References NLAISCRIPT::IConstraint::_ConstraintList. Referenced by NLAISCRIPT::COperandUnknown::~COperandUnknown().
00033 { 00034 std::list<IConstraint *>::iterator it = _ConstraintList.begin(); 00035 while(it != _ConstraintList.end()) 00036 { 00037 if(*it == c) 00038 { 00039 _ConstraintList.erase(it); 00040 break; 00041 } 00042 it ++ ; 00043 } 00044 } |
|
|
Run with a IConstraint dependency.
Reimplemented from NLAISCRIPT::IOpType. Definition at line 785 of file type_def.h.
00786 { 00787 } |
|
Run with a CCompilateur dependency.
Reimplemented from NLAISCRIPT::IOpType. Definition at line 776 of file type_def.h. References _OpD, _OpG, getConstraintTypeOf(), and NLAISCRIPT::IOpType::run().
00777 { 00778 _OpG->run(c); 00779 _OpD->run(c); 00780 00781 _Id = (NLAIC::CIdentType *)getConstraintTypeOf(); 00782 } |
|
When a constraint is resoved,we call all dependency.
Definition at line 214 of file constraint.h. References NLAISCRIPT::IConstraint::_ConstraintList, and NLAISCRIPT::IConstraint::run(). Referenced by NLAISCRIPT::CConstraintChkMethodeType::run(), NLAISCRIPT::CConstraintFindRun::setOpCode(), and NLAISCRIPT::CConstraintMethode::setOpCode().
00215 { 00216 while(_ConstraintList.size()) 00217 { 00218 IConstraint *a = _ConstraintList.back(); 00219 _ConstraintList.pop_back(); 00220 a->run(this); 00221 } 00222 } |
|
If the constraint is resolved.
Implements NLAISCRIPT::IConstraint. Definition at line 98 of file type_def.cpp. References _OpD, _OpG, NLAISCRIPT::IConstraint::getConstraintTypeOf(), NLAIC::CIdentType::getFactory(), NLAISCRIPT::IClassInterpret::getInheritance(), NLAISCRIPT::IClassInterpret::getType(), NLAISCRIPT::IConstraint::satisfied(), sint32, NLAISCRIPT::IClassInterpret::sizeVTable(), and uint32. Referenced by NLAISCRIPT::CCompilateur::affectationMember(), and getConstraintTypeOf().
00099 { 00100 if(_OpG->satisfied() && _OpD->satisfied()) 00101 { 00102 if(_Op == NLAIC::CTypeOfOperator::opAff) 00103 { 00104 if(*_OpG->getConstraintTypeOf() == *_OpD->getConstraintTypeOf()) return true; 00105 else 00106 { 00107 if(((const NLAIC::CTypeOfObject &)*_OpD->getConstraintTypeOf()) & NLAIC::CTypeOfObject::tInterpret) 00108 { 00109 const IClassInterpret *o = (const IClassInterpret *)((CClassInterpretFactory *)_OpD->getConstraintTypeOf()->getFactory())->getClass(); 00110 for(sint32 i = o->sizeVTable() - 1; i >= 1; i--) 00111 { 00112 if( o->getInheritance(i)->getType() == *(_OpG->getConstraintTypeOf())) return true; 00113 } 00114 } 00115 else return false; 00116 } 00117 } 00118 else 00119 { 00120 const NLAIC::CIdentType *id = _OpG->getConstraintTypeOf(); 00121 if( (( uint32)(((const NLAIC::CTypeOfOperator &)*id) & _Op)) != (uint32)_Op) return false; 00122 id = _OpD->getConstraintTypeOf(); 00123 if( ((uint32)(((const NLAIC::CTypeOfOperator &)*id) & _Op)) != (uint32)_Op) return false; 00124 } 00125 return true; 00126 } 00127 return false; 00128 } |
|
Reimplemented from NLAIC::IPointerGestion. Definition at line 727 of file type_def.h. References NLAISCRIPT::COperandSimple::serial().
00728 { 00729 if(_Id != NULL) 00730 { 00731 COperandSimple n(new NLAIC::CIdentType (*_Id)); 00732 n.serial(f); 00733 } 00734 else throw NLMISC::EStream(); 00735 } |
|
Definition at line 754 of file type_def.h. Referenced by NLAISCRIPT::CCompilateur::affectation(), and NLAISCRIPT::CCompilateur::affectationMember().
00755 { 00756 _Op = op; 00757 } |
|
Definition at line 765 of file type_def.h. References _OpD. Referenced by NLAISCRIPT::CCompilateur::affectation(), and NLAISCRIPT::CCompilateur::affectationMember().
00766 { 00767 _OpD = opD; 00768 } |
|
Definition at line 759 of file type_def.h. References _OpG. Referenced by NLAISCRIPT::CCompilateur::affectation(), NLAISCRIPT::CCompilateur::affectationMember(), and NLAISCRIPT::CCompilateur::setTypeExpressionG().
00760 { 00761 _OpG = opG; 00762 00763 } |
|
Definition at line 705 of file type_def.h. |
|
Operation type.
Definition at line 703 of file type_def.h. |
|
Definition at line 701 of file type_def.h. Referenced by clone(), COperationTypeGD(), dependOn(), getInfo(), operator==(), run(), satisfied(), setOperationD(), and ~COperationTypeGD(). |
|
Right oprand.
Definition at line 699 of file type_def.h. Referenced by clone(), COperationTypeGD(), dependOn(), getConstraintTypeOf(), getInfo(), operator==(), run(), satisfied(), setOperationG(), and ~COperationTypeGD(). |
|
Definition at line 704 of file type_def.h. |