summaryrefslogtreecommitdiff
path: root/src/lib/aplwc_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/aplwc_internal.h')
-rw-r--r--src/lib/aplwc_internal.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/lib/aplwc_internal.h b/src/lib/aplwc_internal.h
new file mode 100644
index 0000000..97a89ba
--- /dev/null
+++ b/src/lib/aplwc_internal.h
@@ -0,0 +1,50 @@
+#ifndef APLWC_INTERNAL_H
+#define APLWC_INTERNAL_H
+
+#include <aplwc.h>
+
+#define UNUSED_PARAMETER(arg) ((void)arg)
+
+#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 <string.h>
+
+struct memory {
+ uint8_t *data;
+ size_t size;
+ size_t offset;
+};
+
+struct aplwc {
+ enum aplwc_rc last_error;
+ char last_error_msg[64];
+ struct memory memory;
+};
+
+/* errors.c */
+const char *rc_to_string(enum aplwc_rc);
+
+/* memory.c */
+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 */