![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2000 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: objectNameDeconflictionTable.h,v $ $Revision: 1.3 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef DtObjectNameDeconflictionTable_H_ 00009 #define DtObjectNameDeconflictionTable_H_ 00010 00013 00014 #include "vrfutil/vrfutilDefines.h" 00015 00017 #include <deque> 00018 #include <map> 00019 00021 #include <vlutil/vlString.h> 00022 00023 class DtObjectNameDeconflictionEntry; 00024 class DtSubordinateOrderEntry; 00025 00032 class DT_DLL_vrfutil DtObjectNameDeconflictionTable 00033 { 00034 public: 00035 00042 typedef std::map<DtString, DtString > NameXrefIndex; 00043 typedef NameXrefIndex::iterator NameXrefIndexIterator; 00044 typedef NameXrefIndex::const_iterator const_NameXrefIndexIterator; 00045 00051 typedef std::map<DtString,DtObjectNameDeconflictionEntry*> AliasMap; 00052 typedef AliasMap::iterator AliasMapIterator; 00053 typedef AliasMap::const_iterator const_AliasMapIterator; 00054 00060 typedef std::map<DtString, DtSubordinateOrderEntry*> SubordinateOrderMap; 00061 typedef SubordinateOrderMap::iterator SubordinateMapIterator; 00062 typedef SubordinateOrderMap::const_iterator const_SubordinateMapIterator; 00063 00064 public: 00065 00067 DtObjectNameDeconflictionTable(); 00068 00070 virtual ~DtObjectNameDeconflictionTable(); 00071 00073 DtObjectNameDeconflictionTable( 00074 const DtObjectNameDeconflictionTable& orig); 00075 00077 DtObjectNameDeconflictionTable& operator=( 00078 const DtObjectNameDeconflictionTable& orig); 00079 00080 00081 public: 00082 00087 virtual const DtString& addAndDeconflict( 00088 const DtString& sScenarioName, 00089 const DtString& sOriginalObjectName, 00090 const DtString& sParentName, 00091 unsigned nOriginalDesignator); 00092 00093 virtual void clear(); 00094 00095 virtual DtObjectNameDeconflictionEntry* find( 00096 const DtString& sScenarioName, 00097 const DtString& sOriginalObjectName); 00098 00099 virtual const DtObjectNameDeconflictionEntry* find( 00100 const DtString& sScenarioName, 00101 const DtString& sOriginalObjectName) const; 00102 00103 virtual DtObjectNameDeconflictionEntry* find( 00104 const DtString& objectNameAlias); 00105 00106 virtual const DtObjectNameDeconflictionEntry* find( 00107 const DtString& objectNameAlias) const; 00108 00109 virtual DtSubordinateOrderEntry* findSubordinateEntry( 00110 const DtString& parentName); 00111 00112 virtual const DtSubordinateOrderEntry* findSubordinateEntry( 00113 const DtString& parentName) const; 00114 00115 virtual unsigned originalDesignator( 00116 const DtString& sScenarioName, 00117 const DtString& sOriginalObjectName) const; 00118 00123 virtual void remove( 00124 const DtString& sScenarioName, 00125 const DtString& sOriginalObjectName); 00126 00129 virtual void remove(const DtString& sScenarioName); 00130 00131 virtual const DtString& safeName(const DtString& sScenarioName, 00132 const DtString& sOriginalObjectName) const; 00133 00134 virtual std::pair<DtObjectNameDeconflictionTable::const_NameXrefIndexIterator, 00135 DtObjectNameDeconflictionTable::const_NameXrefIndexIterator> searchXrefRange( 00136 const DtString& sScenarioName) const; 00137 00138 protected: 00139 00140 virtual DtString deconflictName(const DtString& sObjectName) const; 00141 00142 virtual DtString generateRandomSequence(unsigned nLimit) const; 00143 00144 protected: 00145 00146 00147 protected: 00148 00149 NameXrefIndex myNameXrefIndex; 00150 AliasMap myAliasMap; 00151 SubordinateOrderMap mySubordinateMap; 00152 00153 }; 00154 00155 #endif 00156