summaryrefslogtreecommitdiffstats
path: root/src/misc/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/misc/util')
-rw-r--r--src/misc/util/utilNam.c39
-rw-r--r--src/misc/util/utilNam.h2
2 files changed, 41 insertions, 0 deletions
diff --git a/src/misc/util/utilNam.c b/src/misc/util/utilNam.c
index 30a68c63..b1d2702c 100644
--- a/src/misc/util/utilNam.c
+++ b/src/misc/util/utilNam.c
@@ -144,6 +144,45 @@ void Abc_NamPrint( Abc_Nam_t * p, char * pFileName )
/**Function*************************************************************
+ Synopsis [Writes into a file and reads from a file.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Abc_NamSave( Abc_Nam_t * p, char * pFileName )
+{
+ FILE * pFile = fopen( pFileName, "wb" ); int h, i;
+ if ( pFile == NULL ) { printf( "Count node open input file %s\n", pFileName ); return; }
+ Vec_IntForEachEntryStart( &p->vInt2Handle, h, i, 1 )
+ fprintf( pFile, "%s\n", Abc_NamHandleToStr(p, h) );
+ fclose(pFile);
+}
+Abc_Nam_t * Abc_NamLoad( char * pFileName )
+{
+ Abc_Nam_t * p;
+ int fFound, NameId, nLineSize = 1 << 20;
+ char * pBuffer = ABC_ALLOC( char, nLineSize+1 );
+ FILE * pFile = fopen( pFileName, "rb" );
+ if ( pFile == NULL ) { printf( "Count node open output file %s\n", pFileName ); return NULL; }
+ p = Abc_NamStart( 1000, 20 );
+ while ( fgets( pBuffer, nLineSize, pFile ) != NULL )
+ {
+ pBuffer[strlen(pBuffer)-1] = 0;
+ NameId = Abc_NamStrFindOrAdd( p, pBuffer, &fFound );
+ assert( !fFound );
+ }
+ assert( NameId+1 == Abc_NamObjNumMax(p) );
+ fclose( pFile );
+ ABC_FREE( pBuffer );
+ return p;
+}
+
+/**Function*************************************************************
+
Synopsis [References the manager.]
Description []
diff --git a/src/misc/util/utilNam.h b/src/misc/util/utilNam.h
index 8e054fc1..cf2d27e7 100644
--- a/src/misc/util/utilNam.h
+++ b/src/misc/util/utilNam.h
@@ -53,6 +53,8 @@ typedef struct Abc_Nam_t_ Abc_Nam_t;
extern Abc_Nam_t * Abc_NamStart( int nObjs, int nAveSize );
extern void Abc_NamStop( Abc_Nam_t * p );
extern void Abc_NamPrint( Abc_Nam_t * p, char * pFileName );
+extern void Abc_NamSave( Abc_Nam_t * p, char * pFileName );
+extern Abc_Nam_t * Abc_NamLoad( char * pFileName );
extern Abc_Nam_t * Abc_NamRef( Abc_Nam_t * p );
extern void Abc_NamDeref( Abc_Nam_t * p );
extern int Abc_NamObjNumMax( Abc_Nam_t * p );