Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
2.1 KiB

  1. //
  2. // support for instance dumping
  3. //
  4. #include <string.h>
  5. #include <stdio.h>
  6. #if defined(OS2)
  7. #define INCL_NOCOMMON
  8. #define INCL_DOSPROCESS
  9. #define INCL_DOSSEMAPHORES
  10. #define INCL_DOSFILEMGR
  11. #define INCL_DOSERRORS
  12. #define INCL_DOSMISC
  13. #include <os2.h>
  14. #else
  15. #include <windows.h>
  16. #endif
  17. #include <dos.h>
  18. #include "hungary.h"
  19. #include "bsc.h"
  20. #include "bscsup.h"
  21. char *ptyptab[] = {
  22. "undef", // SBR_TYP_UNKNOWN
  23. "function", // SBR_TYP_FUNCTION
  24. "label", // SBR_TYP_LABEL
  25. "parameter", // SBR_TYP_PARAMETER
  26. "variable", // SBR_TYP_VARIABLE
  27. "constant", // SBR_TYP_CONSTANT
  28. "macro", // SBR_TYP_MACRO
  29. "typedef", // SBR_TYP_TYPEDEF
  30. "strucnam", // SBR_TYP_STRUCNAM
  31. "enumnam", // SBR_TYP_ENUMNAM
  32. "enummem", // SBR_TYP_ENUMMEM
  33. "unionnam", // SBR_TYP_UNIONNAM
  34. "segment", // SBR_TYP_SEGMENT
  35. "group", // SBR_TYP_GROUP
  36. "program" // SBR_TYP_PROGRAM
  37. };
  38. #define C_ATR 11
  39. char *patrtab[] = {
  40. "local", // SBR_ATR_LOCAL
  41. "static", // SBR_ATR_STATIC
  42. "shared", // SBR_ATR_SHARED
  43. "near", // SBR_ATR_NEAR
  44. "common", // SBR_ATR_COMMON
  45. "decl_only", // SBR_ATR_DECL_ONLY
  46. "public", // SBR_ATR_PUBLIC
  47. "named", // SBR_ATR_NAMED
  48. "module", // SBR_ATR_MODULE
  49. "?", "?" // reserved for expansion
  50. };
  51. VOID BSC_API
  52. DumpInst(IINST iinst)
  53. // dump a single instance
  54. {
  55. ISYM isym;
  56. WORD i;
  57. LSZ lsz;
  58. WORD len;
  59. TYP typ;
  60. ATR atr;
  61. len = BSCMaxSymLen();
  62. InstInfo(iinst, &isym, &typ, &atr);
  63. lsz = LszNameFrSym(isym);
  64. BSCPrintf("%s", lsz);
  65. for (i = strlen(lsz); i < len; i++)
  66. BSCPrintf(" ");
  67. BSCPrintf(" (%s", ptyptab[typ]);
  68. for (i=0; i < C_ATR; i++)
  69. if (atr & (1<<i)) BSCPrintf (":%s", patrtab[i]);
  70. BSCPrintf(")");
  71. }
  72. LSZ BSC_API
  73. LszTypInst(IINST iinst)
  74. // return the type string of a single inst
  75. //
  76. {
  77. ISYM isym;
  78. TYP typ;
  79. ATR atr;
  80. InstInfo(iinst, &isym, &typ, &atr);
  81. return ptyptab[typ];
  82. }