VR-Link API Documentation for HLA 1516
envValue.h
Go to the documentation of this file.
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

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)