summaryrefslogtreecommitdiffstats
path: root/src/misc/parse/parseStack.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-08-24 21:09:50 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2015-08-24 21:09:50 -0700
commit24f2a120f2203acc8038ccce4e8dd141564a7a04 (patch)
treed8c0d0efa6c2dc1ef656624f807ba3f4f6db8b9d /src/misc/parse/parseStack.c
parenteb699bbaf80e4a6a0e85f87d7575ca1ffebef37f (diff)
downloadabc-24f2a120f2203acc8038ccce4e8dd141564a7a04.tar.gz
abc-24f2a120f2203acc8038ccce4e8dd141564a7a04.tar.bz2
abc-24f2a120f2203acc8038ccce4e8dd141564a7a04.zip
Changes to be able to compile ABC without CUDD.
Diffstat (limited to 'src/misc/parse/parseStack.c')
-rw-r--r--src/misc/parse/parseStack.c248
1 files changed, 248 insertions, 0 deletions
diff --git a/src/misc/parse/parseStack.c b/src/misc/parse/parseStack.c
new file mode 100644
index 00000000..2e6d266d
--- /dev/null
+++ b/src/misc/parse/parseStack.c
@@ -0,0 +1,248 @@
+/**CFile****************************************************************
+
+ FileName [parseStack.c]
+
+ PackageName [MVSIS 1.3: Multi-valued logic synthesis system.]
+
+ Synopsis [Stacks used by the formula parser.]
+
+ Author [MVSIS Group]
+
+ Affiliation [UC Berkeley]
+
+ Date [Ver. 1.0. Started - August 18, 2003.]
+
+ Revision [$Id: parseStack.c,v 1.0 2003/02/01 00:00:00 alanmi Exp $]
+
+***********************************************************************/
+
+#include "parseInt.h"
+
+ABC_NAMESPACE_IMPL_START
+
+
+////////////////////////////////////////////////////////////////////////
+/// DECLARATIONS ///
+////////////////////////////////////////////////////////////////////////
+
+struct ParseStackFnStruct
+{
+ void ** pData; // the array of elements
+ int Top; // the index
+ int Size; // the stack size
+};
+
+struct ParseStackOpStruct
+{
+ int * pData; // the array of elements
+ int Top; // the index
+ int Size; // the stack size
+};
+
+////////////////////////////////////////////////////////////////////////
+/// FUNCTION DEFINITIONS ///
+////////////////////////////////////////////////////////////////////////
+
+/**Function*************************************************************
+
+ Synopsis [Starts the stack.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+Parse_StackFn_t * Parse_StackFnStart( int nDepth )
+{
+ Parse_StackFn_t * p;
+ p = ABC_ALLOC( Parse_StackFn_t, 1 );
+ memset( p, 0, sizeof(Parse_StackFn_t) );
+ p->pData = ABC_ALLOC( void *, nDepth );
+ p->Size = nDepth;
+ return p;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Checks whether the stack is empty.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+int Parse_StackFnIsEmpty( Parse_StackFn_t * p )
+{
+ return (int)(p->Top == 0);
+}
+
+/**Function*************************************************************
+
+ Synopsis [Pushes an entry into the stack.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Parse_StackFnPush( Parse_StackFn_t * p, void * bFunc )
+{
+ if ( p->Top >= p->Size )
+ {
+ printf( "Parse_StackFnPush(): Stack size is too small!\n" );
+ return;
+ }
+ p->pData[ p->Top++ ] = bFunc;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Pops an entry out of the stack.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void * Parse_StackFnPop( Parse_StackFn_t * p )
+{
+ if ( p->Top == 0 )
+ {
+ printf( "Parse_StackFnPush(): Trying to extract data from the empty stack!\n" );
+ return NULL;
+ }
+ return p->pData[ --p->Top ];
+}
+
+/**Function*************************************************************
+
+ Synopsis [Deletes the stack.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Parse_StackFnFree( Parse_StackFn_t * p )
+{
+ ABC_FREE( p->pData );
+ ABC_FREE( p );
+}
+
+
+
+
+/**Function*************************************************************
+
+ Synopsis [Starts the stack.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+Parse_StackOp_t * Parse_StackOpStart( int nDepth )
+{
+ Parse_StackOp_t * p;
+ p = ABC_ALLOC( Parse_StackOp_t, 1 );
+ memset( p, 0, sizeof(Parse_StackOp_t) );
+ p->pData = ABC_ALLOC( int, nDepth );
+ p->Size = nDepth;
+ return p;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Checks whether the stack is empty.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+int Parse_StackOpIsEmpty( Parse_StackOp_t * p )
+{
+ return (int)(p->Top == 0);
+}
+
+/**Function*************************************************************
+
+ Synopsis [Pushes an entry into the stack.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Parse_StackOpPush( Parse_StackOp_t * p, int Oper )
+{
+ if ( p->Top >= p->Size )
+ {
+ printf( "Parse_StackOpPush(): Stack size is too small!\n" );
+ return;
+ }
+ p->pData[ p->Top++ ] = Oper;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Pops an entry out of the stack.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+int Parse_StackOpPop( Parse_StackOp_t * p )
+{
+ if ( p->Top == 0 )
+ {
+ printf( "Parse_StackOpPush(): Trying to extract data from the empty stack!\n" );
+ return -1;
+ }
+ return p->pData[ --p->Top ];
+}
+
+/**Function*************************************************************
+
+ Synopsis [Deletes the stack.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Parse_StackOpFree( Parse_StackOp_t * p )
+{
+ ABC_FREE( p->pData );
+ ABC_FREE( p );
+}
+
+
+////////////////////////////////////////////////////////////////////////
+/// END OF FILE ///
+////////////////////////////////////////////////////////////////////////
+
+
+ABC_NAMESPACE_IMPL_END
+