summaryrefslogtreecommitdiff
path: root/src/aplwc_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/aplwc_internal.h')
-rw-r--r--src/aplwc_internal.h39
1 files changed, 22 insertions, 17 deletions
diff --git a/src/aplwc_internal.h b/src/aplwc_internal.h
index ccf600f..97a89ba 100644
--- a/src/aplwc_internal.h
+++ b/src/aplwc_internal.h
@@ -5,41 +5,46 @@
#define UNUSED_PARAMETER(arg) ((void)arg)
-#define RETURN_ERROR(aplwc, rc, msg) do{ \
- Aplwc *_p = (aplwc); \
- AplwcRc _r = APLWC_##rc; \
- if(_p) _p->last_error = _r; \
- return _r; \
+#define RETURN_ERROR(aplwcp, rc, msg) do{ \
+ return ((aplwc)->last_error = (rc)); \
}while(0)
#define NELEM(x) (sizeof(x)/sizeof(x[0]))
+#if APLWC_BUILD_TYPE_DEBUG
+ #define ALWAYS(x) ((x) ? 1 : (assert(0), 0))
+ #define NEVER(x) ((x) ? (assert(0), 1) : 0)
+#elif APLWC_BUILD_TYPE_RELEASE
+ #define ALWAYS(x) (X)
+ #define NEVER(X) (X)
+#elif APLWC_BUILD_TYPE_COVERAGE
+ #define ALWAYS(x) (1)
+ #define NEVER(x) (0)
+#endif
+
+#include <assert.h>
#include <stdalign.h>
#include <stdbool.h>
-#include <stdlib.h>
-#include <stdio.h>
#include <string.h>
-typedef struct Memory Memory;
-
-struct Memory {
+struct memory {
uint8_t *data;
size_t size;
size_t offset;
};
-struct Aplwc {
- AplwcRc last_error;
+struct aplwc {
+ enum aplwc_rc last_error;
char last_error_msg[64];
- Memory memory;
+ struct memory memory;
};
/* errors.c */
-const char *rc_to_string(AplwcRc);
+const char *rc_to_string(enum aplwc_rc);
/* memory.c */
-Memory memory_init(uint8_t *, size_t);
-Aplwc *memory_alloc_aplwc(Memory *);
-void memory_free_aplwc(Memory *, Aplwc *);
+struct memory memory_init(uint8_t *, size_t);
+struct aplwc *memory_alloc_aplwc(struct memory *);
+void memory_free_aplwc(struct memory *, struct aplwc *);
#endif /* APLWC_INTERNAL_H */