Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00031 #ifndef GENAPI_ENUMERATION_H
00032 #define GENAPI_ENUMERATION_H
00033
00034 #include "Base/GCStringVector.h"
00035 #include "Node.h"
00036 #include "../Pointer.h"
00037 #include "BaseT.h"
00038 #include "ValueT.h"
00039 #include "EnumerationT.h"
00040 #include "PolyReference.h"
00041
00042 namespace GENAPI_NAMESPACE
00043 {
00044
00045
00046
00047
00048
00049 class CEnumerationImpl : public CNodeImpl, public IEnumeration
00050 {
00051 public:
00053 CEnumerationImpl();
00054
00055
00057
00059 virtual bool Poll( int64_t ElapsedTime );
00060
00061 protected:
00063 virtual void InternalGetSymbolics(StringList_t& Symbolics);
00064
00066 virtual void InternalGetEntries(NodeList_t & Entries);
00067
00068 virtual EAccessMode InternalGetAccessMode() const;
00069
00071 virtual EInterfaceType InternalGetPrincipalInterfaceType() const;
00072
00074 virtual GENICAM_NAMESPACE::gcstring InternalToString(bool Verify = false, bool IgnoreCache = false);
00075
00077 virtual void InternalFromString(const GENICAM_NAMESPACE::gcstring& ValueStr, bool Verify = true);
00078
00080 virtual void InternalSetIntValue(int64_t Value, bool Verify = true);
00081
00083 virtual int64_t InternalGetIntValue(bool Verify = false, bool IgnoreCache = false );
00084
00086 virtual IEnumEntry *InternalGetEntryByName(const GENICAM_NAMESPACE::gcstring& Symbolic);
00087
00089 virtual IEnumEntry *InternalGetEntry(const int64_t IntValue);
00090
00092 virtual bool InternalIsValueCacheValid() const;
00093
00095 virtual EYesNo InternalIsAccessModeCacheable() const;
00096
00097 public:
00098
00099 virtual void FinalConstruct();
00100
00101 virtual void SetProperty( CProperty &Property );
00102 virtual bool GetProperty( CNodeDataMap *pNodeDataMap, CPropertyID::EProperty_ID_t PropertyID, CNodeData::PropertyVector_t &PropertyList ) const;
00103
00104 protected:
00105
00106
00107
00108
00110 typedef enum _EStatus
00111 {
00112 statusUninitialized,
00113 statusIdle,
00114 statusBusy
00115 } EStatus;
00116
00118 EStatus m_Status;
00119
00121 typedef std::map<GENICAM_NAMESPACE::gcstring, IEnumEntry*> EnumEntrySymbolicMap_t;
00122
00124 EnumEntrySymbolicMap_t m_EnumEntrySymbolicMap;
00125
00127 typedef std::map<int64_t, IEnumEntry*> EnumEntryIntValueMap_t;
00128
00130 EnumEntryIntValueMap_t m_EnumEntryIntValueMap;
00131
00133 NodeList_t m_EnumEntryList;
00134
00136 CIntegerPolyRef m_Value;
00137
00139 int64_t m_SelfClearingValue;
00140
00141 private:
00142 void InternalSetIntValue( IEnumEntry* pEnumEntry, int64_t Value, bool Verify );
00143 };
00144
00145 class CEnumeration : public BaseT< ValueT< EnumerationT < NodeT < CEnumerationImpl> > > >
00146 {
00147 };
00148
00149 }
00150
00151 #endif // ifndef GENAPI_ENUMERATION_H