VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/managedObjList.h
Go to the documentation of this file.
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 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)