00001
00002 #ifndef __DTI_CONSTANT_ADAPTER_HH__
00003 #define __DTI_CONSTANT_ADAPTER_HH__
00004
00014 #include <accdata.hh>
00015 #include <accvector.hh>
00016 #include <accdevexception.hh>
00017
00018
00019 #include <dti-customtypes.hh>
00020
00021
00022 using std::auto_ptr;
00023
00024 namespace DeviceAccess
00025 {
00026 namespace EqModDTI
00027 {
00028
00039 class E_API CONSTANTDataAdapter
00040 {
00041 public:
00042
00043 static auto_ptr<const CONSTANTDataAdapter> createRcvP(const DeviceAccess::AccData& data)
00044 {
00045 if (data.size()>11) {
00046 throw(AccDevException(ODA_MOREDATA,ODA_OK,ACCDEV_ERRORLOCATION));
00047 }
00048 DeviceAccess::AccData& mutual_data = const_cast<DeviceAccess::AccData&>(data);
00049 return auto_ptr<const CONSTANTDataAdapter>(new CONSTANTDataAdapter(mutual_data,0));
00050 }
00051
00052 static auto_ptr<CONSTANTDataAdapter> createSndP(DeviceAccess::AccData& data)
00053 {
00054 data.clear(); data.resize(11);
00055
00056 auto_ptr<CONSTANTDataAdapter> p(new CONSTANTDataAdapter(data,0));
00057 p->init();
00058 return p;
00059 }
00060
00061
00063 CONSTANTDataAdapter(DeviceAccess::AccData& data, size_t offset=0) : TSndConst(data,offset+0), _ptr(&data), _offset(offset)
00064 {
00065 }
00066
00068 void init() {
00069 TSndConst.init();
00070
00071 }
00072
00073
00075 ConstantStructType TSndConst;
00076
00077
00078 private:
00079 DeviceAccess::AccData* _ptr;
00080 size_t _offset;
00081 };
00082
00084 typedef CONSTANTDataAdapter ReadCONSTANTDataAdapter;
00085
00087 typedef auto_ptr<ReadCONSTANTDataAdapter> ReadCONSTANTDataP;
00088
00092 }
00093 }
00094
00095 #endif