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_REGISTER_H
00032 #define GENAPI_REGISTER_H
00033
00034 #include "NodeT.h"
00035 #include "RegisterT.h"
00036 #include "BaseT.h"
00037 #include "ValueT.h"
00038 #include "Port.h"
00039 #include "PrivateTypes.h"
00040 #include "Node.h"
00041 #include "../IInteger.h"
00042 #include "../IEnumeration.h"
00043
00044 namespace GENAPI_NAMESPACE
00045 {
00046
00048 typedef std::list<IValue *> ValueList_t;
00049
00050
00051
00052
00058 class CRegisterImpl
00059 : public IRegister
00060 , public CNodeImpl
00061 {
00062 public:
00064 CRegisterImpl();
00065
00066 protected:
00067
00069
00070
00072 virtual GENICAM_NAMESPACE::gcstring InternalToString(bool Verify = false, bool IgnoreCache = false);
00073
00075 virtual void InternalFromString(const GENICAM_NAMESPACE::gcstring& valueString, bool Verify = true);
00076
00077 public:
00078
00080 virtual EInterfaceType InternalGetPrincipalInterfaceType() const
00081 {
00082 return intfIRegister;
00083 }
00084
00085
00086
00087
00088
00090 virtual void SetInvalid(INodePrivate::ESetInvalidMode simMode);
00091
00093 virtual void FinalConstruct();
00094
00095
00096
00097
00098
00099 protected:
00101 virtual EAccessMode InternalGetAccessMode() const;
00102
00103
00104
00105
00106
00108 virtual void InternalSet(const uint8_t *pBuffer, int64_t Length, bool Verify = true);
00109
00111 virtual void InternalGet(uint8_t *ppBuffer, int64_t pLength, bool Verify = false, bool IgnoreCache = false) ;
00112
00114 virtual int64_t InternalGetLength();
00115
00117 virtual int64_t InternalGetAddress(bool Verify, bool IgnoreCache);
00118
00120 virtual ECachingMode InternalGetCachingMode() const;
00121
00122 public:
00123
00124
00125
00126
00127
00128 virtual void SetProperty(CProperty &Property);
00129 virtual bool GetProperty(CNodeDataMap *pNodeDataMap, CPropertyID::EProperty_ID_t PropertyID, CNodeData::PropertyVector_t &PropertyList) const;
00130
00131
00132 protected:
00134 void UpdateAddress(bool Verify, bool IgnoreCache );
00135
00136
00137
00138
00139
00141 CPort *m_pPort;
00142
00144 int64_t m_Address;
00145
00147 int64_t m_AddressValid;
00148
00150 CIntegerPolyRef m_Length;
00151
00153 std::list<CIntegerPolyRef> m_Addresses;
00154
00156 std::list<CIntegerOffsetPolyRef> m_Indexes;
00157
00159 EAccessMode m_AccessMode;
00160 };
00161
00162
00163
00164 class CRegister
00165 : public NodeT< RegisterT < ValueT < BaseT < CRegisterImpl > > > >
00166 {};
00167
00168
00169 }
00170
00171 #endif // ifndef GENAPI_REGISTER_H