mono-error.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /**
  2. * \file
  3. */
  4. #ifndef __MONO_ERROR_H__
  5. #define __MONO_ERROR_H__
  6. #include <mono/utils/mono-publib.h>
  7. enum {
  8. /*
  9. The supplied strings were dup'd by means of calling mono_error_dup_strings.
  10. */
  11. MONO_ERROR_FREE_STRINGS = 0x0001,
  12. /*
  13. Something happened while processing the error and the resulting message is incomplete.
  14. */
  15. MONO_ERROR_INCOMPLETE = 0x0002,
  16. /*
  17. This MonoError is heap allocated in a mempool
  18. */
  19. MONO_ERROR_MEMPOOL_BOXED = 0x0004
  20. };
  21. enum {
  22. MONO_ERROR_NONE = 0,
  23. MONO_ERROR_MISSING_METHOD = 1,
  24. MONO_ERROR_MISSING_FIELD = 2,
  25. MONO_ERROR_TYPE_LOAD = 3,
  26. MONO_ERROR_FILE_NOT_FOUND = 4,
  27. MONO_ERROR_BAD_IMAGE = 5,
  28. MONO_ERROR_OUT_OF_MEMORY = 6,
  29. MONO_ERROR_ARGUMENT = 7,
  30. MONO_ERROR_ARGUMENT_NULL = 11,
  31. MONO_ERROR_ARGUMENT_OUT_OF_RANGE = 14,
  32. MONO_ERROR_NOT_VERIFIABLE = 8,
  33. MONO_ERROR_INVALID_PROGRAM = 12,
  34. MONO_ERROR_MEMBER_ACCESS = 13,
  35. /*
  36. * This is a generic error mechanism is you need to raise an arbitrary corlib exception.
  37. * You must pass the exception name otherwise prepare_exception will fail with internal execution.
  38. */
  39. MONO_ERROR_GENERIC = 9,
  40. /* This one encapsulates a managed exception instance */
  41. MONO_ERROR_EXCEPTION_INSTANCE = 10,
  42. /* Not a valid error code - indicates that the error was cleaned up and reused */
  43. MONO_ERROR_CLEANUP_CALLED_SENTINEL = 0xffff
  44. };
  45. #ifdef _MSC_VER
  46. __pragma(warning (push))
  47. __pragma(warning (disable:4201))
  48. #endif
  49. /*Keep in sync with MonoErrorInternal*/
  50. typedef union _MonoError {
  51. // Merge two uint16 into one uint32 so it can be initialized
  52. // with one instruction instead of two.
  53. uint32_t init;
  54. struct {
  55. uint16_t error_code;
  56. uint16_t private_flags; /*DON'T TOUCH */
  57. void *hidden_1 [12]; /*DON'T TOUCH */
  58. };
  59. } MonoErrorExternal;
  60. #ifdef _MSC_VER
  61. __pragma(warning (pop))
  62. #endif
  63. #ifdef MONO_INSIDE_RUNTIME
  64. typedef union _MonoErrorInternal MonoError;
  65. #else
  66. typedef MonoErrorExternal MonoError;
  67. #endif
  68. /* Mempool-allocated MonoError.*/
  69. typedef struct _MonoErrorBoxed MonoErrorBoxed;
  70. MONO_BEGIN_DECLS
  71. MONO_API MONO_RT_EXTERNAL_ONLY void
  72. mono_error_init (MonoError *error);
  73. MONO_API void
  74. mono_error_init_flags (MonoError *error, unsigned short flags);
  75. MONO_API void
  76. mono_error_cleanup (MonoError *error);
  77. MONO_API MONO_RT_EXTERNAL_ONLY mono_bool
  78. mono_error_ok (MonoError *error);
  79. MONO_API unsigned short
  80. mono_error_get_error_code (MonoError *error);
  81. MONO_API const char*
  82. mono_error_get_message (MonoError *error);
  83. MONO_END_DECLS
  84. #endif