dvander@0: /* dvander@0: * Copyright (C) 2012 David Anderson dvander@0: * dvander@0: * This file is part of JITCraft. dvander@0: * dvander@0: * JITCraft is free software: you can redistribute it and/or modify it under dvander@0: * the terms of the GNU General Public License as published by the Free dvander@0: * Software Foundation, either version 3 of the License, or (at your option) dvander@0: * any later version. dvander@0: * dvander@0: * Foobar is distributed in the hope that it will be useful, but WITHOUT ANY dvander@0: * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS dvander@0: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. dvander@0: * dvander@0: * You should have received a copy of the GNU General Public License along with dvander@0: * JITCraft. If not, see http://www.gnu.org/licenses/. dvander@0: */ dvander@0: #include "Types.h" dvander@0: dvander@0: using namespace jc; dvander@0: dvander@0: Type * dvander@4: Type::NewPrimitive(Name *tag) dvander@0: { dvander@0: Type *type = new Type; dvander@0: type->kind_ = PRIMITIVE; dvander@0: type->tag_ = tag; dvander@0: dvander@4: if (tag && strcmp(tag, "Float") == 0) dvander@4: type->primitive_ = PrimitiveType_Float; dvander@4: else dvander@4: type->primitive_ = PrimitiveType_Int32; dvander@4: return type; dvander@4: } dvander@4: dvander@4: Type * dvander@4: Type::NewPrimitive(PrimitiveType prim) dvander@4: { dvander@4: Type *type = new Type; dvander@4: type->kind_ = PRIMITIVE; dvander@4: type->tag_ = NULL; dvander@4: type->primitive_ = prim; dvander@0: return type; dvander@0: } dvander@0: dvander@0: Type * dvander@0: Type::NewUnsafeArray(Type *contained, int elements) dvander@0: { dvander@0: Type *type = new Type; dvander@0: type->kind_ = UNSAFE_ARRAY; dvander@0: type->contained_ = contained; dvander@0: type->elements_ = elements; dvander@0: if (contained->isPrimitive()) dvander@0: type->levels_ = 1; dvander@0: else dvander@0: type->levels_ = contained->levels() + 1; dvander@0: return type; dvander@0: }