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

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)