pch_status PCHWriteRewrites( void ) { carve_walk_base data; CarveWalkAllFree( carveREWRITE, markFreeRewrite ); CarveWalkAll( carveREWRITE, saveRewrite, &data ); PCHWriteCVIndexTerm(); CarveWalkAllFree( carveREWRITE_TOKENS, markFreeRewriteTokens ); CarveWalkAll( carveREWRITE_TOKENS, saveRewriteTokens, &data ); PCHWriteCVIndexTerm(); return( PCHCB_OK ); }
pch_status PCHWriteGenerators( void ) { RTN_GEN *c; for( c = useSYMBOL; c != NULL; c = c->next ) { SymbolPCHWrite( c->parm ); PCHWriteUInt( c->index ); } PCHWriteCVIndexTerm(); for( c = useTYPE; c != NULL; c = c->next ) { TypePCHWrite( c->parm ); PCHWriteUInt( c->index ); } PCHWriteCVIndexTerm(); return( PCHCB_OK ); }
static void saveRewrite( void *e, carve_walk_base *d ) { REWRITE *s = e; REWRITE_TOKENS *save_list; REWRITE_TOKENS *save_curr; SRCFILE_HANDLE *h; uint_8 *save_stream; if( s->free ) { return; } save_stream = s->stream; save_list = s->list; save_curr = s->curr; s->stream = _TokenPosGetIndex( s ); // must be first s->list = RewriteTokensGetIndex( save_list ); s->curr = RewriteTokensGetIndex( save_curr ); PCHWriteCVIndex( d->index ); PCHWriteVar( *s ); for( h = s->srcfiles_refd; h != NULL; h = h->next ) { SrcFilePCHWrite( h->srcfile ); } PCHWriteCVIndexTerm(); s->list = save_list; s->curr = save_curr; s->stream = save_stream; }
pch_status PCHWriteTokenLocns( void ) { auto carve_walk_base data; CarveWalkAllFree( carveSYMBOL_LOCN, markFreeTokenLocn ); CarveWalkAll( carveSYMBOL_LOCN, saveTokenLocn, &data ); PCHWriteCVIndexTerm(); return( PCHCB_OK ); }
pch_status PCHWriteTypeSigs( void ) { auto carve_walk_base data; TypeSigPCHWrite( type_sigs ); CarveWalkAllFree( carveTYPE_SIG, markFreeTypeSig ); CarveWalkAll( carveTYPE_SIG, saveTypeSig, &data ); PCHWriteCVIndexTerm(); return( PCHCB_OK ); }
pch_status PCHWriteConstantPool( void ) { auto carve_walk_base data; ConstantPoolPCHWrite( pool_float ); ConstantPoolPCHWrite( pool_int64 ); CarveWalkAllFree( carvePOOL_CON, markFreeConstant ); CarveWalkAll( carvePOOL_CON, saveConstant, &data ); PCHWriteCVIndexTerm(); return( PCHCB_OK ); }
static void writeExtrefs( void ) { unsigned len; PRAG_EXT_REF *e; RingIterBeg( pragmaExtrefs, e ) { if( e->symbol != NULL ) { SymbolPCHWrite( e->symbol ); } } RingIterEnd( e ) PCHWriteCVIndexTerm(); RingIterBeg( pragmaExtrefs, e ) { if( e->symbol == NULL ) { len = strlen( e->name ); PCHWriteUInt( len ); PCHWrite( e->name, len + 1 ); } } RingIterEnd( e ) PCHWriteUInt( 0 ); }