Skip to content

Commit dd92e89

Browse files
committed
Refine the source_t structure and its functions for general use
Originally, source_t was defined as a structure to store the text of source files, implemented as a dynamic array. However, these changes rename this structure and its related functions to make them more generic. They are no longer limited to storing source code but suitable for any variable-length character data. The structure is now renamed to strbuf_t, and can be used to create dynamic arrays of characters.
1 parent 411a6f6 commit dd92e89

File tree

4 files changed

+29
-29
lines changed

4 files changed

+29
-29
lines changed

src/defs.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ typedef struct {
351351

352352
typedef struct basic_block basic_block_t;
353353

354-
/* Definition of a dynamic array structure for sources in src/globals.c
354+
/* Definition of a dynamic array structure for storing characters
355355
* size: Current number of elements in the array
356356
* capacity: Number of elements that can be stored without resizing
357357
* elements: Pointer to the array of characters
@@ -360,7 +360,7 @@ typedef struct {
360360
int size;
361361
int capacity;
362362
char *elements;
363-
} source_t;
363+
} strbuf_t;
364364

365365
/* phase-2 IR definition */
366366
struct ph2_ir {

src/globals.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ int elf_offset = 0;
6464

6565
regfile_t REGS[REG_CNT];
6666

67-
source_t *SOURCE;
67+
strbuf_t *SOURCE;
6868

6969
hashmap_t *INCLUSION_MAP;
7070

@@ -905,9 +905,9 @@ void add_insn(block_t *block,
905905
bb->insn_list.tail = n;
906906
}
907907

908-
source_t *source_create(int init_capacity)
908+
strbuf_t *strbuf_create(int init_capacity)
909909
{
910-
source_t *array = malloc(sizeof(source_t));
910+
strbuf_t *array = malloc(sizeof(strbuf_t));
911911
if (!array)
912912
return NULL;
913913

@@ -922,7 +922,7 @@ source_t *source_create(int init_capacity)
922922
return array;
923923
}
924924

925-
bool source_extend(source_t *src, int len)
925+
bool strbuf_extend(strbuf_t *src, int len)
926926
{
927927
int new_size = src->size + len;
928928

@@ -947,9 +947,9 @@ bool source_extend(source_t *src, int len)
947947
return true;
948948
}
949949

950-
bool source_push(source_t *src, char value)
950+
bool strbuf_putc(strbuf_t *src, char value)
951951
{
952-
if (!source_extend(src, 1))
952+
if (!strbuf_extend(src, 1))
953953
return false;
954954

955955
src->elements[src->size] = value;
@@ -958,11 +958,11 @@ bool source_push(source_t *src, char value)
958958
return true;
959959
}
960960

961-
bool source_push_str(source_t *src, char *value)
961+
bool strbuf_puts(strbuf_t *src, char *value)
962962
{
963963
int len = strlen(value);
964964

965-
if (!source_extend(src, len))
965+
if (!strbuf_extend(src, len))
966966
return false;
967967

968968
strncpy(src->elements + src->size, value, len);
@@ -971,7 +971,7 @@ bool source_push_str(source_t *src, char *value)
971971
return true;
972972
}
973973

974-
void source_free(source_t *src)
974+
void strbuf_free(strbuf_t *src)
975975
{
976976
if (!src)
977977
return;
@@ -998,7 +998,7 @@ void global_init()
998998
INSN_ARENA = arena_init(DEFAULT_ARENA_SIZE);
999999
BB_ARENA = arena_init(DEFAULT_ARENA_SIZE);
10001000
PH2_IR_FLATTEN = malloc(MAX_IR_INSTR * sizeof(ph2_ir_t *));
1001-
SOURCE = source_create(MAX_SOURCE);
1001+
SOURCE = strbuf_create(MAX_SOURCE);
10021002
INCLUSION_MAP = hashmap_create(DEFAULT_INCLUSIONS_SIZE);
10031003
ALIASES_MAP = hashmap_create(MAX_ALIASES);
10041004
CONSTANTS_MAP = hashmap_create(MAX_CONSTANTS);
@@ -1026,7 +1026,7 @@ void global_release()
10261026
arena_free(INSN_ARENA);
10271027
arena_free(BB_ARENA);
10281028
free(PH2_IR_FLATTEN);
1029-
source_free(SOURCE);
1029+
strbuf_free(SOURCE);
10301030
hashmap_free(INCLUSION_MAP);
10311031
hashmap_free(ALIASES_MAP);
10321032
hashmap_free(CONSTANTS_MAP);

src/parser.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3422,7 +3422,7 @@ void load_source_file(char *file)
34223422
snprintf(path + c + 1, inclusion_path_len, "%s", buffer + 10);
34233423
load_source_file(path);
34243424
} else {
3425-
source_push_str(SOURCE, buffer);
3425+
strbuf_puts(SOURCE, buffer);
34263426
}
34273427
}
34283428

tools/inliner.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,20 @@
2020
#define MAX_LINE_LEN 200
2121
#define DEFAULT_SOURCE_SIZE 65536
2222

23-
#define write_char(c) source_push(SOURCE, c)
24-
#define write_str(s) source_push_str(SOURCE, s)
23+
#define write_char(c) strbuf_putc(SOURCE, c)
24+
#define write_str(s) strbuf_puts(SOURCE, s)
2525

2626
typedef struct {
2727
int size;
2828
int capacity;
2929
char *elements;
30-
} source_t;
30+
} strbuf_t;
3131

32-
source_t *SOURCE;
32+
strbuf_t *SOURCE;
3333

34-
source_t *source_create(int init_capacity)
34+
strbuf_t *strbuf_create(int init_capacity)
3535
{
36-
source_t *array = malloc(sizeof(source_t));
36+
strbuf_t *array = malloc(sizeof(strbuf_t));
3737
if (!array)
3838
return NULL;
3939

@@ -48,7 +48,7 @@ source_t *source_create(int init_capacity)
4848
return array;
4949
}
5050

51-
bool source_extend(source_t *src, int len)
51+
bool strbuf_extend(strbuf_t *src, int len)
5252
{
5353
int new_size = src->size + len;
5454

@@ -73,9 +73,9 @@ bool source_extend(source_t *src, int len)
7373
return true;
7474
}
7575

76-
bool source_push(source_t *src, char value)
76+
bool strbuf_putc(strbuf_t *src, char value)
7777
{
78-
if (!source_extend(src, 1))
78+
if (!strbuf_extend(src, 1))
7979
return false;
8080

8181
src->elements[src->size] = value;
@@ -84,11 +84,11 @@ bool source_push(source_t *src, char value)
8484
return true;
8585
}
8686

87-
bool source_push_str(source_t *src, char *value)
87+
bool strbuf_puts(strbuf_t *src, char *value)
8888
{
8989
int len = strlen(value);
9090

91-
if (!source_extend(src, len))
91+
if (!strbuf_extend(src, len))
9292
return false;
9393

9494
strncpy(src->elements + src->size, value, len);
@@ -97,7 +97,7 @@ bool source_push_str(source_t *src, char *value)
9797
return true;
9898
}
9999

100-
void source_free(source_t *src)
100+
void strbuf_free(strbuf_t *src)
101101
{
102102
if (!src)
103103
return;
@@ -152,7 +152,7 @@ int main(int argc, char *argv[])
152152
return -1;
153153
}
154154

155-
SOURCE = source_create(DEFAULT_SOURCE_SIZE);
155+
SOURCE = strbuf_create(DEFAULT_SOURCE_SIZE);
156156

157157
write_str("/* Created by tools/inliner - DO NOT EDIT. */\n");
158158

@@ -167,14 +167,14 @@ int main(int argc, char *argv[])
167167
* __c("}\n");
168168
*/
169169
write_str("void __c(char *src) {\n");
170-
write_str(" source_push_str(SOURCE, src);\n");
170+
write_str(" strbuf_puts(SOURCE, src);\n");
171171
write_str("}\n");
172172

173173
write_str("void libc_generate() {\n");
174174
load_from(argv[1]);
175175
write_str("}\n");
176176
save_to(argv[2]);
177-
source_free(SOURCE);
177+
strbuf_free(SOURCE);
178178

179179
return 0;
180180
}

0 commit comments

Comments
 (0)