55 std::vector<char> nodeBuffer;
56 const char *nodePointer;
67 void init(
const char *b,
int length){
allocate(length); memcpy(
const_cast<char *
>(nodePointer),b,length);}
73 node(std::tuple<int,int,int,int> params){
74 create(std::get<0>(params),std::get<1>(params), std::get<2>(params), std::get<3>(params));
82 void assign(std::tuple<int,int,int,int> params );
85 if(((
int) nodeBuffer.size()) <
size){
86 nodeBuffer.resize(
size+8); nodePointer = &nodeBuffer[0];
93 int length = *
reinterpret_cast<const uint32_t *
>(nodePointer+4);
99 return (
int) nodeBuffer.size();
104 int length = *
reinterpret_cast<const uint32_t *
>(nodePointer+4);
110 char *dest =
const_cast<char *
>(nodePointer);
112 }
else { printf(
"node::setFormatLength: error >>> the format length can not exceed 128, you tried to set it to %d\n",length);}
116 int word = *
reinterpret_cast<const uint32_t *
>(nodePointer+4);
139 uint32_t word = *
reinterpret_cast<const uint32_t *
>(nodePointer+4);
141 char *dest =
const_cast<char *
>(nodePointer);
142 *
reinterpret_cast<uint32_t *
>(dest+4) = nodeSize;
143 }
else { printf(
"node::setNodeLength:: error: the total size of the node exceeds 16777215\n");}
148 int group(){
return (
int) (*
reinterpret_cast<const uint16_t *
>(nodePointer));}
149 int item(){
return (
int) (*
reinterpret_cast<const uint8_t *
>(nodePointer+2));}
150 int type(){
return (
int) (*
reinterpret_cast<const uint8_t *
>(nodePointer+3));}
164 return *
reinterpret_cast<const int32_t*
>(nodePointer + index +
dataOffset());
168 return *
reinterpret_cast<const int16_t*
>(nodePointer + index +
dataOffset());
171 return *
reinterpret_cast<const int8_t*
>(nodePointer + index +
dataOffset());
174 return *
reinterpret_cast<const float*
>(nodePointer + index +
dataOffset());
177 return *
reinterpret_cast<const double*
>(nodePointer + index +
dataOffset());
180 return *
reinterpret_cast<const int64_t*
>(nodePointer + index +
dataOffset());
186 char *a =
const_cast<char*
>(nodePointer);
187 *
reinterpret_cast<int32_t*
>(a + index +
dataOffset()) = value;
191 char *a =
const_cast<char*
>(nodePointer);
192 *
reinterpret_cast<int16_t*
>(a + index +
dataOffset()) = value;
196 char *a =
const_cast<char*
>(nodePointer);
197 *
reinterpret_cast<int8_t*
>(a + index +
dataOffset()) = value;
201 char *a =
const_cast<char*
>(nodePointer);
202 *
reinterpret_cast<float*
>(a + index +
dataOffset()) = value;
206 char *a =
const_cast<char*
>(nodePointer);
207 *
reinterpret_cast<double*
>(a + index +
dataOffset()) = value;
211 char *a =
const_cast<char*
>(nodePointer);
212 *
reinterpret_cast<int64_t*
>(a + index +
dataOffset()) = value;
void setNodeLength(int size)
Definition node.h:137
int formatLength() const noexcept
Definition node.h:103
virtual void reset()
Definition node.h:90
int group()
Definition node.h:148
int item()
Definition node.h:149
int size() const noexcept
Definition node.h:92
virtual void show()
Definition node.cpp:83
float getFloatAt(int index) const noexcept
Definition node.h:173
void putFloatAt(int index, float value)
Definition node.h:200
void assign(std::tuple< int, int, int, int > params)
Definition node.cpp:61
int capacity() const noexcept
Definition node.h:98
int8_t getByteAt(int index) const noexcept
Definition node.h:170
int dataOffset() const noexcept
Definition node.h:223
node()
Definition node.h:72
int dataLength() const noexcept
Definition node.h:126
void putShortAt(int index, int16_t value)
Definition node.h:190
void initEmpty()
Definition node.cpp:75
const char * pointer()
Definition node.h:155
void create(int group, int item, int type, int size)
Definition node.cpp:47
node(int size)
Definition node.h:76
void putByteAt(int index, int8_t value)
Definition node.h:195
long getLongAt(int index) const noexcept
Definition node.h:179
int type()
Definition node.h:150
int16_t getShortAt(int index) const noexcept
Definition node.h:167
void setSize(int size)
Definition node.cpp:56
double getDoubleAt(int index) const noexcept
Definition node.h:176
void init(const char *b, int length)
Definition node.h:67
void putIntAt(int index, int value)
Definition node.h:185
node(std::tuple< int, int, int, int > params)
Definition node.h:73
void putDoubleAt(int index, double value)
Definition node.h:205
void putLongAt(int index, int64_t value)
Definition node.h:210
int getIntAt(int index) const noexcept
Definition node.h:163
virtual void notify()
Definition node.h:217
void setDataLength(int length)
Definition node.h:115
void setFormatLength(int length)
Definition node.h:108
int nodeLength()
Definition node.h:132
bool allocate(int size)
Definition node.h:84
HIPO namespace is used for the classes that read/write files and records.
Definition bank.cpp:45
constexpr uint32_t STRUCT_FORMAT_BYTE
Definition constants.h:130
constexpr int STRUCT_FORMAT_SHIFT
Definition constants.h:129
constexpr uint32_t STRUCT_FORMAT_MASK
Definition constants.h:128
constexpr uint32_t STRUCT_SIZE_MASK
Definition constants.h:127