61 if(&other ==
this) {
return *
this;}
90 uint32_t objSizeUint32,
94 std::string_view author,
95 std::string_view comment,
99 uint32_t dataSizeByte = (
m_hdrSize32+objSizeUint32*nObjs) *
sizeof(uint32_t);
102 uint32_t commentSizeChar(0);
103 if(author.size() || comment.size() || timeStamp){
104 commentSizeChar += author.size()+comment.size()+
sizeof(uint64_t) + 2;
106 commentSizeChar += (commentSizeChar %
sizeof(uint32_t)) ?
107 (
sizeof(uint32_t)-(commentSizeChar %
sizeof(uint32_t))) : 0;
111 uint32_t blobSizeInBytes = dataSizeByte+commentSizeChar;
113 uint32_t* blobStart32 =
static_cast<uint32_t*
>(
m_blob_nc->startingAddress());
114 uint16_t* blobStart16 =
static_cast<uint16_t*
>(
m_blob_nc->startingAddress());
121 blobStart16[0] = objType;
122 blobStart16[1] = objVersion;
123 blobStart32[1] = objSizeUint32;
124 blobStart32[2] = nObjs;
125 blobStart16[6] = nChans;
126 blobStart16[7] = nGains;
127 blobStart32[4] = commentSizeChar/
sizeof(uint32_t);
131 if(!timeStamp) timeStamp = ::time(0);
132 uint64_t* pTimeStamp =
reinterpret_cast<uint64_t*
>(blobStart32+dataSizeByte/
sizeof(uint32_t));
133 pTimeStamp[0] = timeStamp;
134 char* pChar =
reinterpret_cast<char*
>(++pTimeStamp);
135 auto iStr = author.begin();
136 for(; iStr!=author.end(); ++iStr){ *pChar = *iStr; ++pChar; }
138 for(iStr=comment.begin(); iStr!=comment.end(); ++iStr){ *(++pChar) = *iStr; }
142 return (blobSizeInBytes/
sizeof(uint32_t));
154 sizeof(uint64_t)/
sizeof(uint32_t));
155 return std::string(iBeg);
168 sizeof(uint64_t)/
sizeof(uint32_t));
170 iBeg = std::find(iBeg,iEnd,0);
171 return std::string(++iBeg);
182 char* iBeg = ::ctime_r(&timeStamp, buf);
184 while(*iEnd!=
'\n'){++iEnd;}
185 return std::string(iBeg,iEnd-iBeg);
204 stm <<
"ObjType : " <<
getObjType() << std::endl;
207 stm <<
"NObjs : " <<
getNObjs() << std::endl;
208 stm <<
"NChannels : " <<
getNChans() << std::endl;
209 stm <<
"NGains : " <<
getNGains() << std::endl;
211 stm <<
"=== No comment available ===" << std::endl;
214 stm <<
"Author : " <<
getAuthor() << std::endl;
216 stm <<
"Comment: : " <<
getComment() << std::endl;
size_t size() const
Number of registered mappings.
This class provides the core BLOB infrastructure.
uint32_t getCommentSizeUint32() const
Returns the space occupied by the comment fields in units of uint32_t.
uint16_t getNChans() const
Returns the number of channels stored in the BLOB.
TileCalibDrawerBase & operator=(const TileCalibDrawerBase &other)
Assignment operator.
virtual void clone(const TileCalibDrawerBase &other)
Initialzes Blob with content of other Blob.
uint64_t m_blobSize32
Cache blob size in units of uint32_t.
std::string getFullComment() const
Returns a formated string build from all comment fields.
std::string getComment() const
Returns the actual comment.
uint16_t getObjType() const
Returns the BLOB object type.
const uint32_t * m_blobStart32
Cache blob starting address as uint_32t*.
uint16_t getNGains() const
Returns the number of gains stored for each channel.
uint64_t getTimeStamp() const
Returns the unix timestamp of the comment (seconds since 1.1.1970).
std::string getDate() const
Returns the date of the comment as string (derived from timestamp).
const coral::Blob * m_blob
Const reference to the BLOB (always there).
void dumpHeader(std::ostream &stm) const
Prints the BLOB header summary information.
virtual ~TileCalibDrawerBase()
Dtor.
TileCalibDrawerBase(const TileCalibDrawerBase &other)
Copy Ctor.
uint32_t getNObjs() const
Returns the number of data objects stored int the BLOB.
const uint16_t * m_blobStart16
Cache blob starting address as uint_16t*.
std::string getAuthor() const
Returns the comment author.
static const unsigned int m_hdrSize32
The header size in units of uint32_t.
bool m_isBlobOwner
Is this TileCalibDrawer owner of the BLOB.
virtual void dump() const
Prints the BLOB header summary information to std::cout.
uint16_t getObjVersion() const
Returns the BLOB object version.
uint32_t getObjSizeByte() const
Returns the size of a data object in units of bytes.
uint32_t createBlob(uint16_t objType, uint16_t objVersion, uint32_t objSizeUint32, uint32_t nObjs, uint16_t nChans, uint16_t nGains, std::string_view author="", std::string_view comment="", uint64_t timeStamp=0)
(re-)creation of the referenced BLOB object.
coral::Blob * m_blob_nc
Non-const reference to the BLOB.
uint32_t getObjSizeUint32() const
Returns the size of a data object in units of uint32_t.
uint32_t getCommentSizeChar() const
Returns the space occupied by the comment fields in units of chars.
static std::string getClassName(TileCalibType::TYPE type)
Returns the class name.