ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
extraUtilProgress.c
Go to the documentation of this file.
1
20
21#include <stdio.h>
22#include "extra.h"
23#include "base/main/main.h"
24
26
27
31
33{
34 int nItemsNext; // the number of items for the next update of the progress bar
35 int nItemsTotal; // the total number of items
36 int posTotal; // the total number of positions
37 int posCur; // the current position
38 FILE * pFile; // the output stream
39};
40
41static void Extra_ProgressBarShow( ProgressBar * p, char * pString );
42static void Extra_ProgressBarClean( ProgressBar * p );
43
47
62ProgressBar * Extra_ProgressBarStart( FILE * pFile, int nItemsTotal )
63{
64 ProgressBar * p;
66 p = ABC_ALLOC( ProgressBar, 1 );
67 memset( p, 0, sizeof(ProgressBar) );
68 p->pFile = pFile;
69 p->nItemsTotal = nItemsTotal;
70 p->posTotal = 78;
71 p->posCur = 1;
72 p->nItemsNext = (int)((7.0+p->posCur)*p->nItemsTotal/p->posTotal);
73 Extra_ProgressBarShow( p, NULL );
74 return p;
75}
76
88void Extra_ProgressBarUpdate_int( ProgressBar * p, int nItemsCur, char * pString )
89{
90 if ( p == NULL ) return;
91 if ( nItemsCur < p->nItemsNext )
92 return;
93 if ( nItemsCur >= p->nItemsTotal )
94 {
95 p->posCur = 78;
96 p->nItemsNext = 0x7FFFFFFF;
97 }
98 else
99 {
100 p->posCur += 7;
101 p->nItemsNext = (int)((7.0+p->posCur)*p->nItemsTotal/p->posTotal);
102 }
103 Extra_ProgressBarShow( p, pString );
104}
105
106
119{
120 if ( p == NULL ) return;
121 Extra_ProgressBarClean( p );
122 ABC_FREE( p );
123}
124
136void Extra_ProgressBarShow( ProgressBar * p, char * pString )
137{
138 int i;
139 if ( p == NULL )
140 return;
141 if ( Abc_FrameIsBatchMode() )
142 return;
143 if ( pString )
144 fprintf( p->pFile, "%s ", pString );
145 for ( i = (pString? strlen(pString) + 1 : 0); i < p->posCur; i++ )
146 fprintf( p->pFile, "-" );
147 if ( i == p->posCur )
148 fprintf( p->pFile, ">" );
149 for ( i++ ; i <= p->posTotal; i++ )
150 fprintf( p->pFile, " " );
151 fprintf( p->pFile, "\r" );
152 fflush( stdout );
153}
154
166void Extra_ProgressBarClean( ProgressBar * p )
167{
168 int i;
169 if ( p == NULL )
170 return;
171 if ( Abc_FrameIsBatchMode() )
172 return;
173 for ( i = 0; i <= p->posTotal; i++ )
174 fprintf( p->pFile, " " );
175 fprintf( p->pFile, "\r" );
176 fflush( stdout );
177}
178
182
183
185
#define ABC_ALLOC(type, num)
Definition abc_global.h:264
#define ABC_FREE(obj)
Definition abc_global.h:267
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_DLL Abc_Frame_t * Abc_FrameGetGlobalFrame()
Definition mainFrame.c:643
ABC_DLL int Abc_FrameShowProgress(Abc_Frame_t *p)
Definition mainFrame.c:310
ABC_DLL int Abc_FrameIsBatchMode()
Definition mainFrame.c:110
ABC_NAMESPACE_IMPL_START typedef char ProgressBar
Definition bbrNtbdd.c:27
Cube * p
Definition exorList.c:222
void Extra_ProgressBarStop(ProgressBar *p)
void Extra_ProgressBarUpdate_int(ProgressBar *p, int nItemsCur, char *pString)
ProgressBar * Extra_ProgressBarStart(FILE *pFile, int nItemsTotal)
FUNCTION DEFINITIONS ///.
DECLARATIONS ///.
char * memset()
int strlen()