// FROG_Element_Base.h: Contains everything related to an element to be written in a file : // type, size, data // And a vector of daughters ////////////////////////////////////////////////////////////////////// #ifndef _FROG_UTILS_H__ #define _FROG_UTILS_H__ #define _CRT_SECURE_NO_WARNINGS 1 #include #include #include #include #include #include #include #include struct ByteBuffer{ unsigned char* buffer; unsigned int capacity_; unsigned int position_; ByteBuffer(){ buffer = NULL; capacity_ = 0; position_ = 0; } ByteBuffer(int size){ buffer = new unsigned char[size]; capacity_ = size; position_ = 0; } ~ByteBuffer(){ //printf("Destructor called\n"); } void clear(){if(buffer!=NULL)delete [] buffer;} unsigned int remaining(){return capacity_-position_;} unsigned int capacity(){return capacity_;} unsigned int position(){return position_;} void position(unsigned int pos){position_ = pos;} void flip(){position_ = 0;} unsigned char get(unsigned int pos){return buffer[pos];} unsigned char get(){unsigned char data=get(position_); position_++; return data;} void put(unsigned int pos, unsigned char data){buffer[pos] = data;} void put(unsigned char data){put(position_, data); position_++;} void putByte(unsigned int pos, unsigned char data){put(pos, data);} void putByte(unsigned char data){put(data);} void putUShort(unsigned int pos, unsigned short data){memcpy(buffer+pos, (void*)&data, sizeof(data));} void putUShort(unsigned short data){putUShort(position_, data); position_+=sizeof(data);} void putInt(unsigned int pos, int data){memcpy(buffer+pos, (void*)&data, sizeof(data));} void putInt(int data){putInt(position_, data); position_+=sizeof(data);} void putUInt(unsigned int pos, unsigned int data){memcpy(buffer+pos, (void*)&data, sizeof(data));} void putUInt(unsigned int data){putUInt(position_, data); position_+=sizeof(data);} void putULong(unsigned int pos, unsigned long long data){memcpy(buffer+pos, (void*)&data, sizeof(data));} void putULong(unsigned long long data){putULong(position_, data); position_+=sizeof(data);} void putFloat(unsigned int pos, float data){memcpy(buffer+pos, (void*)&data, sizeof(data));} void putFloat(float data){putFloat(position_, data); position_+=sizeof(data);} void put(ByteBuffer& obj){ for(unsigned int i=obj.position();i