mirror of
https://github.com/Ed94/Odin.git
synced 2026-07-16 08:01:24 -07:00
Remove scalar*vector; swizzle; broadcast
This commit is contained in:
+2
-36
@@ -64,7 +64,6 @@ struct BasicType {
|
||||
TYPE_KIND(Structure), \
|
||||
TYPE_KIND(Pointer), \
|
||||
TYPE_KIND(Named), \
|
||||
TYPE_KIND(Alias), \
|
||||
TYPE_KIND(Tuple), \
|
||||
TYPE_KIND(Proc), \
|
||||
TYPE_KIND(Count),
|
||||
@@ -110,11 +109,6 @@ struct Type {
|
||||
Type * base;
|
||||
Entity *type_name; // Entity_TypeName
|
||||
} named;
|
||||
struct {
|
||||
String name;
|
||||
Type * base;
|
||||
Entity *alias_name; // Entity_AliasName
|
||||
} alias;
|
||||
struct {
|
||||
Entity **variables; // Entity_Variable
|
||||
isize variable_count;
|
||||
@@ -130,12 +124,8 @@ struct Type {
|
||||
};
|
||||
|
||||
Type *get_base_type(Type *t) {
|
||||
while (t->kind == Type_Named || t->kind == Type_Alias) {
|
||||
if (t->kind == Type_Named) {
|
||||
t = t->named.base;
|
||||
} else {
|
||||
t = t->alias.base;
|
||||
}
|
||||
while (t->kind == Type_Named) {
|
||||
t = t->named.base;
|
||||
}
|
||||
return t;
|
||||
}
|
||||
@@ -143,8 +133,6 @@ Type *get_base_type(Type *t) {
|
||||
void set_base_type(Type *t, Type *base) {
|
||||
if (t && t->kind == Type_Named) {
|
||||
t->named.base = base;
|
||||
} else if (t && t->kind == Type_Alias) {
|
||||
t->alias.base = base;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,14 +189,6 @@ Type *make_type_named(gbAllocator a, String name, Type *base, Entity *type_name)
|
||||
return t;
|
||||
}
|
||||
|
||||
Type *make_type_alias(gbAllocator a, String name, Type *base, Entity *alias_name) {
|
||||
Type *t = alloc_type(a, Type_Alias);
|
||||
t->alias.name = name;
|
||||
t->alias.base = base;
|
||||
t->alias.alias_name = alias_name;
|
||||
return t;
|
||||
}
|
||||
|
||||
Type *make_type_tuple(gbAllocator a) {
|
||||
Type *t = alloc_type(a, Type_Tuple);
|
||||
return t;
|
||||
@@ -465,16 +445,11 @@ b32 are_types_identical(Type *x, Type *y) {
|
||||
return are_types_identical(x->pointer.elem, y->pointer.elem);
|
||||
break;
|
||||
|
||||
|
||||
case Type_Alias:
|
||||
return are_types_identical(get_base_type(x), y);
|
||||
|
||||
case Type_Named:
|
||||
if (y->kind == Type_Named)
|
||||
return x->named.base == y->named.base;
|
||||
break;
|
||||
|
||||
|
||||
case Type_Tuple:
|
||||
if (y->kind == Type_Tuple) {
|
||||
if (x->tuple.variable_count == y->tuple.variable_count) {
|
||||
@@ -737,15 +712,6 @@ gbString write_type_to_string(gbString str, Type *type) {
|
||||
}
|
||||
break;
|
||||
|
||||
case Type_Alias:
|
||||
if (type->alias.alias_name != NULL) {
|
||||
str = gb_string_append_length(str, type->alias.name.text, type->alias.name.len);
|
||||
} else {
|
||||
// NOTE(bill): Just in case
|
||||
str = gb_string_appendc(str, "<alias type>");
|
||||
}
|
||||
break;
|
||||
|
||||
case Type_Tuple:
|
||||
if (type->tuple.variable_count > 0) {
|
||||
for (isize i = 0; i < type->tuple.variable_count; i++) {
|
||||
|
||||
Reference in New Issue
Block a user