Copyright (C) Kevin Larke 2009-2020
This file is part of libcm.
libcm is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
libcm is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
See the GNU General Public License distributed with the libcm
package or look here:
typedef cmHandle_t cmSymTblH_t; extern cmSymTblH_t cmSymTblNullHandle; // Create a new symbol table. // 'parentH' is a parent table embedded in this table and is optional. Set this // value to 'cmSymTblNullHandle'. if the table does not have a parent. // // All symbol searches will include this table however all symbols registered with // this table will be inserted in this table not the parent. // // 'baseSymId' is the minimum symbol id used by this table and will be returned // as the value of the first symbol registered with this table. Subsequent symbols // will increment this value. Internal assertions prevent the symbol id range // of this table from overlapping with its parent. cmSymTblH_t cmSymTblCreate( cmSymTblH_t parentH, unsigned baseSymId, cmCtx_t* ctx ); // Destroy and release the resources associated with a symbol table created by // an earlier call to cmSymTblCreate(). void cmSymTblDestroy( cmSymTblH_t* hp ); // Register a symbol label. Set 'staticFl' to true if the label is allocated statically. unsigned cmSymTblRegister( cmSymTblH_t h, const char* label, bool staticFl ); unsigned cmSymTblRegisterSymbol( cmSymTblH_t h, const char* label ); unsigned cmSymTblRegisterStaticSymbol( cmSymTblH_t h, const char* label ); unsigned cmSymTblRegisterVFmt( cmSymTblH_t h, const cmChar_t* fmt, va_list vl ); unsigned cmSymTblRegisterFmt( cmSymTblH_t h, const cmChar_t* fmt, ... ); bool cmSymTblRemove( cmSymTblH_t h, unsigned symId ); // Given a symbol id return the associated label. const char* cmSymTblLabel( cmSymTblH_t h, unsigned symId ); // Given a symbol label return the associated id or cmInvalidId if the symbol could not be found. unsigned cmSymTblId( cmSymTblH_t h, const char* label ); // Returns true if the symbol table handle is not valid otherwise returns false. bool cmSymTblIsValid( cmSymTblH_t h ); // Returns true if 'symId' is stored in this symbol table or its parent otherwise returns false. bool cmSymTblIsValidId( cmSymTblH_t h, unsigned symId ); // Print thes symbol table (but not its parent). void cmSymTblReport( cmSymTblH_t h ); // Symbol table test stub. void cmSymTblTest(cmCtx_t* ctx);