26 #pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
35#define EXTRA_BUFFER_SIZE 4*1048576
36#define EXTRA_OFFSET_SIZE 4096
38#define EXTRA_MINIMUM(a,b) (((a) < (b))? (a) : (b))
91 char * pCharsComment,
char * pCharsStop,
char * pCharsClean )
99 pFile = fopen( pFileName,
"rb" );
102 printf(
"Extra_FileReaderAlloc(): Cannot open input file \"%s\".\n", pFileName );
108 p->pFileName = pFileName;
112 for ( pChar = pCharsComment; *pChar; pChar++ )
114 for ( pChar = pCharsStop; *pChar; pChar++ )
116 for ( pChar = pCharsClean; *pChar; pChar++ )
120 p->nFileSize = ftell( pFile );
125 p->pBufferCur =
p->pBuffer;
129 RetValue = fread(
p->pBuffer, nCharsToRead, 1,
p->pFile );
130 p->nFileRead = nCharsToRead;
132 p->pBufferEnd =
p->pBuffer + nCharsToRead;
135 p->vTokens = Vec_PtrAlloc( 100 );
136 p->vLines = Vec_IntAlloc( 100 );
157 Vec_PtrFree(
p->vTokens );
158 Vec_IntFree(
p->vLines );
207 return p->nFileRead - (
p->pBufferEnd -
p->pBufferCur);
223 assert( iToken >= 0 && iToken < p->vTokens->nSize );
224 return p->vLines->pArray[iToken];
242 while ( (vTokens = (
Vec_Ptr_t *)Extra_FileReaderGetTokens_int(
p )) )
243 if ( vTokens->nSize > 0 )
262 int fTokenStarted, MapValue;
266 p->vTokens->nSize = 0;
267 p->vLines->nSize = 0;
270 if (
p->pBufferCur >
p->pBufferStop )
271 Extra_FileReaderReload(
p );
276 for ( pChar =
p->pBufferCur; pChar < p->pBufferEnd; pChar++ )
279 if ( *pChar ==
'\n' )
282 MapValue =
p->pCharMap[(int)*pChar];
290 if ( *pChar !=
'/' || *(pChar+1) ==
'/' )
296 while ( *pChar !=
'\n' )
299 if ( pChar ==
p->pBufferEnd )
302 printf(
"Extra_FileReader failed to parse the file \"%s\".\n",
p->pFileName );
311 if ( !fTokenStarted )
313 Vec_PtrPush(
p->vTokens, pChar );
314 Vec_IntPush(
p->vLines,
p->nLineCounter );
323 p->pBufferCur = pChar + 1;
336 if (
p->pBufferStop ==
p->pBufferEnd )
342 printf(
"Extra_FileReader failed to parse the file \"%s\".\n",
p->pFileName );
367 int nCharsUsed, nCharsToRead;
370 assert(
p->pBufferCur >
p->pBufferStop );
371 assert(
p->pBufferCur <
p->pBufferEnd );
373 nCharsUsed =
p->pBufferEnd -
p->pBufferCur;
375 memmove(
p->pBuffer,
p->pBufferCur, (
size_t)nCharsUsed );
376 p->pBufferCur =
p->pBuffer;
378 nCharsToRead =
EXTRA_MINIMUM(
p->nBufferSize - nCharsUsed,
p->nFileSize -
p->nFileRead );
380 RetValue = fread(
p->pBuffer + nCharsUsed, nCharsToRead, 1,
p->pFile );
381 p->nFileRead += nCharsToRead;
383 p->pBufferEnd =
p->pBuffer + nCharsUsed + nCharsToRead;
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.