Added runtime support for default arguments.
1 /* vim: set ts=4 sw=4 tw=99 et:
3 * Copyright (C) 2012 David Anderson
5 * This file is part of SourcePawn.
7 * SourcePawn is free software: you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License as published by the Free
9 * Software Foundation, either version 3 of the License, or (at your option)
12 * SourcePawn is distributed in the hope that it will be useful, but WITHOUT ANY
13 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along with
17 * SourcePawn. If not, see http://www.gnu.org/licenses/.
19 #ifndef _include_jitcraft_type_manager_h_
20 #define _include_jitcraft_type_manager_h_
24 #include "VirtualObjectVisitor.h"
34 // Primitive type cache.
35 Unbarriered<Type> voidType_;
36 Unbarriered<Type> uncheckedType_;
37 Unbarriered<Type> primitiveTypes_[PrimitiveTypes_Total];
38 Unbarriered<Type> referenceTypes_[PrimitiveTypes_Total];
41 TypeManager(Zone *zone);
45 Type *getPrimitive(PrimitiveType type) {
46 return primitiveTypes_[type];
52 Type *getUnchecked() {
53 return uncheckedType_;
55 Type *getReference(Handle<Type> type, bool isConst);
56 Type *unsafeArray(Handle<Type> contained, int elements, bool isConst);
57 Type *newEnum(Handle<String> name);
58 Type *newFunction(Handle<Type> returnType, Handle<FixedArray> args,
59 Handle<FixedArray> deafults);
60 Type *newNative(Handle<Type> returnType, Handle<FixedArray> args,
61 Handle<FixedArray> defaults, bool variadic);
62 Type *newStruct(Handle<String> name, Handle<FixedArray> fields, Handle<Map> newMap);
64 void accept(VirtualObjectVisitor *visitor);
69 #endif // _include_jitcraft_type_manager_h_