er_codes.c 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. /* Hey EMACS -*- linux-c -*- */
  2. /* $Id: er_codes.c 2268 2006-11-06 17:18:51Z roms $ */
  3. /* TiEmu - Tiemu Is an EMUlator
  4. *
  5. * Copyright (c) 2005, Kevin Kofler
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 2 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program; if not, write to the Free Software
  19. * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
  20. */
  21. /*
  22. ER_throw support
  23. */
  24. #include <stdio.h>
  25. #include <stdlib.h>
  26. /* This table is converted and hand-edited from the TIGCC error.h. */
  27. static struct {unsigned int id; const char *name;} erthrow_table[] = {
  28. {0, "ER_OK"},
  29. {1, "ER_EXIT"},
  30. {2, "ER_STOP"},
  31. {3, "ER_OFF"},
  32. {4, "ER_PRGM_STOP"},
  33. {9, "ER_NO_MSG"},
  34. {10, "ER_FUNC_DID_NOT_RETURN_VALUE"},
  35. {20, "ER_TEST_NOT_TRUE_OR_FALSE"},
  36. {30, "ER_ARG_CANNOT_BE_FOLDER"},
  37. {40, "ER_ARGUMENT"},
  38. {50, "ER_ARG_MISMATCH"},
  39. {60, "ER_EXPECTED_BOOL_OR_AGG"},
  40. {70, "ER_ARG_MUST_BE_DECIMAL"},
  41. {80, "ER_ARG_MUST_BE_LABEL"},
  42. {90, "ER_ARGUMENT_MUST_BE_LIST"},
  43. {100, "ER_ARG_MUST_BE_MATRIX"},
  44. {110, "ER_ARG_MUST_BE_PIC"},
  45. {120, "ER_ARG_MUST_BE_PIC_OR_STR"},
  46. {130, "ER_ARG_MUST_BE_STRING"},
  47. {140, "ER_EXPECTED_VAR"},
  48. {150, "ER_ARG_MUST_BE_EMPTY_FOLDER"},
  49. {160, "ER_EXPECTED_ALGEBRAIC"},
  50. {161, "ER_ASAP_TOO_LONG"},
  51. {163, "ER_ATTRIBUTE_NOT_FOUND"},
  52. {165, "ER_BATT_LOW"},
  53. {170, "ER_BOUND"},
  54. {180, "ER_BREAK"},
  55. {185, "ER_CHECKSUM"},
  56. {190, "ER_CIRCULAR_DEFINITION"},
  57. {200, "ER_INVALID_SUCH_THAT"},
  58. {210, "ER_DATATYPE"},
  59. {220, "ER_DEPENDENT_LIMIT"},
  60. {225, "ER_DIFF_EQ_SETUP"},
  61. {230, "ER_DIMENSION"},
  62. {240, "ER_NON_CONFORMING_LISTS"},
  63. {250, "ER_DIVBY0"},
  64. {260, "ER_DOMAIN"},
  65. {270, "ER_DUPLICATE_VAR_NAME"},
  66. {280, "ER_ELSE_WITHOUT_IF"},
  67. {290, "ER_ENDTRY_WITHOUT_ELSE"},
  68. {295, "ER_EXCESSIVE_ITERATION"},
  69. {300, "ER_EXPECTED_2OR3_ELEMENTS"},
  70. {305, "ER_EXPIRED"},
  71. {307, "ER_APP_EXT_NOT_FOUND"},
  72. {308, "ER_APP_NOT_FOUND"},
  73. {310, "ER_INVALID_NSOLVE_ARG1"},
  74. {320, "ER_INVALID_SOLVE_ARG1"},
  75. {330, "ER_FOLDER"},
  76. {335, "ER_FUNCS_IN_DIFF_EQ"},
  77. {345, "ER_INCONSISTENT_UNITS"},
  78. {350, "ER_INVALID_SUBSCRIPT"},
  79. {360, "ER_INVALID_INDIR_STRING"},
  80. {380, "ER_INVALID_ANS"},
  81. {390, "ER_ILLEGAL_ASSIGNMENT"},
  82. {400, "ER_ILLEGAL_ASSIGNMENT_VALUE"},
  83. {405, "ER_INVALID_AXES"},
  84. {410, "ER_ILLEGAL_COMMAND"},
  85. {420, "ER_INVALID_FOLDER_NAME"},
  86. {430, "ER_GRAPH_MODE"},
  87. {435, "ER_INVALID_GUESS"},
  88. {440, "ER_INVALID_IMPLIED_MULT"},
  89. {450, "ER_ILLEGAL_IN_FUNC"},
  90. {460, "ER_ILLEGAL_IN_CUSTOM"},
  91. {470, "ER_ILLEGAL_IN_DIALOG"},
  92. {480, "ER_ILLEGAL_IN_TOOLBAR"},
  93. {490, "ER_CANNOT_EXIT_FROM_TRY"},
  94. {500, "ER_INVALID_LABEL"},
  95. {510, "ER_INVALID_LIST_OR_MATRIX"},
  96. {520, "ER_INVAL_OUTSIDE_TB_CM"},
  97. {530, "ER_INVAL_OUTSIDE_DG_TB_CM"},
  98. {540, "ER_INVALID_OUTSIDE_DIALOG"},
  99. {550, "ER_MUST_BE_IN_PRGM_OR_FUNC"},
  100. {560, "ER_EXIT_NOT_IN_LOOP"},
  101. {570, "ER_INVALID_PATHNAME"},
  102. {575, "ER_INVALID_POLAR_COMPLEX"},
  103. {580, "ER_ILLEGAL_PRGM_REF"},
  104. {590, "ER_INVALID_SYNTAX_BLOCK"},
  105. {600, "ER_INVALID_TABLE"},
  106. {605, "ER_INVALID_USE_OF_UNITS"},
  107. {610, "ER_INVALID_LOCAL_DECLARATION"},
  108. {620, "ER_EXPECTED_VAR_OR_FUNC"},
  109. {630, "ER_INVALID_VAR_REF"},
  110. {640, "ER_INVALID_VECTOR_SYNTAX"},
  111. {650, "ER_LINK_IO"},
  112. {665, "ER_MAT_NOT_DIAGONALIZABLE"},
  113. {670, "ER_MEMORY"},
  114. {673, "ER_STACK_VIO"},
  115. {680, "ER_EXPECTED_LPAR"},
  116. {690, "ER_EXPECTED_RPAR"},
  117. {700, "ER_EXPECTED_DOUBLE_QUOTE"},
  118. {710, "ER_EXPECTED_RIGHT_BRACKET"},
  119. {720, "ER_EXPECTED_RIGHT_BRACE"},
  120. {730, "ER_INVALID_BLOCK_STRUCTURE"},
  121. {740, "ER_MISSING_THEN"},
  122. {750, "ER_NOT_FUNC_OR_PRGM"},
  123. {765, "ER_NO_FUNCS_SEL"},
  124. {780, "ER_NO_SOLUTION"},
  125. {790, "ER_NON_ALGEBRAIC_VARIABLE"},
  126. {800, "ER_UNREAL_RESULT"},
  127. {810, "ER_MEMORY_DML"},
  128. {830, "ER_OVERFLOW"},
  129. {840, "ER_STAT_PLOT"},
  130. {850, "ER_PRGM_NOT_FOUND"},
  131. {860, "ER_RECURSION_TOO_DEEP"},
  132. {870, "ER_RESERVED"},
  133. {875, "ER_ROM_ROUTINE_NOT_AVAILABLE"},
  134. {880, "ER_SEQUENCE_SETUP"},
  135. {885, "ER_SIGNATURE_ERR"},
  136. {890, "ER_SINGULARMAT"},
  137. {895, "ER_SLOPE_FIELD_FUNCS"},
  138. {900, "ER_EMPTY_GROUP_NOT_VALID"},
  139. {910, "ER_SYNTAX"},
  140. {930, "ER_TOO_FEW_ARGS"},
  141. {940, "ER_TOO_MANY_ARGS"},
  142. {950, "ER_TOO_MANY_SUBSCRIPTS"},
  143. {955, "ER_TOO_MANY_UNDEFINED"},
  144. {960, "ER_UNDEFINED_VAR"},
  145. {965, "ER_UNLICENSED"},
  146. {970, "ER_VAR_IN_USE"},
  147. {980, "ER_PROTECTED"},
  148. {990, "ER_NAME_TOO_LONG"},
  149. {1000, "ER_RANGE"},
  150. {1010, "ER_ZOOM"},
  151. {1020, "ER_ILLEGAL_TAG"},
  152. {1030, "ER_MEM_VIO"},
  153. {2048, NULL}
  154. };
  155. const char* ercodes_get_name(unsigned id)
  156. {
  157. if(id >= 2048)
  158. return "Unknown ERROR code";
  159. else
  160. {
  161. unsigned n = sizeof(erthrow_table)/sizeof(*erthrow_table), lb = 0, ub = n-1;
  162. while (lb < ub - 1)
  163. {
  164. unsigned mid = (lb + ub) >> 1;
  165. if (erthrow_table[mid].id <= id)
  166. lb = mid;
  167. else
  168. ub = mid;
  169. }
  170. if (id != erthrow_table[lb].id)
  171. {
  172. static char buffer[100];
  173. sprintf(buffer, "%s + %u", erthrow_table[lb].name,
  174. id - erthrow_table[lb].id);
  175. return buffer;
  176. }
  177. else
  178. return erthrow_table[lb].name;
  179. }
  180. }