src/Types.cpp
changeset 146 dc7d3b7a918c
parent 145 e9d804821c48
child 147 9c544823d090
     1.1 --- a/src/Types.cpp	Wed Aug 01 22:32:59 2012 -0700
     1.2 +++ b/src/Types.cpp	Sat Aug 04 17:51:43 2012 -0700
     1.3 @@ -35,6 +35,7 @@
     1.4      type->contained_ = NULL;
     1.5      type->returnType_ = NULL;
     1.6      type->parameters_ = NULL;
     1.7 +    type->fields_ = NULL;
     1.8      return type;
     1.9  }
    1.10  
    1.11 @@ -50,6 +51,7 @@
    1.12      type->contained_ = NULL;
    1.13      type->returnType_ = NULL;
    1.14      type->parameters_ = NULL;
    1.15 +    type->fields_ = NULL;
    1.16      type->primitive_ = prim;
    1.17      return type;
    1.18  }
    1.19 @@ -66,6 +68,7 @@
    1.20      type->contained_ = contained;
    1.21      type->returnType_ = NULL;
    1.22      type->parameters_ = NULL;
    1.23 +    type->fields_ = NULL;
    1.24      type->elements_ = elements;
    1.25      if (!contained->isArray())
    1.26          type->levels_ = 1;
    1.27 @@ -87,6 +90,7 @@
    1.28      type->contained_ = contained;
    1.29      type->returnType_ = NULL;
    1.30      type->parameters_ = NULL;
    1.31 +    type->fields_ = NULL;
    1.32      type->const_ = isConst;
    1.33      return type;
    1.34  }
    1.35 @@ -101,6 +105,7 @@
    1.36      type->kind_ = FUNCTION;
    1.37      type->name_ = NULL;
    1.38      type->contained_ = NULL;
    1.39 +    type->fields_ = NULL;
    1.40      type->returnType_ = returnType;
    1.41      type->parameters_ = parameters;
    1.42      return type;
    1.43 @@ -118,6 +123,23 @@
    1.44      type->contained_ = NULL;
    1.45      type->returnType_ = NULL;
    1.46      type->parameters_ = NULL;
    1.47 +    type->fields_ = NULL;
    1.48 +    return type;
    1.49 +}
    1.50 +
    1.51 +Type *
    1.52 +Type::NewStruct(Zone *zone, Handle<String> name, Handle<FixedArray> fields)
    1.53 +{
    1.54 +    Local<Type> type(zone, Type::cast(zone->allocate(MapKind_Type, sizeof(Type), Heap::Tenure_Old)));
    1.55 +    if (!type)
    1.56 +        return NULL;
    1.57 +
    1.58 +    type->kind_ = STRUCT;
    1.59 +    type->name_ = name;
    1.60 +    type->contained_ = NULL;
    1.61 +    type->returnType_ = NULL;
    1.62 +    type->parameters_ = NULL;
    1.63 +    type->fields_ = fields;
    1.64      return type;
    1.65  }
    1.66  
    1.67 @@ -131,6 +153,7 @@
    1.68      type->kind_ = NATIVE;
    1.69      type->name_ = NULL;
    1.70      type->contained_ = NULL;
    1.71 +    type->fields_ = NULL;
    1.72      type->returnType_ = returnType;
    1.73      type->parameters_ = parameters;
    1.74      type->variadicNative_ = variadic;