![]() |
VR-Link API Documentation for HLA 1516
|
00001 /****************************************************************************** 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00006 00010 00011 #ifndef env_H_ 00012 #define env_H_ 00013 00014 #include "envObject.h" 00015 #include "nativeValue.h" 00016 #include <list> 00017 00018 #include <ostream> 00019 00020 #ifdef DtUSE_UTILITIES_NAMESPACE 00021 namespace DtUSE_UTILITIES_NAMESPACE 00022 { 00023 #endif 00024 00029 class DT_DLL_MTL DtEnvironment 00030 { 00031 public: 00033 DtEnvironment(); 00034 00036 explicit DtEnvironment(const DtString& name); 00037 00041 explicit DtEnvironment(DtEnvValueSP root); 00042 00044 virtual ~DtEnvironment(); 00045 00049 void sync(); 00055 void sync(DtEnvValueSP value); 00056 00058 DtEnvValueSP root() const; 00059 00063 void setRoot(DtEnvValueSP root); 00064 00067 void rootToParent(); 00068 00070 DtEnvValueSP getTopParent(); 00071 00073 DtEnvValueSP getTopParent(DtEnvValueSP value); 00074 00078 void reparent( DtEnvValueSP value, DtEnvValueSP parent ); 00079 00081 00082 00083 00084 00085 00086 DtEnvValueSP addComment(const DtString& comment,DtEnvValueSP parent); 00087 DtEnvValueSP addComment(const DtString& comment); 00089 00090 DtEnvValueSP addNativeValue(DtNativeValueSP nativeValue,DtEnvValueSP parent); 00091 DtEnvValueSP getNativeValue(DtEnvValueSP parent) const; 00092 00093 DtEnvValueSP addAttribute(const DtString& name,const DtString& value); 00094 DtEnvValueSP addAttribute(const DtString& name,const DtString& value,DtEnvValueSP parent); 00095 00096 DtEnvValueSP addNamedList(const DtString& name); 00097 DtEnvValueSP addNamedList(const DtString& name,DtEnvValueSP parent); 00098 00100 00101 00102 00103 00104 00105 00106 DtEnvValueSP addObject(const DtString& objectType); 00107 DtEnvValueSP addObject(const DtString& objectType,DtEnvValueSP parent); 00108 DtEnvValueSP addObject(const DtString& objectName,const DtString& objectType); 00109 DtEnvValueSP addObject(const DtString& objectName,const DtString& objectType, DtEnvValueSP parent); 00111 00112 DtEnvValueSP getAttribute(const DtString& name); 00113 DtEnvValueSP getAttribute(const DtString& name,DtEnvValueSP parent); 00114 00115 void getNamedListsByName(const DtString& objectName,std::list<DtEnvValueSP>& list); 00116 void getObjectsByName(const DtString& objectName,std::list<DtEnvValueSP>& list); 00117 void getObjectsByType(const DtString& objectType,std::list<DtEnvValueSP>& list); 00118 00119 void getNamedListsByName(const DtString& objectName,std::list<DtEnvValueSP>& list,DtEnvValueSP parent); 00120 void getObjectsByName(const DtString& objectName,std::list<DtEnvValueSP>& list,DtEnvValueSP parent); 00121 void getObjectsByType(const DtString& objectType,std::list<DtEnvValueSP>& list,DtEnvValueSP parent); 00122 00123 DtEnvValueSP getNamedList(const DtString& name) const; 00124 DtEnvValueSP getNamedList(const DtString& name,DtEnvValueSP root) const; 00125 00127 00128 DtEnvValueSP getObject(const DtString& name,const DtString& type) const; 00129 DtEnvValueSP getObject(const DtString& name,const DtString& type,DtEnvValueSP root) const; 00130 00135 DtEnvObjectSync* getObjectSync(const DtString& name,const DtString& type) const; 00140 DtEnvObjectSync* getObjectSync(const DtString& name,const DtString& type,DtEnvValueSP root) const; 00141 00142 00151 DtEnvValueSP copy(DtEnvValueSP original); 00152 00162 DtEnvValueSP copy(DtEnvValueSP original,DtEnvValueSP parent); 00163 00169 void remove(DtEnvValueSP value); 00170 00179 bool contains(DtEnvValueSP value); 00180 00191 int level(DtEnvValueSP value); 00192 00194 void print(std::ostream& output, const DtString& indent , 00195 bool printComments = true) const; 00196 00198 void print(std::ostream& output,DtEnvValueSP root, 00199 const DtString& indent ,bool printComments = true) const; 00200 00201 protected: 00202 00204 DtEnvValueSP myRoot; 00205 }; 00206 00208 DT_DLL_MTL std::ostream & operator<<(std::ostream &str, const DtEnvironment &env); 00209 00210 #ifdef DtUSE_UTILITIES_NAMESPACE 00211 } 00212 #endif 00213 00214 00215 #endif