40 uint16_t m_majorVersion;
41 uint16_t m_minorVersion;
45 uint64_t m_nbVertices;
58 bool m_trie_direction_fwd;
62FsaAccessHeaderPrivate::FsaAccessHeaderPrivate(
bool trie_direction_fwd)
72 m_trie_direction_fwd( trie_direction_fwd )
78 std::string mess =
"FsaAccessBuilder::FsaAccessHeader: sizeof(LimaChar) must be 2!!!" ;
83 throw( FsaNotSaved( mess ) );
87FsaAccessHeaderPrivate::~FsaAccessHeaderPrivate()
123 LDEBUG <<
"FsaAccessHeader::read()";
128 char *dstptr = headBuf;
130 char magicNumber[13];
131 strncpy(magicNumber, dstptr, 12 );
133 magicNumber[
sizeof(magicNumber)-1] =
'\0';
135 std::string mess =
"FsaAccessHeader::read: bad magic number '"
136 + std::string(magicNumber) +
"'" ;
144 strncpy(numBuf, dstptr, 5 );
146 numBuf[
sizeof(numBuf)-1] =
'\0';
147 sscanf(numBuf,
"%hu.%hu", &
m_d->m_majorVersion, &
m_d->m_minorVersion);
149 LDEBUG <<
"FsaAccessHeader::read: m_majorVersion = "
150 <<
m_d->m_majorVersion <<
" m_minorVersion = " <<
m_d->m_minorVersion
155 if(
m_d->m_majorVersion > majorVersion) {
161 std::string mess =
"FsaAccessHeader::read: bad version = "
162 + std::string(numBuf)
163 +
". Get a release of your library or convert your file !!" ;
170 uint8_t cVal= *dstptr++;
171 m_d->m_charType = cVal;
172 if( (
m_d->m_charType != 1)
173 && (
m_d->m_charType != 2)
174 && (
m_d->m_charType != 4) ) {
175 std::string mess =
"FsaAccessHeader::read: byte_per_char must be 1, 2 or 4!!!" ;
183 LDEBUG <<
"FsaAccessHeader::read: m_charType = "
188 m_d->m_packing = cVal;
192 std::string mess =
"FsaAccessHeader::read: m_packing type is not recognized!!!" ;
199 LDEBUG <<
"FsaAccessHeader::read: m_packing = "
200 << (
m_d->m_packing ==
BUILDER ?
"BUILDER" : (
m_d->m_packing ==
BUILT ?
"BUILT" :
"SPARE" ));
205 LDEBUG <<
"FsaAccessHeader::read: m_charOrder = "
208 m_d->m_charOrder = cVal;
211 std::string mess =
"FsaAccessHeader::read: character order is not recognized!!!" ;
219 LDEBUG <<
"FsaAccessHeader::read: m_charOrder = "
220 << (
m_d->m_charOrder ==
FORWARD ?
"FORWARD" :
"REVERSE" );
222 LDEBUG <<
"FsaAccessHeader::read: m_charOrder = "
228 strncpy(numBuf2, dstptr, 20 );
230 numBuf2[
sizeof(numBuf2)-1] =
'\0';
231 sscanf(numBuf2,
"%lu %lu ", &(
m_d->m_nbVertices), &(
m_d->m_nbEdges) );
233 LDEBUG <<
"FsaAccessHeader::read: nbVert = " <<
m_d->m_nbVertices
234 <<
"m_nbEdges = " <<
m_d->m_nbEdges;
243 LDEBUG <<
"FsaAccessHeader::write(";
247 char *dstptr = headBuf;
252 sprintf(dstptr,
"%02d.%02d",
m_d->m_majorVersion,
m_d->m_minorVersion);
255 *dstptr++ =
m_d->m_charType;
256 *dstptr++ =
m_d->m_packing;
257 *dstptr++ =
m_d->m_charOrder;
259 sprintf(dstptr,
"%09lu ",
m_d->m_nbVertices);
262 sprintf(dstptr,
"%09lu ",
m_d->m_nbEdges);
267 LDEBUG <<
"FsaAccessHeader::write: os.write headbuf ";
Use this exception to signal the used of a wrongly initialized LIMA dictionary.
virtual void readData(char *ptr, size_t n)=0
virtual void writeData(const char *ptr, size_t n)=0