aboutsummaryrefslogtreecommitdiff
path: root/src/types.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/types.cpp')
-rw-r--r--src/types.cpp34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/types.cpp b/src/types.cpp
index 41fc1f901..5ec5a40e9 100644
--- a/src/types.cpp
+++ b/src/types.cpp
@@ -197,13 +197,13 @@ typedef struct Type {
// TODO(bill): Should I add extra information here specifying the kind of selection?
// e.g. field, constant, vector field, type field, etc.
typedef struct Selection {
- Entity * entity;
- Array_i32 index;
- bool indirect; // Set if there was a pointer deref anywhere down the line
+ Entity * entity;
+ Array<i32> index;
+ bool indirect; // Set if there was a pointer deref anywhere down the line
} Selection;
Selection empty_selection = {0};
-Selection make_selection(Entity *entity, Array_i32 index, bool indirect) {
+Selection make_selection(Entity *entity, Array<i32> index, bool indirect) {
Selection s = {entity, index, indirect};
return s;
}
@@ -212,10 +212,10 @@ void selection_add_index(Selection *s, isize index) {
// IMPORTANT NOTE(bill): this requires a stretchy buffer/dynamic array so it requires some form
// of heap allocation
// TODO(bill): Find a way to use a backing buffer for initial use as the general case is probably .count<3
- if (s->index.e == NULL) {
+ if (s->index.data == NULL) {
array_init(&s->index, heap_allocator());
}
- array_add(&s->index, index);
+ array_add(&s->index, cast(i32)index);
}
@@ -1297,9 +1297,9 @@ Selection lookup_field_from_index(gbAllocator a, Type *type, i64 index) {
Entity *f = type->Record.fields[i];
if (f->kind == Entity_Variable) {
if (f->Variable.field_src_index == index) {
- Array_i32 sel_array = {0};
+ Array<i32> sel_array = {0};
array_init_count(&sel_array, a, 1);
- sel_array.e[0] = i;
+ sel_array[0] = i;
return make_selection(f, sel_array, false);
}
}
@@ -1309,18 +1309,18 @@ Selection lookup_field_from_index(gbAllocator a, Type *type, i64 index) {
for (isize i = 0; i < max_count; i++) {
Entity *f = type->Tuple.variables[i];
if (i == index) {
- Array_i32 sel_array = {0};
+ Array<i32> sel_array = {0};
array_init_count(&sel_array, a, 1);
- sel_array.e[0] = i;
+ sel_array[0] = i;
return make_selection(f, sel_array, false);
}
}
break;
case Type_BitField: {
- Array_i32 sel_array = {0};
+ Array<i32> sel_array = {0};
array_init_count(&sel_array, a, 1);
- sel_array.e[0] = cast(i32)index;
+ sel_array[0] = cast(i32)index;
return make_selection(type->BitField.fields[index], sel_array, false);
} break;
@@ -1509,7 +1509,7 @@ Selection lookup_field_with_selection(gbAllocator a, Type *type_, String field_n
typedef struct TypePath {
- Array(Type *) path; // Entity_TypeName;
+ Array<Type *> path; // Entity_TypeName;
bool failure;
} TypePath;
@@ -1526,7 +1526,7 @@ void type_path_print_illegal_cycle(TypePath *tp, isize start_index) {
GB_ASSERT(tp != NULL);
GB_ASSERT(start_index < tp->path.count);
- Type *t = tp->path.e[start_index];
+ Type *t = tp->path[start_index];
GB_ASSERT(t != NULL);
GB_ASSERT_MSG(is_type_named(t), "%s", type_to_string(t));
@@ -1534,7 +1534,7 @@ void type_path_print_illegal_cycle(TypePath *tp, isize start_index) {
error(e->token, "Illegal declaration cycle of `%.*s`", LIT(t->Named.name));
// NOTE(bill): Print cycle, if it's deep enough
for (isize j = start_index; j < tp->path.count; j++) {
- Type *t = tp->path.e[j];
+ Type *t = tp->path[j];
GB_ASSERT_MSG(is_type_named(t), "%s", type_to_string(t));
Entity *e = t->Named.type_name;
error(e->token, "\t%.*s refers to", LIT(t->Named.name));
@@ -1549,7 +1549,7 @@ TypePath *type_path_push(TypePath *tp, Type *t) {
GB_ASSERT(tp != NULL);
for (isize i = 0; i < tp->path.count; i++) {
- if (tp->path.e[i] == t) {
+ if (tp->path[i] == t) {
type_path_print_illegal_cycle(tp, i);
}
}
@@ -2082,7 +2082,7 @@ i64 type_offset_of_from_selection(gbAllocator allocator, Type *type, Selection s
Type *t = type;
i64 offset = 0;
for_array(i, sel.index) {
- isize index = sel.index.e[i];
+ isize index = sel.index[i];
t = base_type(t);
offset += type_offset_of(allocator, t, index);
if (t->kind == Type_Record && t->Record.kind == TypeRecord_Struct) {