module(0)
{ }
-void ProgramCompiler::compile(const string &source)
+void ProgramCompiler::compile(const string &source, const string &src_name)
{
resources = 0;
- module = &parser.parse(source);
+ module = &parser.parse(source, src_name);
process();
}
-void ProgramCompiler::compile(IO::Base &io, Resources *res)
+void ProgramCompiler::compile(IO::Base &io, Resources *res, const string &src_name)
{
resources = res;
- module = &parser.parse(io);
+ module = &parser.parse(io, src_name);
process();
}
+void ProgramCompiler::compile(IO::Base &io, const string &src_name)
+{
+ compile(io, 0, src_name);
+}
+
void ProgramCompiler::add_shaders(Program &program)
{
if(!module)
Module *ProgramCompiler::create_builtins_module()
{
ProgramParser parser;
- Module *module = new Module(parser.parse(builtins_src));
+ Module *module = new Module(parser.parse(builtins_src, "<builtin>"));
for(list<Stage>::iterator i=module->stages.begin(); i!=module->stages.end(); ++i)
{
VariableResolver resolver;
if(!io)
throw runtime_error(format("module %s not found", name));
ProgramParser import_parser;
- Module &imported_module = import_parser.parse(*io);
+ Module &imported_module = import_parser.parse(*io, fn);
inject_block(module->shared.content, imported_module.shared.content);
apply<DeclarationCombiner>(module->shared);