undar-lang/emit/uxn/lib/undar.c

40 lines
569 B
C

#include "chibicc-uxn/varvara.h"
char mem[100];
unsigned mem_length;
char *
aalloc(unsigned size)
{
unsigned pos = mem_length;
mem_length += size;
return (char *)&mem[pos];
}
void
afree()
{
mem_length = 0;
}
char *
amcpy(char *from, unsigned length)
{
char *ptr = aalloc(length);
for (unsigned i = 0; i < length; i++) {
ptr[i] = from[i];
}
return ptr;
}
char* nat_to_str(unsigned n) {
char buffer[5];
unsigned i = 5;
do {
buffer[--i] = '0' + n % 10;
n /= 10;
} while(n > 0);
return amcpy(buffer + i, 5 - i);
}