From 0cab083b8fb31f33e96b68f3699ba5a83dbd3353 Mon Sep 17 00:00:00 2001 From: Ginger Bill Date: Tue, 15 Nov 2016 12:06:58 +0000 Subject: #foreign_library; vector fields (x, y, z, w) for count <= 4 --- src/checker/entity.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/checker/entity.cpp') diff --git a/src/checker/entity.cpp b/src/checker/entity.cpp index 3a0bee3df..44c32bece 100644 --- a/src/checker/entity.cpp +++ b/src/checker/entity.cpp @@ -29,11 +29,12 @@ String const entity_strings[] = { }; enum EntityFlag : u32 { - EntityFlag_Visited = 1<<0, - EntityFlag_Used = 1<<1, - EntityFlag_Anonymous = 1<<2, - EntityFlag_Field = 1<<3, - EntityFlag_Param = 1<<4, + EntityFlag_Visited = 1<<0, + EntityFlag_Used = 1<<1, + EntityFlag_Anonymous = 1<<2, + EntityFlag_Field = 1<<3, + EntityFlag_Param = 1<<4, + EntityFlag_VectorElem = 1<<5, }; struct Entity { @@ -141,6 +142,15 @@ Entity *make_entity_field(gbAllocator a, Scope *scope, Token token, Type *type, return entity; } +Entity *make_entity_vector_elem(gbAllocator a, Scope *scope, Token token, Type *type, i32 field_src_index) { + Entity *entity = make_entity_variable(a, scope, token, type); + entity->Variable.field_src_index = field_src_index; + entity->Variable.field_index = field_src_index; + entity->flags |= EntityFlag_Field; + entity->flags |= EntityFlag_VectorElem; + return entity; +} + Entity *make_entity_procedure(gbAllocator a, Scope *scope, Token token, Type *signature_type) { Entity *entity = alloc_entity(a, Entity_Procedure, scope, token, signature_type); return entity; -- cgit v1.2.3