/**
|
* \file
|
*/
|
|
#ifndef __MONO_ERROR_H__
|
#define __MONO_ERROR_H__
|
|
#include <mono/utils/mono-publib.h>
|
|
enum {
|
/*
|
The supplied strings were dup'd by means of calling mono_error_dup_strings.
|
*/
|
MONO_ERROR_FREE_STRINGS = 0x0001,
|
|
/*
|
Something happened while processing the error and the resulting message is incomplete.
|
*/
|
MONO_ERROR_INCOMPLETE = 0x0002,
|
/*
|
This MonoError is heap allocated in a mempool
|
*/
|
MONO_ERROR_MEMPOOL_BOXED = 0x0004
|
};
|
|
enum {
|
MONO_ERROR_NONE = 0,
|
MONO_ERROR_MISSING_METHOD = 1,
|
MONO_ERROR_MISSING_FIELD = 2,
|
MONO_ERROR_TYPE_LOAD = 3,
|
MONO_ERROR_FILE_NOT_FOUND = 4,
|
MONO_ERROR_BAD_IMAGE = 5,
|
MONO_ERROR_OUT_OF_MEMORY = 6,
|
MONO_ERROR_ARGUMENT = 7,
|
MONO_ERROR_ARGUMENT_NULL = 11,
|
MONO_ERROR_NOT_VERIFIABLE = 8,
|
MONO_ERROR_INVALID_PROGRAM = 12,
|
|
/*
|
* This is a generic error mechanism is you need to raise an arbitrary corlib exception.
|
* You must pass the exception name otherwise prepare_exception will fail with internal execution.
|
*/
|
MONO_ERROR_GENERIC = 9,
|
/* This one encapsulates a managed exception instance */
|
MONO_ERROR_EXCEPTION_INSTANCE = 10,
|
|
/* Not a valid error code - indicates that the error was cleaned up and reused */
|
MONO_ERROR_CLEANUP_CALLED_SENTINEL = 0xffff
|
};
|
|
/*Keep in sync with MonoErrorInternal*/
|
typedef struct _MonoError {
|
unsigned short error_code;
|
unsigned short hidden_0; /*DON'T TOUCH */
|
|
void *hidden_1 [12]; /*DON'T TOUCH */
|
} MonoError;
|
|
/* Mempool-allocated MonoError.*/
|
typedef struct _MonoErrorBoxed MonoErrorBoxed;
|
|
MONO_BEGIN_DECLS
|
|
MONO_RT_EXTERNAL_ONLY
|
MONO_API void
|
mono_error_init (MonoError *error);
|
|
MONO_API void
|
mono_error_init_flags (MonoError *error, unsigned short flags);
|
|
MONO_API void
|
mono_error_cleanup (MonoError *error);
|
|
MONO_API mono_bool
|
mono_error_ok (MonoError *error);
|
|
MONO_API unsigned short
|
mono_error_get_error_code (MonoError *error);
|
|
MONO_API const char*
|
mono_error_get_message (MonoError *error);
|
|
MONO_END_DECLS
|
|
#endif
|