Skip to content

Commit eee5e3f

Browse files
committed
COMMON: added id field to V_MAP and V_FUNC
This helps modules to internally manage variables
1 parent 8a258fe commit eee5e3f

File tree

5 files changed

+11
-3
lines changed

5 files changed

+11
-3
lines changed

src/common/hashmap.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ void hashmap_create(var_p_t map, int size) {
125125
v_free(map);
126126
map->type = V_MAP;
127127
map->v.m.count = 0;
128+
map->v.m.id = -1;
128129
if (size == 0) {
129130
map->v.m.size = MAP_SIZE;
130131
} else {

src/common/var.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,7 @@ void v_set(var_t *dest, const var_t *src) {
524524
break;
525525
case V_FUNC:
526526
dest->v.fn.cb = src->v.fn.cb;
527+
dest->v.fn.id = src->v.fn.id;
527528
break;
528529
case V_NIL:
529530
dest->type = V_NIL;
@@ -563,12 +564,14 @@ void v_move(var_t *dest, const var_t *src) {
563564
dest->v.m.map = src->v.m.map;
564565
dest->v.m.count = src->v.m.count;
565566
dest->v.m.size = src->v.m.size;
567+
dest->v.m.id = src->v.m.id;
566568
break;
567569
case V_REF:
568570
dest->v.ref = src->v.ref;
569571
break;
570572
case V_FUNC:
571573
dest->v.fn.cb = src->v.fn.cb;
574+
dest->v.fn.id = src->v.fn.id;
572575
break;
573576
case V_NIL:
574577
dest->type = V_NIL;
@@ -795,4 +798,5 @@ void v_create_func(var_p_t map, const char *name, method cb) {
795798
var_p_t v_func = map_add_var(map, name, 0);
796799
v_func->type = V_FUNC;
797800
v_func->v.fn.cb = cb;
801+
v_func->v.fn.id = 0;
798802
}

src/common/var_map.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ void map_set(var_p_t dest, const var_p_t src) {
290290
hashmap_create(dest, src->v.m.count);
291291
hashmap_foreach(src, map_set_cb, &cb);
292292
dest->v.m.count = src->v.m.count;
293+
dest->v.m.id = src->v.m.id;
293294
}
294295
}
295296

src/include/var.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ typedef struct var_s {
7171
void *map;
7272
uint32_t count;
7373
uint32_t size;
74+
uint32_t id;
7475
} m;
7576

7677
// reference variable
@@ -79,6 +80,7 @@ typedef struct var_s {
7980
// object method
8081
struct {
8182
method cb;
83+
uint32_t id;
8284
} fn;
8385

8486
// generic ptr (string)

src/platform/console/main.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ static struct option OPTIONS[] = {
3939

4040
void show_help() {
4141
fprintf(stdout,
42-
"SmallBASIC version %s - kw:%d, pc:%d, fc:%d, ae:%d I=%d N=%d\n\n",
42+
"SmallBASIC version %s - kw:%d, pc:%d, fc:%d, V:%d I=%d N=%d\n\n",
4343
SB_STR_VER, kwNULL, (kwNULLPROC - kwCLS) + 1,
44-
(kwNULLFUNC - kwASC) + 1, (int)(65536 / sizeof(var_t)),
44+
(kwNULLFUNC - kwASC) + 1, (int)(sizeof(var_t)),
4545
(int)sizeof(var_int_t), (int)sizeof(var_num_t));
4646
fprintf(stdout, "usage: sbasic [options]...\n");
4747
int i = 0;
@@ -349,7 +349,6 @@ int main(int argc, char *argv[]) {
349349
opt_file_permitted = 1;
350350
opt_ide = 0;
351351
opt_loadmod = 0;
352-
opt_modpath[0] = 0;
353352
opt_nosave = 1;
354353
opt_pref_height = 0;
355354
opt_pref_width = 0;
@@ -359,6 +358,7 @@ int main(int argc, char *argv[]) {
359358
os_graphics = 1;
360359
os_color_depth = 16;
361360

361+
strcpy(opt_modpath, ".");
362362
console_init();
363363

364364
char *file = NULL;

0 commit comments

Comments
 (0)