From c128b97ad50bbe9c9bf1a2ea5cb48b30a258cc10 Mon Sep 17 00:00:00 2001 From: zongor Date: Tue, 7 Apr 2026 12:01:05 -0700 Subject: [PATCH] move example code to .h file --- test/plex.c | 63 +--------------------------------------------------- test/undar.h | 45 +++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 62 deletions(-) create mode 100644 test/undar.h diff --git a/test/plex.c b/test/plex.c index 193c3b1..5275eb6 100644 --- a/test/plex.c +++ b/test/plex.c @@ -1,66 +1,5 @@ -#include -#include - -typedef struct arena_s Arena; -struct arena_s { - unsigned char *tape; - unsigned int count; - unsigned int capacity; -}; - -void *aalloc(Arena *arena, unsigned int size){ - unsigned int pos; - if(arena == NULL) return NULL; - if(arena->count + size > arena->capacity) return NULL; - - pos = arena->count; - arena->count += size; - return (void *)&arena->tape[pos]; -} - -unsigned int -scpy(char *to, const char *from, unsigned int length) -{ - unsigned int i; - if(to == NULL || from == NULL) return -1; - if(length == 0) return 0; - for(i = 0; i < length - 1 && from[i] != '\0'; i++) to[i] = from[i]; - to[i] = '\0'; - return 0; -} - -char * -ascpy(Arena *arena, const char *start, unsigned int length) -{ - char *str; - if(!start) return NULL; - str = (char *)aalloc(arena, length + 1); - if(!str) return NULL; - scpy(str, start, length); - return str; -} - -void * -areturn(Arena *arena, unsigned int checkpoint, const void *src, unsigned int size) -{ - void *dest; - if(arena == NULL || src == NULL) return NULL; - - dest = (void *)&arena->tape[checkpoint]; - if (src == dest) return dest; - - memmove(dest, src, size); - arena->count = checkpoint + size; - - return dest; -} - -#define ARENA_RETURN(arena, ckpt, src_ptr, type) \ - return (type *)areturn((arena), (ckpt), (src_ptr), sizeof(type)) - -#define ARENA_RETURN_ARRAY(arena, ckpt, src_ptr, type, count) \ - return (type *)areturn((arena), (ckpt), (src_ptr), sizeof(type) * (count)) +#include "undar.h" typedef struct Point Point; struct Point { diff --git a/test/undar.h b/test/undar.h new file mode 100644 index 0000000..465deac --- /dev/null +++ b/test/undar.h @@ -0,0 +1,45 @@ +#ifndef UNDAR_H +#define UNDAR_H + +#include +#include + +typedef struct arena_s Arena; +struct arena_s { + unsigned char *tape; + unsigned int count; + unsigned int capacity; +}; + +static void *aalloc(Arena *arena, unsigned int size){ + unsigned int pos; + if(arena == NULL) return NULL; + if(arena->count + size > arena->capacity) return NULL; + + pos = arena->count; + arena->count += size; + return (void *)&arena->tape[pos]; +} + +static void * +areturn(Arena *arena, unsigned int checkpoint, const void *src, unsigned int size) +{ + void *dest; + if(arena == NULL || src == NULL) return NULL; + + dest = (void *)&arena->tape[checkpoint]; + if (src == dest) return dest; + + memmove(dest, src, size); + arena->count = checkpoint + size; + + return dest; +} + +#define ARENA_RETURN(arena, ckpt, src_ptr, type) \ + return (type *)areturn((arena), (ckpt), (src_ptr), sizeof(type)) + +#define ARENA_RETURN_ARRAY(arena, ckpt, src_ptr, type, count) \ + return (type *)areturn((arena), (ckpt), (src_ptr), sizeof(type) * (count)) + +#endif \ No newline at end of file