![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2005 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: managedObjList.h,v $ $Revision: 1.5 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00013 00014 #ifndef managedObjList_H_ 00015 #define managedObjList_H_ 00016 00017 #include "vrfobjcore/vrfObjPred.h" 00018 00019 #include <vlutil/vlConfig.h> 00020 #include <list> 00021 #include <vlutil/vlSmartPointers.h> 00022 #include <vlutil/vlTime.h> 00023 00024 class DtVrfObjectManager; 00025 class DtVrfObjectPredicateEvaluator; 00026 class DtManagedObjectList; 00027 class DtVrfObject; 00028 class DtEntityIdentifier; 00029 00032 typedef DtBoost::shared_ptr<DtManagedObjectList> DtManagedObjectListPtr; 00035 typedef DtBoost::shared_ptr<const DtManagedObjectList> DtManagedObjectListConstPtr; 00036 00044 #include "vrfobjcore/vrfobjcoreDefines.h" 00045 class DT_DLL_vrfobjcore DtManagedObjectList 00046 { 00047 private: 00050 DtManagedObjectList(); 00051 DtManagedObjectList(DtManagedObjectList& orig); 00052 DtManagedObjectList& operator=(DtManagedObjectList& orig); 00054 00055 protected: 00058 DtManagedObjectList(DtVrfObjectManager* objectManager, 00059 const DtVrfObjectPredicate& predicate = 00060 DtVrfObjectPredicate::nullPredicate(), 00061 bool reevaluateFlag = false, DtTime evaluationPeriod = 0); 00062 00064 virtual void init(); 00065 00066 public: 00069 static DtManagedObjectListPtr create( 00070 DtVrfObjectManager* objectManager, 00071 const DtVrfObjectPredicate& predicate = 00072 DtVrfObjectPredicate::nullPredicate(), 00073 bool reevaluatePeriodically = false, DtTime evaluationPeriod = 0.0); 00074 00076 virtual ~DtManagedObjectList(); 00077 00079 virtual const DtVrfObjectPredicate& predicate() const; 00080 00082 virtual bool reevaluateFlag() const ; 00083 00085 virtual DtTime evaluationPeriod() const; 00086 00087 typedef std::list<DtVrfObject*>::iterator iterator; 00088 typedef std::list<DtVrfObject*>::const_iterator const_iterator; 00089 00093 virtual iterator begin(); 00094 virtual const_iterator begin() const; 00095 virtual iterator end(); 00096 virtual const_iterator end() const; 00097 virtual size_t size() const; 00099 00102 virtual DtVrfObject* find(const DtEntityIdentifier& entityId) const; 00103 00109 virtual void invalidate(); 00110 00111 00112 protected: 00113 //add & remove using correct hash key type 00114 virtual void add(DtVrfObject* obj); 00115 virtual void remove(DtVrfObject* obj); 00116 00118 virtual void populateList(); 00119 00121 static void objectAddedCallback(DtVrfObject * vrfObject, void * usr); 00122 virtual void processObjectAdded(DtVrfObject * vrfObject); 00123 static void objectRemovedCallback(DtVrfObject * vrfObject, void * usr); 00124 virtual void processObjectRemoved(DtVrfObject * vrfObject); 00125 00127 static void predicateCallback(DtVrfObject* vrfObject, 00128 DtVrfObjectPredicateEvaluator* predicateEval, void* userData); 00129 virtual void processPredicateCallback(DtVrfObject* vrfObject, 00130 DtVrfObjectPredicateEvaluator* predicateEval); 00131 00132 protected: 00133 DtVrfObjectManager* myObjectManager; 00134 DtVrfObjectPredicate* myPredicate; 00135 DtVrfObjectPredicate* myNegatedPredicate; 00136 bool myReevaluateFlag; 00137 DtTime myEvaluationPeriod; 00138 std::list<DtVrfObject*> myFilteredObjectList; 00139 }; 00140 00141 #endif 00142