diff options
| author | peter <peter@pmikkelsen.com> | 2026-08-20 18:51:01 +0000 |
|---|---|---|
| committer | peter <peter@pmikkelsen.com> | 2026-08-20 18:51:01 +0000 |
| commit | f5d445afa10ed7ba03b0ea9a5274f11904220700 (patch) | |
| tree | e068ea6c7c13fbc6e6fbc87c5c0e76001867b689 /src/lib/main.c | |
| parent | 69ae86ada0f2516e619f516f33599bbf9fe9410e (diff) | |
Move aplwc-repl into its own directory, and likewise for the aplwc library
FossilOrigin-Name: 7e6b710fae494fadfe06bed16ae10bdda0f377067cb9411ed2b8bfc682d2fcbc
Diffstat (limited to 'src/lib/main.c')
| -rw-r--r-- | src/lib/main.c | 54 |
1 files changed, 54 insertions, 0 deletions
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; +} |