symLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:5k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* symLib.h - symbol table subroutine library header */
  2. /* Copyright 1984-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 04g,15oct01,jn   move private funcs into symLibP.h
  7. 04f,04sep98,cdp  make Thumb-specific changes dependent on ARM_THUMB.
  8. 04e,02dec97,cdp  added thumbSymTblAdd().
  9. 04d,30oct96,elp  Added syncSymAddRtn, symSymRemoveRtn function pointers and
  10.  symSAdd().
  11. 04c,22sep92,rrr  added support for c++
  12. 04b,28jul92,jmm  added prototype for symAdd
  13. 04a,04jul92,jcf  cleaned up.
  14. 03t,22jun92,jmm  removed symFooWithGroup, added parameter to routines instead
  15. 03s,26may92,rrr  the tree shuffle
  16. 03r,15may92,jmm  Changed "symFooGroup" to "symFooWithGroup"
  17. 03i,30apr92,jmm  Added support for goup numbers
  18. 03h,02jan92,gae  used UINT's for value in symFindByValue{AndType}.
  19. 03g,13dec91,gae  made symFindByCName() consistent with other symFind* routines.
  20. 03f,26nov91,llk  added symName().
  21. 03e,04oct91,rrr  passed through the ansification filter
  22.   -changed copyright notice
  23. 03d,05oct90,dnw  deleted private functions.
  24. 03c,05oct90,shl  added ANSI function prototypes.
  25.                  added copyright notice.
  26. 03b,26jun90,jcf  removed symbol table id error.
  27. 03a,22nov89,jcf  changed for hasing/multiple access implementation
  28. 02d,30may88,dnw  changed to v4 names.
  29. 02c,24dec86,gae  changed stsLib.h to vwModNum.h.
  30. 02b,05jun86,dnw  changed SYMTAB structure to have ptr to symbol array
  31.    instead of imbedded array.
  32. 02a,11oct85,dnw  changed SYMTAB structure to have maxSymbols instead of
  33.    string table pool pointer.
  34.  deleted obsolete definition of MAX_SYM_LENGTH.
  35. 01g,11jun85,rdc  added maxSymLength and free to the SYMTAB structure.
  36.  These were necessary
  37.  for variable symbol length.
  38. 01f,13aug84,ecs  deleted status code S_sysLib_EMPTY_SYMBOL_TABLE.
  39. 01e,08aug84,ecs  added include of stsLib.h, symLib status codes.
  40. 01d,27jun84,ecs  changed length of name in SYMBOL to allow room for EOS.
  41. 01c,15jun84,dnw  moved typedefs for SYMBOL and SYMTAB here from symLib.c.
  42.  added typedef for SYMTAB_ID.
  43. 01b,27jan84,ecs  added inclusion test.
  44. 01a,03aug83,dnw  written
  45. */
  46. #ifndef __INCsymLibh
  47. #define __INCsymLibh
  48. #ifdef __cplusplus
  49. extern "C" {
  50. #endif
  51. #include "vwModNum.h"
  52. #include "symbol.h"
  53. #include "classLib.h"
  54. #include "memLib.h"
  55. #include "hashLib.h"
  56. #include "private/semLibP.h"
  57. #include "private/objLibP.h"
  58. #include "private/symLibP.h"
  59. /* status codes */
  60. #define S_symLib_SYMBOL_NOT_FOUND (M_symLib | 1)
  61. #define S_symLib_NAME_CLASH (M_symLib | 2)
  62. #define S_symLib_TABLE_NOT_EMPTY (M_symLib | 3)
  63. #define S_symLib_SYMBOL_STILL_IN_TABLE (M_symLib | 4)
  64. /* 
  65.  * XXX do not use errno's 5-11, inclusive, in symLib - 
  66.  * these are used by vxWorks AE. 
  67.  */
  68. #define S_symLib_INVALID_SYMTAB_ID (M_symLib | 12)
  69. #define S_symLib_INVALID_SYM_ID_PTR     (M_symLib | 13)
  70. /* class definition */
  71. IMPORT CLASS_ID symTblClassId; /* symbol table class id */
  72. /* default group number */
  73. IMPORT UINT16 symGroupDefault;
  74. IMPORT FUNCPTR syncSymAddRtn;
  75. IMPORT FUNCPTR syncSymRemoveRtn;
  76. /* function declarations */
  77. extern STATUS  symLibInit (void);
  78. extern SYMBOL * symEach (SYMTAB_ID symTblId, FUNCPTR routine, int routineArg);
  79. extern char * symName (SYMTAB_ID symTbl, char *value);
  80. extern void  symShowInit (void);
  81. extern STATUS  symShow (SYMTAB_ID pSymTbl, char *substr);
  82. extern STATUS  symTblDelete (SYMTAB_ID symTblId);
  83. extern STATUS  symTblTerminate (SYMTAB_ID symTblId);
  84. extern STATUS  symTblDestroy (SYMTAB_ID symTblId, BOOL dealloc);
  85. extern STATUS  symFree (SYMTAB_ID symTblId, SYMBOL *pSymbol);
  86. extern STATUS   symSAdd (SYMTAB_ID symTblId, char *name, char *value,
  87. SYM_TYPE type, UINT16 group);
  88. extern STATUS   symAdd (SYMTAB_ID symTblId, char *name, char *value,
  89. SYM_TYPE type, UINT16 group);
  90. extern STATUS  symTblAdd (SYMTAB_ID symTblId, SYMBOL *pSymbol);
  91. extern STATUS  symRemove (SYMTAB_ID symTblId, char *name, SYM_TYPE type);
  92. extern STATUS  symTblRemove (SYMTAB_ID symTblId, SYMBOL *pSymbol);
  93. extern STATUS  symInit (SYMBOL *pSymbol, char *name, char *value,
  94.          SYM_TYPE type, UINT16 group);
  95. extern SYMBOL * symAlloc (SYMTAB_ID symTblId, char *name, char *value,
  96.   SYM_TYPE type, UINT16 group);
  97. extern STATUS  symTblInit (SYMTAB *pSymTbl, BOOL sameNameOk,
  98.     PART_ID symPartId, HASH_ID symHashTblId);
  99. extern SYMTAB_ID symTblCreate (int hashSizeLog2, BOOL sameNameOk,
  100.        PART_ID symPartId);
  101. extern STATUS  symFindByName (SYMTAB_ID symTblId, char *name, char **pValue,
  102.        SYM_TYPE *pType);
  103. extern STATUS  symFindByValue (SYMTAB_ID symTblId, UINT value, char *name,
  104. int *pValue, SYM_TYPE *pType);
  105. extern STATUS  symFindByCName (SYMTAB_ID symTblId, char *name, char **pValue,
  106. SYM_TYPE *pType);
  107. extern STATUS  symFindByNameAndType (SYMTAB_ID symTblId, char *name,
  108.       char **pValue, SYM_TYPE *pType,
  109.       SYM_TYPE sType, SYM_TYPE mask);
  110. extern STATUS  symFindByValueAndType (SYMTAB_ID symTblId, UINT value,
  111.        char *name, int *pValue, SYM_TYPE *pType,
  112.        SYM_TYPE sType, SYM_TYPE mask);
  113. extern STATUS  symByValueFind (SYMTAB_ID symTblId, UINT value, char **pName,
  114. int *pValue, SYM_TYPE *pType);
  115. extern STATUS  symByValueAndTypeFind (SYMTAB_ID symTblId, UINT value,
  116.        char **pName, int *pValue, 
  117.        SYM_TYPE *pType,SYM_TYPE sType, 
  118.        SYM_TYPE mask);
  119. #if ((CPU_FAMILY == ARM) && ARM_THUMB)
  120. extern STATUS thumbSymTblAdd (SYMTAB_ID symTblId, SYMBOL *pSymbol);
  121. #endif /* CPU_FAMILY == ARM */
  122. #ifdef __cplusplus
  123. }
  124. #endif
  125. #endif /* __INCsymLibh */