gdefs.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #pragma once
  2. #define Y(i) (1<<(i))
  3. #define V 0x4 /* NODE */
  4. #define E 0x5 /* EDGE */
  5. #define G 0x6 /* GRAPH */
  6. #define O 0x7 /* OBJECT */
  7. #define TV 0x8 /* TV_ */
  8. #define YALL (Y(V)|Y(E)|Y(G))
  9. enum {
  10. RESERVED,
  11. #define X(prefix, name, str, type, subtype, ...) prefix##name,
  12. #include <gvpr/gprdata.inc>
  13. #undef X
  14. };
  15. enum { LAST_V = 0
  16. #define X(prefix, name, str, type, subtype, ...) + (prefix == V_ ? 1 : 0)
  17. #define V_ 1
  18. #define M_ 2
  19. #define T_ 3
  20. #define A_ 4
  21. #define F_ 5
  22. #define C_ 6
  23. #include <gvpr/gprdata.inc>
  24. #undef X
  25. };
  26. enum { LAST_M = 0
  27. #define X(prefix, name, str, type, subtype, ...) \
  28. + ((prefix == V_ || prefix == M_) ? 1 : 0)
  29. #include <gvpr/gprdata.inc>
  30. #undef C_
  31. #undef F_
  32. #undef A_
  33. #undef T_
  34. #undef M_
  35. #undef V_
  36. #undef X
  37. };
  38. enum { MINNAME = 1 };
  39. enum { MAXNAME = 0
  40. #define X(prefix, name, str, type, subtype, ...) + 1
  41. #include <gvpr/gprdata.inc>
  42. #undef X
  43. };
  44. static Exid_t symbols[] = {
  45. #define X(prefix, name, str, type, subtype, ...) \
  46. EX_ID(str, type, prefix##name, subtype),
  47. #include <gvpr/gprdata.inc>
  48. #undef X
  49. EX_ID({0}, 0, 0, 0),
  50. };
  51. static char* typenames[] = {
  52. #define X(prefix, name, str, type, subtype, ...) type ## _(str)
  53. #define ID_(str) // nothing
  54. #define DECLARE_(str) str,
  55. #define ARRAY_(str) // nothing
  56. #define FUNCTION_(str) // nothing
  57. #define CONSTANT_(str) // nothing
  58. #include <gvpr/gprdata.inc>
  59. #undef CONSTANT_
  60. #undef FUNCTION_
  61. #undef ARRAY_
  62. #undef DECLARE_
  63. #undef ID_
  64. #undef X
  65. };
  66. #ifdef DEBUG
  67. static char* gprnames[] = {
  68. "",
  69. #define X(prefix, name, str, type, subtype, ...) str,
  70. #include <gvpr/gprdata.inc>
  71. #undef X
  72. };
  73. #endif
  74. typedef unsigned short tctype;
  75. static tctype tchk[][2] = {
  76. {0, 0},
  77. #define X(prefix, name, str, type, subtype, ...) type ## _(__VA_ARGS__)
  78. #define ID_(...) { __VA_ARGS__ },
  79. #define DECLARE_() // nothing
  80. #define ARRAY_() // nothing
  81. #define FUNCTION_() // nothing
  82. #define CONSTANT_() // nothing
  83. #include <gvpr/gprdata.inc>
  84. #undef CONSTANT_
  85. #undef FUNCTION_
  86. #undef ARRAY_
  87. #undef DECLARE_
  88. #undef ID_
  89. #undef X
  90. };