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
00333
00334
00336
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
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
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
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
00605
00606
00607
00608
00609
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
00844
00846
00848
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;
00883 LPCTObject m_Object;
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];
00896 TINT m_nSValues;
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
00950 CTList FindListNegativeValues();
00951
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};
01001
01003
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;
01071 TINT m_ChildrenDestroyFlag;
01073
01075
01077
01078 public:
01079
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