Hash :
0089f8d0
Author :
Thomas de Grivel
Date :
2020-03-23T15:22:20
fix build and running on MSYS2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
#include <assert.h>
#include <stdio.h>
#include "data.h"
#include "rtbuf_var.h"
#include "rtbuf.h"
s_data_type g_rtbuf_var_type = {
sizeof(s_rtbuf_var) * 8,
DATA_TYPE_BITS
};
s_data_alloc g_rtbuf_var_alloc;
s_rtbuf_var *g_rtbuf_var;
void rtbuf_var_init (void)
{
data_alloc_init(&g_rtbuf_var_alloc, &g_rtbuf_var_type, RTBUF_VAR_MAX, NULL, NULL);
g_rtbuf_var = g_rtbuf_var_alloc.mem;
assert(g_rtbuf_var);
}
s_rtbuf_var * rtbuf_var_new (const char *name)
{
s_rtbuf_var *v = data_new(&g_rtbuf_var_alloc);
if (v)
v->name = symbol_intern(name);
return v;
}
s_rtbuf_var * rtbuf_var_find (const char *name)
{
s_rtbuf_var *v = g_rtbuf_var + g_rtbuf_var_alloc.n;
unsigned i = g_rtbuf_var_alloc.n;
const char *sym = symbol_find(name);
if (sym)
while (v--, i--) {
assert(v >= g_rtbuf_var);
if (v->name == sym)
return v;
}
return NULL;
}
s_rtbuf_var * rtbuf_var_rtbuf_set (const char *name, unsigned i)
{
s_rtbuf_var *v = rtbuf_var_find(name);
if (!v)
v = rtbuf_var_new(name);
if (v) {
v->type = RTBUF_VAR_RTBUF;
v->index = i;
}
return v;
}
void rtbuf_var_print (const s_rtbuf_var *v)
{
if (v) {
printf("%s = ", v->name);
switch (v->type) {
case RTBUF_VAR_NULL:
printf("NULL");
fflush(stdout);
break;
case RTBUF_VAR_RTBUF:
rtbuf_print_long(v->index);
break;
default:
assert(0);
}
}
}