1 #ifndef RAWDAQDATA_BASE_H 2 #define RAWDAQDATA_BASE_H 3 #include "DAQDataFormats/FunctionBind.h" 11 #define DAQDATAFORMATS_VERSIONING_IS_IMPLEMENTED 16 #define RAWBUFF32 ((uint32_t*)_Buffer) 17 #define RAWBUFF16 ((uint16_t*)_Buffer) 21 #define GENERATE_FUNCTION_IS_NOT_ALLOWED functionIsNotAllowed(__FUNCTION__) 29 #warning "Debugging is turned on. Please uncomment out DEBUGGING constant!" 30 #define EXECUTE_ON_DEBUG(x) x 31 #define PRINT_ON_DEBUG(x) do { std::cout<<x<<"\n"; } while (0) 34 #define EXECUTE_ON_DEBUG(x) static_assert(true, "Null statement") 35 #define PRINT_ON_DEBUG(x) static_assert(true, "Null statement") 40 #define COUT(xx) std::cout<<__PRETTY_FUNCTION__<<xx; std::cout<<"\n"; 48 class DataBlockReader;
80 namespace rawdaqdataformat {
89 RawDAQData (version_t,
bool use_setBufferSourceUnknownVersion);
108 virtual void copy (
const void*
buffer);
112 void* readData(
const void* buffer);
114 void*
readData(
const void* buffer,
const uint32_t size_of_data) {
return readDataGeneral(buffer, size_of_data);}
116 virtual readDataStatus readData(
const int fd);
120 void* writeData(
const void* buffer)
const;
121 ssize_t writeData(
const int fd )
const;
127 uint32_t calculateCheckSum(
const uint32_t skip_last_words)
const;
134 bool setBufferSource (
const void*);
135 bool resetBufferSource();
136 virtual bool clear();
151 uint32_t sizeofdata()
const;
154 virtual bool addCheckSum();
160 void* readDataGeneral(
const void* buffer);
164 virtual version_t figureOutTheVersion(
const void* buffer)
const = 0;
167 bool checkBufferInternalness();
171 virtual bool setFunctionPointers() = 0;
175 void* setBufferSourceGeneral(
RawDAQData&,
const void*);
176 bool setBufferSourceUnknownVersion(
const void*);
179 bool reserveInternalBuffer(
const uint32_t size_of_data);
182 bool addToInternalBuffer(
const uint32_t size_of_data_to_add);
186 bool resizeInternalBuffer(
const uint32_t size_of_data);
190 uint32_t
boolToUint32_t (
const bool number )
const {
return ((number) ? 1 : 0); }
191 bool uint32_tToBool (
const uint32_t number )
const {
return ((number) ?
true :
false); }
195 void printGeneral(std::ostream& os=
std::cout)
const;
198 void printBuffer (std::ostream& os =
std::cout 199 ,
const bool print_offset =
true 200 ,
const bool print_ascii =
true 201 ,
const bool print_buffer_address =
false 202 ,
const bool print_internal_buffer =
false 203 ,
const bool print_size_of_data =
false 205 ,
const uint32_t
cols = 4
208 void printWord (
const uint32_t iword,
const bool is_bynary_printing, std::ostream& os=
std::cout)
const;
209 void printWordBinary(
const uint32_t word, std::ostream& os=
std::cout)
const;
210 void printWordHex (
const uint32_t word, std::ostream& os=
std::cout)
const;
211 void printBinary (
const void* buffer0,
const uint32_t
size, std::ostream& os=
std::cout)
const;
212 void printHex (
const void* buffer0,
const uint32_t size, std::ostream& os=
std::cout)
const;
216 void* readDataGeneral(
const void* buffer,
const uint32_t size_of_data_to_read);
217 void* readDataGeneral(
const void* buffer,
const uint32_t size_of_data_to_read,
const uint32_t buffer_start_position);
226 void defaultConstructorFixedSize();
227 void defaultConstructorFixedSize(
init_t);
232 void defaultConstructorFloatingSize();
233 void defaultConstructorFloatingSize(
init_t);
237 void* readDataUnknownVersion(
const void* buffer);
245 uint64_t getUint64_t(uint32_t low_word , uint32_t hi_word)
const;
246 bool getLoAndHi (uint64_t input_data, uint32_t& output_low_word, uint32_t& output_hi_word)
const;
254 bool setUint64_t(uint64_t
value,
260 std::string generateExceptionForWrongVersion(version_t maximum_version)
const;
263 void lastOperationsInDeepCopy(
const RawDAQData& copy_in);
303 friend class novadaq::datalogger::DataBlockReader;
#define EXECUTE_ON_DEBUG(x)
Debugging macros.
vector< vector< double > > clear
#define Sizeofdata_t(FUNC)
#define SetBufferSource_t(FUNC)
::xsd::cxx::tree::buffer< char > buffer
const XML_Char int const XML_Char * value
#define resetBufferSource_t
#define setBufferSource_t
#define DELEGATE(CLASS, FUNC, OUTPUT,...)
Delegate (or function pointer)