SC_Lib * Abc_SclRead( char * pFileName ) { SC_Lib * p; FILE * pFile; Vec_Str_t * vOut; int nFileSize, Pos = 0; pFile = fopen( pFileName, "rb" ); if ( pFile == NULL ) { printf( "Cannot open file \"%s\" for reading.\n", pFileName ); return NULL; } // get the file size, in bytes fseek( pFile, 0, SEEK_END ); nFileSize = ftell( pFile ); rewind( pFile ); // load the contents vOut = Vec_StrAlloc( nFileSize ); vOut->nSize = vOut->nCap; assert( nFileSize == Vec_StrSize(vOut) ); nFileSize = fread( Vec_StrArray(vOut), 1, Vec_StrSize(vOut), pFile ); assert( nFileSize == Vec_StrSize(vOut) ); fclose( pFile ); // read the library p = Abc_SclLibAlloc(); Abc_SclReadLibrary( vOut, &Pos, p ); assert( Pos == Vec_StrSize(vOut) ); Vec_StrFree( vOut ); // hash gates by name Abc_SclHashCells( p ); Abc_SclLinkCells( p ); return p; }
SC_Lib * Abc_SclReadFromStr( Vec_Str_t * vOut ) { SC_Lib * p; int Pos = 0; // read the library p = Abc_SclLibAlloc(); Abc_SclReadLibrary( vOut, &Pos, p ); assert( Pos == Vec_StrSize(vOut) ); // hash gates by name Abc_SclHashCells( p ); Abc_SclLinkCells( p ); return p; }