16#include <cmr/config.h>
17#include <cmr/export.h>
24#define CMR_UNUSED(x) (void)(x)
49#define CMR_CALL(call) \
52 CMR_ERROR _cmr_error = call; \
55 if (_cmr_error == CMR_ERROR_INPUT) \
56 fprintf(stderr, "User input error"); \
57 else if (_cmr_error == CMR_ERROR_OUTPUT) \
58 fprintf(stderr, "Error when writing user output"); \
59 else if (_cmr_error == CMR_ERROR_MEMORY) \
60 fprintf(stderr, "Memory (re)allocation failed"); \
61 else if (_cmr_error == CMR_ERROR_INVALID) \
62 fprintf(stderr, "Invalid input"); \
63 else if (_cmr_error == CMR_ERROR_TIMEOUT) \
64 fprintf(stderr, "Time limit exceeded"); \
65 else if (_cmr_error == CMR_ERROR_OVERFLOW) \
66 fprintf(stderr, "Integer overflow"); \
67 else if (_cmr_error == CMR_ERROR_STRUCTURE) \
68 fprintf(stderr, "Invalid matrix structure"); \
69 else if (_cmr_error == CMR_ERROR_INCONSISTENT) \
70 fprintf(stderr, "Inconsistent input"); \
71 else if (_cmr_error == CMR_ERROR_PARAMS) \
72 fprintf(stderr, "Invalid parameters"); \
74 fprintf(stderr, "Unknown error"); \
75 fprintf(stderr, " in %s:%d.\n", __FILE__, __LINE__); \
117#define CMRallocBlock(cmr, ptr) \
118 _CMRallocBlock(cmr, (void**) ptr, sizeof(**ptr))
133#define CMRfreeBlock(cmr, ptr) \
134 _CMRfreeBlock(cmr, (void**) ptr, sizeof(**ptr))
153#define CMRallocBlockArray(cmr, ptr, length) \
154 _CMRallocBlockArray(cmr, (void**) ptr, sizeof(**ptr), length)
172#define CMRreallocBlockArray(cmr, ptr, length) \
173 _CMRreallocBlockArray(cmr, (void**) ptr, sizeof(**ptr), length)
192#define CMRduplicateBlockArray(cmr, ptr, length, source) \
193 _CMRduplicateBlockArray(cmr, (void**) ptr, sizeof(**ptr), length, source)
210#define CMRfreeBlockArray(cmr, ptr) \
211 _CMRfreeBlockArray(cmr, (void**) ptr)
CMR_EXPORT CMR_ERROR _CMRfreeBlock(CMR *cmr, void **ptr, size_t size)
Carries out the deallocation for CMRfreeBlock.
Definition env.c:94
CMR_EXPORT CMR_ERROR CMRfreeEnvironment(CMR **pcmr)
Frees a CMR environment.
Definition env.c:60
CMR_EXPORT char * CMRgetErrorMessage(CMR *cmr)
Returns the error message (or NULL if no error with a message occured).
Definition env.c:397
CMR_EXPORT void CMRclearErrorMessage(CMR *cmr)
Clears the error message.
Definition env.c:402
CMR_EXPORT CMR_ERROR _CMRreallocBlockArray(CMR *cmr, void **ptr, size_t size, size_t length)
Carries out the reallocation for CMRreallocBlockArray.
Definition env.c:121
CMR_EXPORT CMR_ERROR _CMRallocBlock(CMR *cmr, void **ptr, size_t size)
Carries out the allocation for CMRallocBlock.
Definition env.c:82
CMR_EXPORT CMR_ERROR _CMRallocBlockArray(CMR *cmr, void **ptr, size_t size, size_t length)
Carries out the allocation for CMRallocBlockArray.
Definition env.c:108
CMR_EXPORT CMR_ERROR CMRcreateEnvironment(CMR **pcmr)
Allocates and initializes a default CMR environment.
Definition env.c:20
CMR_ERROR
Type for return codes of library functions.
Definition env.h:32
@ CMR_ERROR_OVERFLOW
Definition env.h:38
@ CMR_ERROR_TIMEOUT
Definition env.h:39
@ CMR_ERROR_MEMORY
Definition env.h:36
@ CMR_ERROR_INVALID
Definition env.h:37
@ CMR_OKAY
Definition env.h:33
@ CMR_ERROR_INPUT
Definition env.h:34
@ CMR_ERROR_INCONSISTENT
Definition env.h:41
@ CMR_ERROR_PARAMS
Definition env.h:42
@ CMR_ERROR_OUTPUT
Definition env.h:35
@ CMR_ERROR_STRUCTURE
Definition env.h:40
CMR_EXPORT CMR_ERROR _CMRduplicateBlockArray(CMR *cmr, void **ptr, size_t size, size_t length, void *source)
Carries out the duplication for CMRduplicateBlockArray.
Definition env.c:132
CMR_EXPORT CMR_ERROR _CMRfreeBlockArray(CMR *cmr, void **ptr)
Definition env.c:146
Definition env_internal.h:45