- Parser parser;
- Module *module = new Module(parser.parse(*io, "<builtin>", BUILTIN_SOURCE));
-
- NodeList<Statement> &shared_body = module->shared.content.body;
-
- RefPtr<BasicTypeDeclaration> type = new BasicTypeDeclaration;
- type->source = BUILTIN_SOURCE;
- type->name = "void";
- type->kind = BasicTypeDeclaration::VOID;
- shared_body.insert(shared_body.begin(), type);
-
- type = new BasicTypeDeclaration;
- type->source = BUILTIN_SOURCE;
- type->name = "bool";
- type->kind = BasicTypeDeclaration::BOOL;
- shared_body.insert(shared_body.begin(), type);
-
- type = new BasicTypeDeclaration;
- type->source = BUILTIN_SOURCE;
- type->name = "int";
- type->size = 32;
- type->kind = BasicTypeDeclaration::INT;
- shared_body.insert(shared_body.begin(), type);
-
- type = new BasicTypeDeclaration;
- type->source = BUILTIN_SOURCE;
- type->name = "float";
- type->size = 32;
- type->kind = BasicTypeDeclaration::FLOAT;
- shared_body.insert(shared_body.begin(), type);
-
- TypeResolver().apply(module->shared);
- for(list<Stage>::iterator i=module->stages.begin(); i!=module->stages.end(); ++i)
- TypeResolver().apply(*i);
+ builtins_module = new Module;
+ add_builtin_type(builtins_module->shared, "void", BasicTypeDeclaration::VOID, 0, true);
+ add_builtin_type(builtins_module->shared, "bool", BasicTypeDeclaration::BOOL, 1, true);
+ add_builtin_type(builtins_module->shared, "int", BasicTypeDeclaration::INT, 32, true);
+ add_builtin_type(builtins_module->shared, "uint", BasicTypeDeclaration::INT, 32, false);
+ add_builtin_type(builtins_module->shared, "float", BasicTypeDeclaration::FLOAT, 32, true);