![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2001 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: subordMgr.h,v $ $Revision: 1.24 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef subordMgr_H_ 00009 #define subordMgr_H_ 00010 00013 00014 #include <vlutil/vlConfig.h> 00015 #include <map> 00016 #include <vlutil/vlList.h> 00017 #include <vlpi/disEnums.h> 00018 #include "vrfutil/entIdIntAssocLst.h" 00019 #include "vrfobjcore/keyedObjIter.h" 00020 00021 class DtVrfObject; 00022 class DtVrfObjectManager; 00023 class DtEntityIdentifier; 00024 class DtSubordinateManager; 00025 00028 typedef void (*DtSubordinateManagerCallbackFcn)( 00029 const DtSubordinateManager& subordinateManager, void* usr); 00030 00032 struct DtSubordinateManagerCallbackInfo 00033 { 00034 DtSubordinateManagerCallbackFcn myCallbackFunction; 00035 void* myUserData; 00036 }; 00037 00048 #include "vrfobjcore/vrfobjcoreDefines.h" 00049 class DT_DLL_vrfobjcore DtSubordinateManager 00050 { 00051 private: 00053 DtSubordinateManager(); 00054 00055 public: 00057 DtSubordinateManager(DtVrfObjectManager* simObjectManager); 00058 00060 DtSubordinateManager(const DtSubordinateManager& orig); 00061 00063 const DtSubordinateManager& operator=(const DtSubordinateManager& orig); 00064 00066 virtual ~DtSubordinateManager(); 00067 00069 virtual DtSubordinateManager* clone() const; 00070 00074 00076 virtual bool addSubordinate(DtVrfObject* subordinate, int designator = 0); 00077 00078 virtual bool addSubordinateBefore (DtVrfObject* subordinate, 00079 DtVrfObject* beforeObject, int designator = 0); 00080 00083 virtual bool addSubordinateAfter (DtVrfObject* subordinate, 00084 DtVrfObject* afterObject, int designator = 0); 00085 00087 virtual void removeSubordinate(DtVrfObject* subordinate); 00090 00091 virtual void removeAllSubordinates(); 00092 00094 virtual int numSubordinates() const; 00095 00098 virtual DtVrfObject* firstSubordinate() const; 00099 virtual DtVrfObject* lastSubordinate() const; 00100 00102 virtual bool isSubordinate(const DtEntityIdentifier& id) const; 00103 virtual bool isSubordinate(DtVrfObject* simObj) const; 00104 00108 const DtKeyedSimObjectIterator& iterator() const; 00109 00112 virtual int designatorForSubordinate(DtVrfObject* subordinate) const; 00113 virtual int designatorForSubordinate(const DtEntityIdentifier& id) const; 00114 00117 virtual DtVrfObject* subordinateForDesignator(int designator) const; 00118 00122 virtual bool setDesignator(const DtEntityIdentifier& id, int designator); 00123 virtual bool setDesignator(DtVrfObject* subordinate, int designator); 00124 00126 virtual int firstAvailableDesignator(int start = 1) const; 00127 00130 virtual int maxUsedDesignator() const; 00131 00135 virtual void reorderToDesignatorOrder(); 00136 00138 virtual void designatorOrderedList(std::vector<DtEntityIdentifier>& 00139 designatorOrderedList) const; 00140 00143 virtual void setSubordinateOrder(const std::vector<DtEntityIdentifier>& 00144 orderedList); 00145 00148 virtual void addSubordinatesChangedCallback( 00149 DtSubordinateManagerCallbackFcn fcn, void* userData); 00150 00153 virtual void removeSubordinatesChangedCallback( 00154 DtSubordinateManagerCallbackFcn fcn, void* userData); 00155 00156 protected: 00157 void copySubordinateList(const DtList& list); 00158 void emptySubordinateList(); 00159 00161 DtListItem* findSubordinateItem(const DtEntityIdentifier& id) const; 00162 00163 virtual void invokeSubordinatesChangedCallbacks() const; 00164 00165 protected: 00166 DtVrfObjectManager * mySimObjectManager; 00167 DtKeyedSimObjectIterator* myIterator; 00169 DtList mySubordinateList; 00173 DtEntityIdIntAssociationList myDesignatorTable; 00174 00178 std::vector<DtSubordinateManagerCallbackInfo> mySubordinatesChangedCallbackList; 00179 }; 00180 00181 #endif 00182