Main Page   Class Hierarchy   Data Structures   File List   Data Fields   Globals  

/lib/libtvuscenario_rec/tvu_sr.h

Go to the documentation of this file.
00001 
00011 #ifndef __TVU_SR_H__
00012 #define __TVU_SR_H__
00013 
00014 #ifndef __TVU_TYPESDEF_H__
00015 #include "tvu_typesdef.h"
00016 #endif 
00017 
00018 #ifndef __TVU_CALCULATE_H__
00019 #include "tvu_calculate.h"
00020 #endif 
00021 
00022 #include "tvu_sr.resource.h"
00023 
00024 /*--------------------------------------------------------*/
00026 #define CLASSNAME_SR_SRMOTOR_ID                   20000
00027 #define CLASSNAME_SR_SRMOTOR                      "SRMotor"
00028 #define CLASSNAME_SR_SROBJECT_ID                  20001
00029 #define CLASSNAME_SR_SROBJECT                     "SRObject"
00030 #define CLASSNAME_SR_SRPERSON_ID                  20002
00031 #define CLASSNAME_SR_SRPERSON                     "SRPerson"
00032 #define CLASSNAME_SR_SRMODEL_ID                   20005
00033 #define CLASSNAME_SR_SRMODEL                      "SRModel"
00034 #define CLASSNAME_SR_SRSTATE_ID                   20006
00035 #define CLASSNAME_SR_SRSTATE                      "SRState"
00036 #define CLASSNAME_SR_SREVENT_ID                   20007
00037 #define CLASSNAME_SR_SREVENT                      "SREvent"
00038 #define CLASSNAME_SR_SRSCENARIO_ID                20008
00039 #define CLASSNAME_SR_SRSCENARIO                   "SRScenario"
00040 #define CLASSNAME_SR_SRVAR_ID                     20009
00041 #define CLASSNAME_SR_SRVAR                        "SRVar"
00042 #define CLASSNAME_SR_SRTRIGGER_MODEL_ID           20010
00043 #define CLASSNAME_SR_SRTRIGGER_MODEL              "SRTriggerModel"
00044 #define CLASSNAME_SR_SRTRIGGER_INSTANCE_ID        20011
00045 #define CLASSNAME_SR_SRTRIGGER_INSTANCE           "SRTriggerInstance"
00046 #define CLASSNAME_SR_SRENTITYHOLDER_ID            20012
00047 #define CLASSNAME_SR_SRENTITYHOLDER               "Entity"
00048 #define CLASSNAME_SR_SRBEHAVIOUR_INSTANCE_ID      20013
00049 #define CLASSNAME_SR_SRBEHAVIOUR_INSTANCE         "SRBehaviourInstance"
00050 #define CLASSNAME_SR_SRALARM_ID                   20014
00051 #define CLASSNAME_SR_SRALARM                      "SRAlarm"
00052 /*--------------------------------------------------------*/
00055 #define ENAME_SR_MOTOR_MOTOR             "SR_Motor"
00056 #define ENAME_SR_MOTOR_USEDMODELS                "UsedModels"
00057 #define ENAME_SR_MOTOR_MODELS                "Models"
00058 #define ENAME_SR_MOTOR_AUTOPROLONGMODELS "NonAutoProlongedModels"
00059 #define ENAME_SR_MOTOR_ONESOLUTIONMODELS "OneSolutionModels"
00060 #define ENAME_SR_MOTOR_INTERESTEDOBJECTS "InterestedObjects"
00061 #define ENAME_SR_MOTOR_EVNVARS           "EnvVars"
00062 #define ENAME_SR_MOTOR_MAXPERSONS        "MaxPersons"
00063 #define ENAME_SR_MOTOR_ALARMS            EXP_ALARMS
00064 #define ENAME_SR_MOTOR_SCENARIOLIFE      "ScenarioLife"
00065 
00066 #define ENAME_SR_OBJECT_INTERVAL         "Interval"
00067 
00068 #define ENAME_SR_PERSON_POSITION                 "Position"
00069 #define ENAME_SR_PERSON_POSITION2D               "Pos2D"
00070 #define ENAME_SR_PERSON_SPEED                "Speed"
00071 #define ENAME_SR_PERSON_STATES               "States"
00072 #define ENAME_SR_PERSON_EVENTS               "Events"
00073 #define ENAME_SR_PERSON_SCENARIOS                "Scenarios"
00074 
00075 #define ENAME_SR_MODEL_ACTORS                     "Actors"
00076 #define ENAME_SR_MODEL_EXPECTEDENTITIES           "ExpectedEntities"
00077 #define ENAME_SR_MODEL_FORBIDDENENTITIES          "ForbiddenEntities"
00078 #define ENAME_SR_MODEL_CONSTRAINTS                        "Constraints"
00079 #define ENAME_SR_MODEL_PRODUCTION                         "Production"
00080 #define ENAME_SR_MODEL_ALARM                      "Alarm"
00081 #define ENAME_SR_MODEL_PREMODELS                      "PreModels"
00082 #define ENAME_SR_MODEL_ENVVARS                        "EnvVars"
00083 #define ENAME_SR_MODEL_START                          "Start"
00084 #define ENAME_SR_MODEL_TERMINATION                    "Termination"
00085 
00086 #define ENAME_SR_VAR_NAME                "Name"
00087 #define ENAME_SR_VAR_TYPE                "Type"
00088 #define ENAME_SR_VAR_CONSTRAINTS         "Constraints"
00089 
00090 #define ENAME_SR_BEHAVIOUR_INSTANCE_ACTORS       "Actors"
00091 #define ENAME_SR_BEHAVIOUR_INSTANCE_START        "Start"
00092 #define ENAME_SR_BEHAVIOUR_INSTANCE_TERMINATION  "Termination"
00093 
00094 #define ENAME_SR_ALARM_TEXT_STR     "AText"
00095 #define ENAME_SR_ALARM_TYPE_STR     "AType"
00096 #define ENAME_SR_ALARM_POS2D_STR    "APos2D"
00097 #define ENAME_SR_ALARM_POS3D_STR    "APos3D"
00098 /*--------------------------------------------------------*/
00100 #define EVAR_NAME_SR_NOW_ID              20000
00101 #define EVAR_NAME_SR_NOW                 "Now"
00102 #define EVAR_NAME_SR_HAPPENING_ID        20001
00103 #define EVAR_NAME_SR_HAPPENING           "Happening"
00104 #define EVAR_NAME_SR_SHOWRESULTS_ID      20002
00105 #define EVAR_NAME_SR_SHOWRESULTS         "ShowResults"
00106 #define EVAR_NAME_SR_COUNTRESULTS_ID     20003
00107 #define EVAR_NAME_SR_COUNTRESULTS        "CountResults"
00108 /*--------------------------------------------------------*/
00111 #define ATTRIBUTE_SR_CONTEXT                   20010
00112 #define ATTRIBUTE_SR_CONTEXT_STR               "Context"
00113 
00114 #define ATTRIBUTE_SR_ZONES                     20011
00115 #define ATTRIBUTE_SR_ZONES_STR                 "Zones"
00116 
00117 #define ATTRIBUTE_SR_WALLS                     20012
00118 #define ATTRIBUTE_SR_WALLS_STR                 "Walls"
00119 
00120 #define ATTRIBUTE_SR_EQUIPMENTS                20013
00121 #define ATTRIBUTE_SR_EQUIPMENTS_STR            "Equipments"
00122 
00123 #define ATTRIBUTE_SR_SCENARIOS                 20014
00124 #define ATTRIBUTE_SR_SCENARIOS_STR             "Scenarios"
00125 
00126 #define ATTRIBUTE_SR_PERSONS                   20015
00127 #define ATTRIBUTE_SR_PERSONS_STR               "Persons"
00128 
00129 #define ATTRIBUTE_SR_EVARS                     20016
00130 #define ATTRIBUTE_SR_EVARS_STR                 "Env"
00131 
00132 #define ATTRIBUTE_SR_ALARMS                    20017
00133 #define ATTRIBUTE_SR_ALARMS_STR                "Alarms"
00134 
00135 #define ATTRIBUTE_SR_MODELS                    20018
00136 #define ATTRIBUTE_SR_MODELS_STR                ENAME_SR_MOTOR_MODELS
00137 
00138 #define ATTRIBUTE_SR_USEDMODELS                20019
00139 #define ATTRIBUTE_SR_USEDMODELS_STR            ENAME_SR_MOTOR_USEDMODELS
00140 
00142 #define ATTRIBUTE_SR_POSITIONS                 20100
00143 #define ATTRIBUTE_SR_POSITIONS_STR             "Positions"
00144 
00145 #define ATTRIBUTE_SR_SPEEDS                    20101
00146 #define ATTRIBUTE_SR_SPEEDS_STR                "Speeds"
00147 
00149 #define ATTRIBUTE_SR_ACTORS                    20200
00150 #define ATTRIBUTE_SR_ACTORS_STR                "Actors"
00151 
00152 #define ATTRIBUTE_SR_START                     20201
00153 #define ATTRIBUTE_SR_START_STR                 "Start"
00154 
00155 #define ATTRIBUTE_SR_END                       20202
00156 #define ATTRIBUTE_SR_END_STR                   "End"
00157 
00158 #define ATTRIBUTE_SR_MODEL                     20203
00159 #define ATTRIBUTE_SR_MODEL_STR                 "Model"
00160 /*--------------------------------------------------------*/
00162 #define OTYPE_SR_SROBJECT                20000
00163 #define OTYPE_SR_SROBJECT_STR            "SRObject"
00164 #define OTYPE_SR_PERSON                  20001
00165 #define OTYPE_SR_PERSON_STR              "Person"
00166 #define OTYPE_SR_STATE                   20002
00167 #define OTYPE_SR_STATE_STR               "State"
00168 #define OTYPE_SR_EVENT                   20003
00169 #define OTYPE_SR_EVENT_STR               "Event"
00170 #define OTYPE_SR_SCENARIO                20004
00171 #define OTYPE_SR_SCENARIO_STR            "Scenario"
00172 /*--------------------------------------------------------*/
00177 #define OP_GETCHILD                      20000
00178 #define OP_GETCHILD_STR                  "getchild"
00179 #define OP_GETCHILD_PARAMETER_OPTION     20001
00180 /*--------------------------------------------------------*/
00182 #define SR_TRIGGER_MODEL_NAME_CONDITION        "Name="
00183 #define SR_TRIGGER_MODEL_NAME_CONDITION_LEN    (strlen(SR_TRIGGER_MODEL_NAME_CONDITION))
00184 /*--------------------------------------------------------*/
00185 #define FN_SR_CURRENTMOTOR                  "CurrentMotor"
00186 #define FN_SR_GETALLMOTORS                  "GetAllMotors"
00187 #define FN_SR_INITMOTOR                     "InitMotor"
00188 #define FN_SR_STARTFRAME                    "StartFrame"
00189 #define FN_SR_ENDFRAME                      "EndFrame"
00190 #define FN_SR_SETACTIVEMOTOR                "SetActiveMotor"
00191 #define FN_SR_GETSCENARIOINSTANCELIST       "GetScenarioInstanceList"
00192 #define FN_SR_PREVIOUSSCENARIOINSTANCE      "PreviousScenario"
00193 #define FN_SR_PREVIOUSSCENARIOLIST          "PreviousScenarioList"
00194 #define FN_SR_OCCURENCENUMBER               "OccurenceNumber"
00195 #define FN_SR_OCCURENCENUMBERONLY           "OccurenceNumberOnly"
00196 
00197 #define VN_SR_CURRENTTIME                 "T"
00198 /*--------------------------------------------------------*/
00199 class CTSRMotor; 
00200 class CTSRObject; 
00201     class CTSRPerson; 
00202     class CTSRBehaviourInstance; 
00203     class CTSRAlarmModel; 
00204 class CTSRModel; 
00205     class CTSRState; 
00206     class CTSREvent; 
00207     class CTSRScenario; 
00208 class CTSRVar; 
00209 class CTSRTriggerModel; 
00210 class CTSRTriggerInstance; 
00211 class CTSREntityHolder; 
00212 
00214 class CTExpression;
00215 
00216 /*========================================================*/
00217 #define SR_REGISTER_ATTRIBUTE_CONSTRUCTOR(NameItem, class) \
00218     REGISTER_ATTRIBUTE_CONSTRUCTOR(CTSRMotor::m_ItemConstructors, NameItem, class)
00219 /*========================================================*/
00221 class CTSRMotor : public CTObject
00222 {
00223     public:
00225         CTSRMotor();
00226         ~CTSRMotor();
00228                 DEFINE_ID_FUNCTIONS(CTSRMotor, CTObject, CLASSNAME_SR_SRMOTOR_ID, CLASSNAME_SR_SRMOTOR)
00229                 friend class CTSRModel;
00230                 friend class CTSRBehaviourInstance;
00231         public:
00233                 virtual TBOOL   OnPreLoad(LPTBYTE* lpBuffers);
00234                 virtual TBOOL   OnPostLoad(LPTBYTE* lpBuffers);
00235                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00237                 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00238     public:
00241                 TBOOL Init();
00242                 TBOOL InitHooks();
00244                 TBOOL AddScenario(TLPCSTR sName);
00246                 TBOOL BuildModels();
00248                 TBOOL BuildVars();
00250                 TBOOL AddContextObject(CTObject* pObject);
00252                 TBOOL SetContext(CTList pContext);
00254                 TBOOL ChangeObjectState(TLPCSTR oName, TINT oNewState);
00256                 TBOOL CreateBuffers();
00258                 CTObject* CreateBuffers(CTList pVars, TINT* pIDs, TINT* eIDs, TINT* zIDs, TINT* wIDs);
00261                 TDWORD CalculateNBNodes(CTList pVars, TDWORD* nbPersons, TDWORD* nbEquipment, TDWORD* nbZones, TDWORD* nbWalls);
00264                 CTObject* FindObject(TLPCSTR ObjectName);
00265     public:
00266 #ifdef __FOR_VSIS__
00267 
00268                 TBOOL SetBlobs(LPTVOID pList, TINT iFrame);
00270                 TBOOL SetIndividuals(LPTVOID pList, TINT iFrame);
00271 #endif //__FOR_VSIS__
00272 
00273                 TBOOL SetPersons(CTList pList, TINT iFrame, TINT ppType = CTPersonPipe::TS_INDIVIDUAL);
00275                 TBOOL Infer();
00277                 TBOOL IsSatisfied(CTSRModel* pModel, CTSRTriggerInstance* pTrigger = TNULL);
00281                 TBOOL IsSatisfied(CTSRModel* pModel, CTList pVars, TBOOL bFirstActor = TFALSE);
00284                 TBOOL IsSatisfied(CTSRTriggerInstance* pTrigger);
00288                 CTSRBehaviourInstance* AddEntity(CTSRModel* pModel);
00290                 TINT ModelCount() { return m_nModels; };
00292                 CTList CreateRBNameList();
00294                 TBOOL DestroyRecognizedScenarios(TBOOL bDestroyImmediate);
00296                 TBOOL DestroyRecognizedScenariosPerson(CTSRPerson* pPerson);
00298                 TBOOL MarkToDestroy(TBOOL bDestroyImmediate);
00300                 TBOOL MarkToDestroy(CTSRPerson* pPerson);
00302                 TBOOL DestroyMarkedScenarios();
00304                 TBOOL SuspendScenriosPerson(CTSRPerson* pPerson);
00305     public:
00307                 CTList m_Persons;
00309                 CTInt  m_nMaxPersons;
00317                 CTArray* m_Entities;
00319                 CTArray2* m_EntityIndexes;
00323                 CTList* m_RecognizedScenarioIndexes;
00324 
00332                 //CTList m_RecognizedScenarios;
00333                 //CTList m_TailRecognizedScenarios;
00334 
00336                 //CTArray* m_ModelInstances;
00337                 
00339                 CTList m_LoadedModels;
00341                 CTList m_UsedModels;
00342                 CTList m_NameUsedModels; 
00343                 CTList m_NonAutoProlongedModels;
00344                 CTList m_OneSolutionModels;
00345                 CTList m_PrimaryModels;
00347                 TINT   m_nModels;
00349                 CTList m_AllContextObjects;
00350                 CTList m_InterestedObjects;
00351                 CTList m_InterestedZones;
00352                 CTList m_InterestedWalls;
00353                 CTList m_NameInterestedObjects;
00355                 TINT   m_nObjects;
00357                 TINT   m_nZones;
00359                 TINT   m_nWalls;
00361                 CTList m_EnvVars;
00363                 CTList m_pTriggers;
00365                 CTArray m_RecognisedBehaviourCount;
00367                 CTList m_Alarms;
00369                 CTInt m_ScenarioLife;
00370 
00371                 // for the nodes of the graph of recognized scenarios
00372                 CTList m_NewPersonNodes;
00373                 CTList m_NewEquipmentNodes;
00374                 CTList m_NewZoneNodes;
00375                 CTList m_NewWallNodes;
00376     public:
00378                 TINT GetNumberModels(TINT ModelType);
00379 
00381                 TINT m_nTotalPersons;
00382                 TINT m_nMinInvolvedPersons;
00383                 TINT m_nMaxInvolvedPersons;
00385                 TINT m_nTotalRecognizedScenarios;
00386                 TINT m_nMinRecognizedScenarios;
00387                 TINT m_nMaxRecognizedScenarios;
00388 
00390                 TBOOL m_bCreateExport;
00391 
00393                 CTFunctionModel* m_InitMotor;
00394                 CTFunctionModel* m_StartFrame;
00395                 CTFunctionModel* m_EndFrame;
00396     public:
00399                 CTBool* m_ShowResults;
00401                 CTBool* m_CountResults;
00402     public:
00404                 static CTInt m_T;
00406                 static CTSRMotor* m_pCurrentMotor;
00408                 enum { MAX_ENTITIES = 1024 };
00409                 static char m_MarkerPersons[MAX_ENTITIES], m_MarkerZones[MAX_ENTITIES], m_MarkerWalls[MAX_ENTITIES], m_MarkerObjects[MAX_ENTITIES];
00410     protected:
00412                 virtual TBOOL VerifyModelCoherence();
00413                 virtual TBOOL VerifyModelCoherence(CTList AllModels, CTList ModelsBeingVerified, CTSRModel* pModel);
00414     public:
00416                 static CTSRMotor* FindMotor(TLPCSTR MotorName = TNULL);
00417                 static TBOOL      AddMotor(CTSRMotor* pMotor);
00418                 static TBOOL      SetActiveMotor(TLPCSTR MotorName);
00419                 static TBOOL      SetActiveMotor(CTSRMotor* pMotor);
00421                 static CTList m_AllMotors;
00422 
00425                 static TBOOL InitLIB();
00426                 //
00428                 CTTree m_OldItemConstructors;
00429                 static CTTree m_ItemConstructors;
00430     public:
00432                 static CTObject* CF_GetCurrentMotor(CTList pObjects);
00433                 static CTObject* CF_GetAllMotors(CTList pObjects);
00434                 static CTObject* CF_SetActiveMotor(CTList pObjects);
00435 };
00436 typedef CTSRMotor* LPCTSRMotor;
00437 /*--------------------------------------------------------*/
00439 class CTSRObject : public CTObject
00440 {
00441     public:
00443         CTSRObject();
00444         ~CTSRObject();
00446                 DEFINE_ID_FUNCTIONS(CTSRObject, CTObject, CLASSNAME_SR_SROBJECT_ID, CLASSNAME_SR_SROBJECT)
00447         public:
00449                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00452                 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00453         public:
00455                 CTSRObject& operator = (CTSRObject& Object);
00456     public:
00458                 CTInterval m_Interval;
00459 };
00460 typedef CTSRObject* LPCTSRObject;
00461 /*--------------------------------------------------------*/
00463 class CTSRPerson : public CTSRObject
00464 {
00465     public:
00467         CTSRPerson();
00468         ~CTSRPerson();
00470                 DEFINE_ID_FUNCTIONS(CTSRPerson, CTSRObject, CLASSNAME_SR_SRPERSON_ID, CLASSNAME_SR_SRPERSON)
00472                 virtual TDWORD GetRealID() { return m_IndividualID; };
00473         public:
00475                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00476                 virtual TBOOL    Is3DObject() { return TTRUE; };
00477                 virtual TBOOL    IsMobileObject() { return TTRUE; };
00478                 virtual TPOINT3D GetLocation() { return m_Position.POINT3D(); };
00480                 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00481     public:
00482 #ifdef __FOR_VSIS__
00483 
00484                 virtual TBOOL FromStruct(LPTVOID lpStruct);
00485 #endif //__FOR_VSIS__
00486 
00487                 virtual TBOOL FromPersonPipe(CTPersonPipe* pp);
00488         public:
00490                 CTSRPerson& operator = (CTSRPerson& Object);
00491         public:
00493                 enum {LONG_LIFE = 10240};
00494     public:
00497                 TINT m_IndividualID; //
00498                 //
00499                 CTPoint3D m_Position; 
00500                 CTPoint2D m_Position2D; 
00501                 CTDouble  m_Speed;  
00502 
00503                 CTArray*  m_Entities;
00504                 //
00505                 CTArray   m_Positions; 
00506                 CTArray   m_Speeds; 
00507 };
00508 typedef CTSRPerson* LPCTSRPerson;
00509 /*--------------------------------------------------------*/
00511 class CTSRModel : public CTObject
00512 {
00513     public:
00515         CTSRModel();
00516         ~CTSRModel();
00518                 DEFINE_ID_FUNCTIONS(CTSRModel, CTObject, CLASSNAME_SR_SRMODEL_ID, CLASSNAME_SR_SRMODEL)
00519         public:
00521                 virtual TBOOL   OnPreLoad(LPTBYTE* lpBuffers);
00522                 virtual TBOOL   OnPostLoad(LPTBYTE* lpBuffers);
00523                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00526                 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00527     public:
00529                 virtual CTSRBehaviourInstance* GenerateInstance() { return TNULL; };
00531                 virtual CTAlarm* GenerateAlarm(CTObject* ScenarioInstance);
00532 
00535                 virtual TBOOL IsPrimaryModel() { return m_Termination == TNULL; };
00536 
00538                 virtual TINT ActorOfTypeCount(TINT Type);
00539 
00543                 virtual CTSRModel* GenerateUncertainModel(TLPCSTR SubscenarioName);
00545                 virtual CTList FindEntityPrivateActorVariables(CTSREntityHolder* pEntity, TBOOL bExpectedEntity = TTRUE);
00547                 virtual TBOOL RemoveAnEntity(TLPCSTR SubscenarioName);
00549                 virtual TBOOL RemoveConstraints(TLPCSTR VariableName);
00550                 //================================================================
00551                 // THESE FUNCTIONS TO PRE-COMPILE A PREDIFINED MODEL
00552 
00555                 virtual TBOOL Build();
00556 
00558                 virtual TBOOL VerifyActorVariable(CTSRVar* pVar);
00559                 virtual TBOOL VerifyActorVariables();
00560 
00562                 virtual TBOOL CreateNegativeActorVariables();
00563 
00567                 virtual TBOOL OrderSubScenarios();
00568 
00571                 virtual TBOOL CreateEntityVars();
00577                 virtual TBOOL AttachVarConstraints();
00579                 TBOOL ClassifyConstraints();
00580                 TBOOL IsPositiveConstraints(CTList Expression);
00581 
00583                 TBOOL CreateNeededNegativeVars();
00587                 CTList GetConstraintNeededNegativeVars(CTList Expression, CTList pResult = TNULL);
00588 
00591                 virtual TBOOL BuildActorVarConstraints();
00594                 virtual TBOOL BuildEntityVarConstraints();
00595 
00597                 virtual TBOOL ModifyTemporalConstraints();
00598                 virtual TBOOL ModifyTemporalConstraint(CTList pConstraint, CTList pVars, TINT iOrder = -1);
00599 
00602                 virtual CTList GetDependenceModelNames();
00603                 //================================================================
00604                 // THESE FUNCTIONS TO COMPILE A PREDIFINED MODEL
00605                 // IT FIRST GENERATES INTERMEDIATE MODELS FOR THE MODEL BY DECOMPOSING RECURRENTLY 
00606                 //                                                    THE MODEL BY 2 SUB-MODELS: START/TERMINATION
00607                 //    SECONDLY MAKES THE LINKS BEETWEN THESE MODELS
00608                 //    THIRDLY CREATES NEW ENTITY VARIABLE CORRESPONDING THE START
00609                 //    FOURTHLY CREATE TRIGGER MODELS
00610 
00614                 virtual CTList BuildIntermediateModels(); 
00616                 virtual CTSREntityHolder* BuildFromOrigin(CTSRModel* pOriginModel, CTSREntityHolder* Start, CTSREntityHolder* Termination);
00618                 virtual TLPSTR GenerateItermediateModelName(TLPSTR pBuff, TINT nModel)
00619                         { sprintf((char*)pBuff, "%s_%02d", GetName(), nModel); return pBuff; };
00620 
00622                 virtual TBOOL BuildEntities();
00623 
00625                 virtual TBOOL BuildExpectedModels(CTList pModels);
00626                 //================================================================
00627 
00634                 virtual TBOOL IsSatisfied(CTSRTriggerInstance* pTrigger, TBOOL FirstSolution);
00635 
00641                 virtual TBOOL VerifyNegativeConstraints();
00642                 virtual TBOOL CTSRModel::Exists(CTList pEntities, CTList pValues = TNULL);
00643 
00647                 virtual CTList CreateTriggers(CTList pTriggerInstances, CTSRBehaviourInstance* pTermination, TLPCSTR lpCreatedTriggers = TNULL);
00648 
00650                 CTSRObject* Produce();
00651 
00654                 virtual TBOOL IsAutoProlongable();
00655         public:
00657                 CTSRModel& operator = (CTSRModel& Object);
00658     public:
00660                 CTList m_ActorVars;
00661 
00663                 CTList          m_ExpectedEntities;   
00664                 CTList          m_ForbiddenEntities;   
00665                 CTList          m_Constraints;   
00666                 CTList          m_ProductionFormulas;   
00667                 CTSRAlarmModel* m_AlarmModel; 
00668 
00669                 CTList          m_EnVars; 
00670 
00672                 CTSREntityHolder* m_Start;  
00673                 CTSREntityHolder* m_Termination; 
00674                 CTList            m_PositiveConstraints;   
00675                 CTList            m_NegativeConstraints;   
00676                 CTSRModel*        m_pOriginalModel; 
00677                 CTList            m_MissedVariables; 
00678 
00680                 CTList m_Triggers;
00681 
00683                 TBOOL m_IsBaseClass;
00686                 TBOOL m_IsAutoProlongable;
00689                 TBOOL m_OneSolutionForPerson;
00690 
00692                 CTList m_PositiveEntityVars; 
00693                 CTList m_NegativeEntityVars; 
00694                 CTList m_NegativeActorsVars; 
00695                 CTList m_NeededNegativeVars; 
00696                 CTList m_TempVars;  
00697                 CTList m_ProductionVars; 
00698 
00699     public:
00701                 CTTree m_OldItemConstructors;
00703                 static CTList m_BuiltExpectedModels;
00704 };
00705 typedef CTSRModel* LPCTSRModel;
00706 /*--------------------------------------------------------*/
00708 class CTSRState : public CTSRModel
00709 {
00710     public:
00712         CTSRState();
00713         ~CTSRState();
00715                 DEFINE_ID_FUNCTIONS(CTSRState, CTSRModel, CLASSNAME_SR_SRSTATE_ID, CLASSNAME_SR_SRSTATE)
00716         public:
00718                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00721                 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00722      public:
00724                 virtual CTSRBehaviourInstance* GenerateInstance();
00726                 virtual CTAlarm* GenerateAlarm(CTObject* ScenarioInstance);
00727         public:
00729                 CTSRState& operator = (CTSRState& Object);
00730     public:
00731 };
00732 typedef CTSRState* LPCTSRState;
00733 /*--------------------------------------------------------*/
00735 class CTSREvent : public CTSRModel
00736 {
00737     public:
00739         CTSREvent();
00740         ~CTSREvent();
00742                 DEFINE_ID_FUNCTIONS(CTSREvent, CTSRModel, CLASSNAME_SR_SREVENT_ID, CLASSNAME_SR_SREVENT)
00743         public:
00745                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00748                 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00749      public:
00751                 virtual CTSRBehaviourInstance* GenerateInstance();
00753                 virtual CTAlarm* GenerateAlarm(CTObject* ScenarioInstance);
00754         public:
00756                 CTSREvent& operator = (CTSREvent& Object);
00757     public:
00758 };
00759 typedef CTSREvent* LPCTSREvent;
00760 /*--------------------------------------------------------*/
00762 class CTSRScenario : public CTSRModel
00763 {
00764     public:
00766         CTSRScenario();
00767         ~CTSRScenario();
00769                 DEFINE_ID_FUNCTIONS(CTSRScenario, CTSRModel, CLASSNAME_SR_SRSCENARIO_ID, CLASSNAME_SR_SRSCENARIO)
00770         public:
00772                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00775                 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00776      public:
00778                 virtual CTSRBehaviourInstance* GenerateInstance();
00780                 virtual CTAlarm* GenerateAlarm(CTObject* ScenarioInstance);
00781         public:
00783                 CTSRScenario& operator = (CTSRScenario& Object);
00784     public:
00785 };
00786 typedef CTSRScenario* LPCTSRScenario;
00787 /*--------------------------------------------------------*/
00789 class CTSRVar : public CTObject
00790 {
00791     public:
00792         CTSRVar();
00793         ~CTSRVar();
00795                 DEFINE_ID_FUNCTIONS(CTSRVar, CTObject, CLASSNAME_SR_SRVAR_ID, CLASSNAME_SR_SRVAR)
00796         public:
00797                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00799                 virtual TBOOL Save(LPCTFile pFile, TINT Marge);
00801                 virtual TBOOL Load(LPTBYTE* lpBuffers);         
00802         public:
00804                 virtual TBOOL Attach(LPCTObject Object);
00806                 virtual CTObject* GetValue();
00809                 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00810         public:
00812                 TBOOL AssignVerify(CTObject* pObject);
00814                 TBOOL VerifyConstraints();
00815 
00817                 TBOOL SetValues(CTList ContextObjects, CTList Zones, CTList Walls, CTList Persons);
00818                 TBOOL SetValues(CTList ListObjects);
00820                 TVOID MoveFirstValue();
00822                 CTObject* GetFirstValue();
00824                 CTObject* GetNextValue();
00826                 TBOOL BuildConstraints(CTList pVars, CTList pConstraints, TBOOL ActorVar = TFALSE);
00827         public:
00829                 CTSRVar& operator = (CTSRVar& Object);
00830     public:
00831                 CTString     m_Type; 
00832                 CTString     m_Name; 
00833                 LPCTObject   m_pObject; 
00834                 CTInt*       m_pType; 
00835 
00836                 CTExpression* m_Constraints;
00838                 CTList m_pListsAcceptableObjects;
00839                 CTList m_pLists; 
00840                 CTList m_pAcceptableObjects; 
00841 
00842                 //TBOOL m_FromTrigger;
00844                 TBOOL m_bNameTest;
00846                 TLPSTR m_pMarkers;
00848                 CTList* m_pNewNode;
00849     public:
00851                 static TDWORD GetExpressionOrder(CTList pVars, CTExpression* pExp, TBOOL* pContainsVar = TNULL);
00853                 static TBOOL IsTemporalConstraint(CTExpression* pExp);
00855                 static TBOOL IsDomainConstraint(CTExpression* pExp);
00857                 static TBOOL IsAcceptableChar(char c);
00858 };
00859 typedef CTSRVar* LPCTSRVar;
00860 /*--------------------------------------------------------*/
00862 class CTSRTriggerModel : public CTObject
00863 {
00864     public:
00866         CTSRTriggerModel();
00867         ~CTSRTriggerModel();
00869                 DEFINE_ID_FUNCTIONS(CTSRTriggerModel, CTObject, CLASSNAME_SR_SRTRIGGER_MODEL_ID, CLASSNAME_SR_SRTRIGGER_MODEL)
00870         public:
00871                 enum { MAX_NUMBER_VALUES = 64 };
00872         public:
00874                 CTSRTriggerInstance* CreateTrigger(CTSRBehaviourInstance* pTermination);
00875         public:
00877                 CTSRTriggerModel& operator = (CTSRTriggerModel& Object);
00878     public:
00880                 typedef struct tagPREENTRY
00881                 {
00882                         TBYTE      m_Type; // 0: to be verified the ID, 1: to be used for the actor variable of the composing model
00883                         LPCTObject m_Object; // be a pointer to an actor variable or be a DWORD (object's ID) corresponding to m_Type
00884                 } PREENTRY, *LPPREENTRY;
00885     public:
00887                 CTSRModel* m_pModel;
00890                 PREENTRY m_TValues[MAX_NUMBER_VALUES];
00891                 TINT     m_nTValues;
00893                 CTList m_TConditions;
00895                 PREENTRY m_SValues[MAX_NUMBER_VALUES]; // The enties to make correspond actor variables
00896                 TINT     m_nSValues; // number of enties. 0 => all actor variables are previously instantiated
00897 };
00898 typedef CTSRTriggerModel* LPCTSRTriggerModel;
00899 /*--------------------------------------------------------*/
00901 class CTSRTriggerInstance : public CTObject
00902 {
00903     public:
00905         CTSRTriggerInstance();
00906         ~CTSRTriggerInstance();
00908                 DEFINE_ID_FUNCTIONS(CTSRTriggerInstance, CTObject, CLASSNAME_SR_SRTRIGGER_INSTANCE_ID, CLASSNAME_SR_SRTRIGGER_INSTANCE)
00909         public:
00911                 CTSRTriggerInstance& operator = (CTSRTriggerInstance& Object);
00912     public:
00914                 CTSRTriggerModel* m_pTriggerModel;
00916                 CTSRBehaviourInstance* m_Termination;
00917     public:
00921                 static CTList AddTriggerToList(CTSRTriggerInstance* Trigger, CTList pList);
00922 };
00923 typedef CTSRTriggerInstance* LPCTSRTriggerInstance;
00924 /*--------------------------------------------------------*/
00927 class CTSREntityHolder : public CTObject
00928 {
00929     public:
00931         CTSREntityHolder();
00932         ~CTSREntityHolder();
00934                 DEFINE_ID_FUNCTIONS(CTSREntityHolder, CTObject, CLASSNAME_SR_SRENTITYHOLDER_ID, CLASSNAME_SR_SRENTITYHOLDER)
00935         public:
00937                 virtual TBOOL Load(LPTBYTE* lpBuffers);         
00939                 virtual TBOOL Save(LPCTFile pFile, TINT Marge);
00942                 TBOOL Build(CTSRModel* pModel);
00948                 TBOOL BuildNegativeActorVar(CTSRModel* pModel, TLPCSTR pVarName);
00949                 // Select a list of recognized scenarios for a negative entity
00950                 CTList FindListNegativeValues();
00951                 // We try to assign a recognized scenario to this entity
00952                 TBOOL SelectNegativeValue(CTSRBehaviourInstance* pScenarioInstance);
00954                 TBOOL InitVariable();
00956                 CTList FindContainingList();
00958                 TBOOL IsContainVariable(TLPCSTR VariableName);
00959         public:
00961                 CTSREntityHolder& operator = (CTSREntityHolder& Object);
00962     public:
00964                 LPCTSRVar m_pVar;
00966                 CTSRModel* m_pModel;
00969                 CTList m_pActors;
00974                 CTList m_Names;
00979                 TBOOL m_IsPositiveEntity;
00983                 CTList m_NegativeActorVarsMarkers;
00985                 TINT m_nUsedValues;
00986 };
00987 typedef CTSREntityHolder* LPCTSREntityHolder;
00988 /*--------------------------------------------------------*/
00989 class CTSRBehaviourInstance : public CTSRObject
00990 {
00991     public:
00993         CTSRBehaviourInstance();
00994         ~CTSRBehaviourInstance();
00996                 DEFINE_ID_FUNCTIONS(CTSRBehaviourInstance, CTSRObject, CLASSNAME_SR_SRBEHAVIOUR_INSTANCE_ID, CLASSNAME_SR_SRBEHAVIOUR_INSTANCE)
00997         public:
00999                 enum {DURATION_LIFE = 36000}; // 1h: 1s ~ 10 frames
01001                 enum {DES_NONE = 0, DES_DESTROYABLE = 1, DES_DESTROYED = 2}; //
01003                 enum {CDES_NONE = 0, CDES_START = 1, CDES_TERMINATION = 2};
01004         public:
01006                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
01009                 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
01012                 virtual CTInt* GetType();
01013     public:
01015                 virtual TBOOL CopyFromModel(CTSRModel* pModel);
01017                 virtual TBOOL IsSameEntity(CTSRBehaviourInstance* pInstance);
01018                 virtual TBOOL IsSameEntity(CTList pActorVariables);
01021                 virtual TBOOL OnRecognised(CTList Triggers);
01025                 virtual TBOOL OnProlonged(CTList Triggers, TINT StopTime = 0);
01033                 virtual TINT CanBeDestroyed(TINT cTime = 0, TINT LifeDuration = DURATION_LIFE);
01036                 virtual TINT CanBeDestroyed1(TINT Time);
01043                 virtual TBOOL Destroy(TINT ChildType = 0);
01044         public:
01046                 CTList FindContainingList();
01047                 static CTList FindContainingList(CTSRModel* pModel, CTList ActorList);
01048                 static CTList FindContainingList(CTSRModel* pModel, TBOOL bAutoCreate);
01049         public:
01051                 CTSRBehaviourInstance& operator = (CTSRBehaviourInstance& Object);
01052     public:
01056                 CTList m_Actors;
01060                 CTSRBehaviourInstance* m_Start;
01061                 CTSRBehaviourInstance* m_Termination;
01063                 CTList m_ProlongableBehaviours;
01065                 CTList m_StartedBehaviours;
01068                 TBOOL m_Prolongable;
01070                 TINT m_DestroyFlag; // DES_
01071                 TINT m_ChildrenDestroyFlag; // CDES_
01073                 CTSRModel* m_pModel;
01075                 TLPSTR m_pCreatedTriggers;
01077                 static TINT m_nRecognizedScenarios;
01078     public:
01079                 // for the nodes of the graph of recognized scenarios
01080                 static CTList m_NewPersonNode;
01081                 static CTList m_NewEquipmentNode;
01082                 static CTList m_NewZoneNode;
01083                 static CTList m_NewWallNode;
01084     public:
01089                 static CTObject* CF_GetScenarioInstanceList(CTList pObjects);
01091                 static CTObject* CF_PreviousScenario(CTList pObjects);
01094                 static CTObject* PreviousScenarioList(CTList pObjects, TINT skip);
01097                 static CTObject* CF_PreviousScenarioList(CTList pObjects);
01100                 static CTObject* CF_OccurenceNumber(CTList pObjects);
01103                 static CTObject* CF_OccurenceNumberOnly(CTList pObjects);
01104 };
01105 typedef CTSRBehaviourInstance* LPCTSRBehaviourInstance;
01106 /*--------------------------------------------------------*/
01107 class CTSRAlarmModel : public CTObject
01108 {
01109     public:
01111             CTSRAlarmModel();
01112             ~CTSRAlarmModel();
01114                 DEFINE_ID_FUNCTIONS(CTSRAlarmModel, CTObject, CLASSNAME_SR_SRALARM_ID, CLASSNAME_SR_SRALARM)
01116                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
01117     public:
01119                 virtual CTAlarm* GenerateAlarm(CTObject* ScenarioInstance);
01121                 virtual TBOOL Build(CTSRModel* pModel);
01123                 virtual TBOOL IsNeedtoSave();
01124         public:
01126                 CTSRAlarmModel& operator = (CTSRAlarmModel& Object);
01127      protected:
01129                 CTExpression m_TextFormula;
01130                 TINT         m_Type;
01131                 CTString     m_TypeFormula;
01132                 CTExpression m_Position2DFormula;
01133                 CTExpression m_Position3DFormula;
01135                 TBOOL        m_Built;
01136 };
01137 /*========================================================*/
01138 #endif 

Generated at Wed Aug 6 15:58:58 2003 for TVU's libraries for video surveillance: by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001