![]() |
VR-Link API Documentation for HLA 1.3
|
00001 /****************************************************************************** 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00006 00010 00011 #ifndef envValue_H__ 00012 #define envValue_H__ 00013 00014 #if DT_ENV_THREAD_SAFE 00015 #include <vlutil/vlThreadSafe.h> 00016 #endif 00017 00018 #include <vlutil/vlSmartPointers.h> 00019 #include <vlutil/vlString.h> 00020 #include <list> 00021 00022 #ifdef DtUSE_UTILITIES_NAMESPACE 00023 namespace DtUSE_UTILITIES_NAMESPACE 00024 { 00025 #endif 00026 00027 00028 class DtEnvironment; 00029 class DtEnvValue; 00030 00031 typedef DtBoost::shared_ptr<DtEnvValue> DtEnvValueSP; 00032 typedef DtBoost::weak_ptr<DtEnvValue> DtEnvValueWP; 00033 typedef std::list<DtEnvValueSP> DtEnvValueList; 00034 00035 #if DT_ENV_THREAD_SAFE 00036 typedef DtThreadSafe<DtString> DtEnvValueType; 00037 typedef DtThreadSafe<DtEnvValueList::iterator> DtEnvValueIterator; 00038 #else 00039 typedef DtString DtEnvValueType; 00040 typedef DtEnvValueList::iterator DtEnvValueIterator; 00041 #endif 00042 00045 class DT_DLL_MTL DtEnvValue 00046 { 00047 public: 00048 friend class DT_DLL_MTL DtEnvironment; 00049 friend class DtEnvList; 00050 00051 #define RESERVED_VALUE(N) (1 << N) 00052 enum DtEnvValueFormat 00053 { 00054 Value = 0, 00055 Listed = 1, 00056 Named = RESERVED_VALUE(1), 00057 Typed = RESERVED_VALUE(2), 00058 Native = RESERVED_VALUE(3), 00059 00060 NamedListed = Named | Listed, 00061 NamedTypedListed = Named | Typed | Listed 00062 }; 00063 00064 explicit DtEnvValue(const DtString& value); 00065 virtual ~DtEnvValue(); 00066 00068 virtual DtString value() const; 00069 00071 virtual void setValue(const DtString& value); 00072 00074 virtual DtEnvValueSP parent() const; 00075 00077 virtual void setParent(DtEnvValueSP parent); 00078 00080 DtEnvValueFormat format() const; 00081 00082 protected: 00083 virtual void valueChanged(); 00084 virtual void childChanged(DtEnvValue*); 00085 00086 void addFormat(DtEnvValueFormat format); 00087 00088 void setLocation(const DtEnvValueList::iterator& location); 00089 DtEnvValueList::iterator nextIter() const; 00090 00091 DtEnvValue(const DtString& value, DtEnvValueFormat format); 00092 virtual DtEnvValue* clone() const; 00093 00094 DtEnvValueFormat myFormat; 00095 DtEnvValueType myValue; 00096 DtEnvValueWP myParent; 00097 DtEnvValueIterator myIterator; 00098 }; 00099 00100 #ifdef DtUSE_UTILITIES_NAMESPACE 00101 } 00102 #endif 00103 00104 00105 #endif