00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef _SOLVERERROR_H_
00037 #define _SOLVERERROR_H_
00038
00039 #include <stdarg.h>
00040 #include <stddef.h>
00041 #include "sbmlsolver/exportdefs.h"
00042
00043 #ifdef __cplusplus
00044 extern "C" {
00045 #endif
00046
00050 typedef enum errorCode
00051 {
00052
00054 SOLVER_ERROR_ODE_COULD_NOT_BE_CONSTRUCTED_FOR_SPECIES = 10000,
00055 SOLVER_ERROR_THE_MODEL_CONTAINS_EVENTS = 10001,
00056 SOLVER_ERROR_THE_MODEL_CONTAINS_ALGEBRAIC_RULES = 10002,
00057 SOLVER_ERROR_ODE_MODEL_COULD_NOT_BE_CONSTRUCTED = 10003,
00058 SOLVER_ERROR_NO_KINETIC_LAW_FOUND_FOR_REACTION = 10004,
00059 SOLVER_ERROR_ENTRIES_OF_THE_JACOBIAN_MATRIX_COULD_NOT_BE_CONSTRUCTED = 10005,
00060 SOLVER_ERROR_MODEL_NOT_SIMPLIFIED = 10006,
00061 SOLVER_ERROR_ENTRIES_OF_THE_PARAMETRIC_MATRIX_COULD_NOT_BE_CONSTRUCTED = 10007,
00062
00064 SOLVER_ERROR_MAKE_SURE_SCHEMA_IS_ON_PATH = 10030,
00065 SOLVER_ERROR_CANNOT_PARSE_MODEL = 10031,
00066 SOLVER_ERROR_DOCUMENTLEVEL_ONE = 100032,
00067
00069 SOLVER_ERROR_NO_GRAPHVIZ = 10050,
00071 SOLVER_ERROR_INTEGRATOR_SETTINGS = 10100,
00072 SOLVER_ERROR_VARY_SETTINGS = 10101,
00073
00075 SOLVER_ERROR_INTEGRATION_NOT_SUCCESSFUL = 20000,
00076 SOLVER_ERROR_EVENT_TRIGGER_FIRED = 20001,
00077 SOLVER_ERROR_CVODE_MALLOC_FAILED = 20002,
00078
00081 SOLVER_ERROR_AST_UNKNOWN_NODE_TYPE = 20100,
00082 SOLVER_ERROR_AST_UNKNOWN_FAILURE = 20101,
00083 SOLVER_ERROR_AST_EVALUATION_FAILED_MISSING_VALUE = 20102,
00084 SOLVER_ERROR_AST_EVALUATION_FAILED_DELAY = 20103,
00085 SOLVER_ERROR_AST_EVALUATION_FAILED_LAMBDA = 20104,
00086 SOLVER_ERROR_AST_EVALUATION_FAILED_FUNCTION = 20105,
00087 SOLVER_ERROR_AST_EVALUATION_FAILED_FLOAT_FACTORIAL = 20106,
00089 SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_CONSTANT = 20110,
00090 SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_OPERATOR = 20111,
00091 SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_LAMBDA = 20112,
00092 SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_DELAY = 20114,
00093 SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_FACTORIAL = 20115,
00094 SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_PIECEWISE = 20117,
00095 SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_LOGICAL_OR_RELATIONAL = 20118,
00096
00098 SOLVER_ERROR_CVODE_RESULTS_FAILED = 20201,
00099 SOLVER_ERROR_SBML_RESULTS_FAILED = 20202,
00100
00102 SOLVER_MESSAGE_RERUN_WITH_OR_WO_JACOBIAN = 20500,
00103 SOLVER_MESSAGE_STEADYSTATE_FOUND = 20501,
00104
00106 SOLVER_ERROR_NO_MORE_MEMORY_AVAILABLE = 30000,
00107
00109 SOLVER_ERROR_SYMBOL_IS_NOT_IN_MODEL = 40000,
00110 SOLVER_ERROR_ATTEMPTING_TO_COPY_VARIABLE_STATE_BETWEEN_INSTANCES_OF_DIFFERENT_MODELS = 40001
00111
00112 } errorCode_t;
00113
00115 typedef enum errorType
00116 {
00117 FATAL_ERROR_TYPE = 0,
00118 ERROR_ERROR_TYPE = 1,
00119 WARNING_ERROR_TYPE = 2,
00120 NUMBER_OF_ERROR_TYPES = 3
00121 } errorType_t;
00122
00123 #define RETURN_ON_ERRORS_WITH(x) \
00124 {if (SolverError_getNum(ERROR_ERROR_TYPE) || SolverError_getNum(FATAL_ERROR_TYPE)) return (x); }
00125
00126 #define RETURN_ON_FATALS_WITH(x) \
00127 {if (SolverError_getNum(FATAL_ERROR_TYPE)) return (x); }
00128
00129 #define ASSIGN_NEW_MEMORY_BLOCK(_ref, _num, _type, _return) \
00130 { (_ref) = (_type *)SolverError_calloc(_num, sizeof(_type)); RETURN_ON_FATALS_WITH(_return) }
00131
00132 #define ASSIGN_NEW_MEMORY(_ref, _type, _return) ASSIGN_NEW_MEMORY_BLOCK(_ref, 1, _type, _return)
00133
00134
00135 SBML_ODESOLVER_API int SolverError_getNum(errorType_t);
00136
00137
00138 SBML_ODESOLVER_API char * SolverError_getMessage(errorType_t, int errorNum);
00139
00140
00141 SBML_ODESOLVER_API errorCode_t SolverError_getCode(errorType_t, int errorNum);
00142
00143
00144 SBML_ODESOLVER_API errorCode_t SolverError_getLastCode(errorType_t);
00145
00146
00147 SBML_ODESOLVER_API void SolverError_clear();
00148
00149
00150 SBML_ODESOLVER_API void SolverError_error(errorType_t, errorCode_t, char *format, ...);
00151
00152
00153 SBML_ODESOLVER_API void SolverError_haltOnErrors();
00154
00155
00156 SBML_ODESOLVER_API void SolverError_dump();
00157
00158
00159 SBML_ODESOLVER_API char *SolverError_dumpToString();
00160
00161
00162 SBML_ODESOLVER_API void SolverError_freeDumpString(char *);
00163
00164
00165 SBML_ODESOLVER_API void SolverError_dumpAndClearErrors();
00166
00167
00168 SBML_ODESOLVER_API void *SolverError_calloc(size_t num, size_t size);
00169
00170
00171 SBML_ODESOLVER_API int SolverError_isMemoryExhausted();
00172
00173 #ifdef __cplusplus
00174 }
00175 #endif
00176
00177 #endif
00178
00179