static void setMsgLocation // SET LOCATION FOR MESSAGE ( CTX context ) // - current context { switch( context ) { case CTX_FINI : case CTX_FUNC_GEN : case CTX_CG_FUNC : case CTX_CG_OPT : case CTX_ENDFILE : if( CompFlags.ew_switch_used ) { // drops thru case CTX_INIT : case CTX_CMDLN_ENV : case CTX_CMDLN_PGM : case CTX_CMDLN_VALID : err_locn.src_file = NULL; break; } // drops thru case CTX_FORCED_INCS : case CTX_SOURCE : if( err_locn.src_file == NULL ) { if( SrcFilesOpen() ) { SrcFileGetTokenLocn( &err_locn ); } else { err_locn.line = SrcLineCount; err_locn.column = 0; err_locn.src_file = SrcFileCurrent(); } } break; } }
void SymbolLocnDefine( // DEFINE LOCATION SYMBOL TOKEN_LOCN *sym_locn, // - symbol location (NULL for current source file) SYMBOL sym ) // - the symbol { SYM_TOKEN_LOCN *locn = NULL; if( sym_locn != NULL && sym_locn->src_file != NULL ) { locn = SymbolLocnAlloc( &sym->locn ); locn->tl = *sym_locn; sym->flag2 |= SF2_TOKEN_LOCN; } else { DbgVerify( sym_locn == NULL , "SymbolLocnDefine -- bad location" ); if( SrcFilesOpen() ) { locn = SymbolLocnAlloc( &sym->locn ); SrcFileGetTokenLocn( &locn->tl ); sym->flag2 |= SF2_TOKEN_LOCN; } } }