From f5d445afa10ed7ba03b0ea9a5274f11904220700 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 20 Aug 2026 18:51:01 +0000 Subject: Move aplwc-repl into its own directory, and likewise for the aplwc library FossilOrigin-Name: 7e6b710fae494fadfe06bed16ae10bdda0f377067cb9411ed2b8bfc682d2fcbc --- src/aplwc.h | 23 -------------------- src/aplwc_internal.h | 50 ------------------------------------------- src/bin/main.c | 33 +++++++++++++++++++++++++++++ src/include/aplwc.h | 23 ++++++++++++++++++++ src/lib/aplwc_internal.h | 50 +++++++++++++++++++++++++++++++++++++++++++ src/lib/main.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++ src/lib/memory.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ src/libmain.c | 54 ----------------------------------------------- src/main.c | 33 ----------------------------- src/memory.c | 55 ------------------------------------------------ 10 files changed, 215 insertions(+), 215 deletions(-) delete mode 100644 src/aplwc.h delete mode 100644 src/aplwc_internal.h create mode 100644 src/bin/main.c create mode 100644 src/include/aplwc.h create mode 100644 src/lib/aplwc_internal.h create mode 100644 src/lib/main.c create mode 100644 src/lib/memory.c delete mode 100644 src/libmain.c delete mode 100644 src/main.c delete mode 100644 src/memory.c (limited to 'src') diff --git a/src/aplwc.h b/src/aplwc.h deleted file mode 100644 index 9905411..0000000 --- a/src/aplwc.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef APLWC_H -#define APLWC_H - -#include -#include - -enum aplwc_rc { - APLWC_OK, - APLWC_OUT_OF_MEMORY, - - APLWC_RC_LAST = APLWC_OUT_OF_MEMORY -}; - -struct aplwc; - -enum aplwc_rc aplwc_new(struct aplwc **, uint8_t *, size_t); -enum aplwc_rc aplwc_destroy(struct aplwc *); -const char *aplwc_errstr_rc(enum aplwc_rc); -const char *aplwc_errstr(struct aplwc *); - -#define APLWC_MIN_MEM (128) - -#endif /* APLWC_H */ diff --git a/src/aplwc_internal.h b/src/aplwc_internal.h deleted file mode 100644 index 97a89ba..0000000 --- a/src/aplwc_internal.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef APLWC_INTERNAL_H -#define APLWC_INTERNAL_H - -#include - -#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 -#include -#include -#include - -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 */ diff --git a/src/bin/main.c b/src/bin/main.c new file mode 100644 index 0000000..2538248 --- /dev/null +++ b/src/bin/main.c @@ -0,0 +1,33 @@ +#include +#include +#include + +int +main(void) +{ + struct aplwc *aplwc; + uint8_t *data; + int ret; + + data = malloc(APLWC_MIN_MEM); + if(data == NULL){ + fprintf(stderr, "Couldn't allocate memory\n"); + return 1; + } + + ret = aplwc_new(&aplwc, data, APLWC_MIN_MEM); + if(ret){ + fprintf(stderr, "Couldn't create new aplwc instance: %s\n", aplwc_errstr(aplwc)); + return 1; + } + + ret = aplwc_destroy(aplwc); + if(ret){ + fprintf(stderr, "Couldn't destroy the aplwc instance: %s\n", aplwc_errstr(aplwc)); + return 1; + } + + free(data); + + return 0; +} diff --git a/src/include/aplwc.h b/src/include/aplwc.h new file mode 100644 index 0000000..9905411 --- /dev/null +++ b/src/include/aplwc.h @@ -0,0 +1,23 @@ +#ifndef APLWC_H +#define APLWC_H + +#include +#include + +enum aplwc_rc { + APLWC_OK, + APLWC_OUT_OF_MEMORY, + + APLWC_RC_LAST = APLWC_OUT_OF_MEMORY +}; + +struct aplwc; + +enum aplwc_rc aplwc_new(struct aplwc **, uint8_t *, size_t); +enum aplwc_rc aplwc_destroy(struct aplwc *); +const char *aplwc_errstr_rc(enum aplwc_rc); +const char *aplwc_errstr(struct aplwc *); + +#define APLWC_MIN_MEM (128) + +#endif /* APLWC_H */ 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 + +#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 +#include +#include +#include + +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 */ diff --git a/src/lib/main.c b/src/lib/main.c new file mode 100644 index 0000000..d44d6de --- /dev/null +++ b/src/lib/main.c @@ -0,0 +1,54 @@ +#include "aplwc_internal.h" + +enum aplwc_rc +aplwc_new(struct aplwc **p, uint8_t *data, size_t size) +{ + struct memory m; + + m = memory_init(data, size); + + *p = memory_alloc_aplwc(&m); + if(*p == NULL) + return APLWC_OUT_OF_MEMORY; + (*p)->memory = m; + + return APLWC_OK; +} + +enum aplwc_rc +aplwc_destroy(struct aplwc *p) +{ + if(p) + memory_free_aplwc(&p->memory, p); + + return APLWC_OK; +} + +const char * +aplwc_errstr_rc(enum aplwc_rc rc) +{ + switch(rc){ + case APLWC_OK: + return ""; + case APLWC_OUT_OF_MEMORY: + return "Out of memory"; + default: + return "(unable to produce error string)"; + } +} + +const char * +aplwc_errstr(struct aplwc *aplwc) +{ + enum { BUF_SIZE = 256 }; + + const char *err; + enum aplwc_rc rc; + + err = NULL; + + rc = aplwc ? aplwc->last_error : APLWC_RC_LAST+1; + err = aplwc_errstr_rc(rc); + + return err; +} diff --git a/src/lib/memory.c b/src/lib/memory.c new file mode 100644 index 0000000..187137e --- /dev/null +++ b/src/lib/memory.c @@ -0,0 +1,55 @@ +#include "aplwc_internal.h" + +struct memory +memory_init(uint8_t *data , size_t size) +{ + struct memory mem; + + mem.data = data; + mem.size = size; + mem.offset = 0; + return mem; +} + +static void * +alloc(struct memory *m, size_t size, size_t align) +{ + uintptr_t ptr; + size_t alloc_size, adjust; + void *p; + + ptr = (uintptr_t)m->data; + alloc_size = size; + + if(NEVER(align == 0)) + return NULL; + adjust = ptr % align; + + if(adjust) + alloc_size += align - adjust; + + if((m->size - m->offset) >= alloc_size){ + p = m->data+m->offset+alloc_size-size; + m->offset += alloc_size; + memset(p, 0, size); + }else + p = NULL; + + return p; +} + +struct aplwc * +memory_alloc_aplwc(struct memory *m) +{ + struct aplwc *p; + + p = alloc(m, sizeof(struct aplwc), alignof(struct aplwc)); + return p; +} + +void +memory_free_aplwc(struct memory *m, struct aplwc *p) +{ + UNUSED_PARAMETER(m); + UNUSED_PARAMETER(p); +} diff --git a/src/libmain.c b/src/libmain.c deleted file mode 100644 index 47ed6f7..0000000 --- a/src/libmain.c +++ /dev/null @@ -1,54 +0,0 @@ -#include - -enum aplwc_rc -aplwc_new(struct aplwc **p, uint8_t *data, size_t size) -{ - struct memory m; - - m = memory_init(data, size); - - *p = memory_alloc_aplwc(&m); - if(*p == NULL) - return APLWC_OUT_OF_MEMORY; - (*p)->memory = m; - - return APLWC_OK; -} - -enum aplwc_rc -aplwc_destroy(struct aplwc *p) -{ - if(p) - memory_free_aplwc(&p->memory, p); - - return APLWC_OK; -} - -const char * -aplwc_errstr_rc(enum aplwc_rc rc) -{ - switch(rc){ - case APLWC_OK: - return ""; - case APLWC_OUT_OF_MEMORY: - return "Out of memory"; - default: - return "(unable to produce error string)"; - } -} - -const char * -aplwc_errstr(struct aplwc *aplwc) -{ - enum { BUF_SIZE = 256 }; - - const char *err; - enum aplwc_rc rc; - - err = NULL; - - rc = aplwc ? aplwc->last_error : APLWC_RC_LAST+1; - err = aplwc_errstr_rc(rc); - - return err; -} diff --git a/src/main.c b/src/main.c deleted file mode 100644 index 2538248..0000000 --- a/src/main.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include - -int -main(void) -{ - struct aplwc *aplwc; - uint8_t *data; - int ret; - - data = malloc(APLWC_MIN_MEM); - if(data == NULL){ - fprintf(stderr, "Couldn't allocate memory\n"); - return 1; - } - - ret = aplwc_new(&aplwc, data, APLWC_MIN_MEM); - if(ret){ - fprintf(stderr, "Couldn't create new aplwc instance: %s\n", aplwc_errstr(aplwc)); - return 1; - } - - ret = aplwc_destroy(aplwc); - if(ret){ - fprintf(stderr, "Couldn't destroy the aplwc instance: %s\n", aplwc_errstr(aplwc)); - return 1; - } - - free(data); - - return 0; -} diff --git a/src/memory.c b/src/memory.c deleted file mode 100644 index 622bb0b..0000000 --- a/src/memory.c +++ /dev/null @@ -1,55 +0,0 @@ -#include - -struct memory -memory_init(uint8_t *data , size_t size) -{ - struct memory mem; - - mem.data = data; - mem.size = size; - mem.offset = 0; - return mem; -} - -static void * -alloc(struct memory *m, size_t size, size_t align) -{ - uintptr_t ptr; - size_t alloc_size, adjust; - void *p; - - ptr = (uintptr_t)m->data; - alloc_size = size; - - if(NEVER(align == 0)) - return NULL; - adjust = ptr % align; - - if(adjust) - alloc_size += align - adjust; - - if((m->size - m->offset) >= alloc_size){ - p = m->data+m->offset+alloc_size-size; - m->offset += alloc_size; - memset(p, 0, size); - }else - p = NULL; - - return p; -} - -struct aplwc * -memory_alloc_aplwc(struct memory *m) -{ - struct aplwc *p; - - p = alloc(m, sizeof(struct aplwc), alignof(struct aplwc)); - return p; -} - -void -memory_free_aplwc(struct memory *m, struct aplwc *p) -{ - UNUSED_PARAMETER(m); - UNUSED_PARAMETER(p); -} -- cgit v1.2.3