]> git.tdb.fi Git - libs/gl.git/blob - source/core/module.cpp
Split Module into a base class and format-specific class
[libs/gl.git] / source / core / module.cpp
1 #include <msp/io/print.h>
2 #include "module.h"
3 #include "resources.h"
4
5 using namespace std;
6
7 namespace Msp {
8 namespace GL {
9
10 void Module::set_source(const string &src)
11 {
12         SL::Compiler compiler;
13         compiler.set_source(src);
14         compile(compiler);
15 }
16
17 void Module::load_source(IO::Base &io, Resources *res, const string &name)
18 {
19         SL::Compiler compiler;
20         compiler.load_source(io, res, name);
21         compile(compiler);
22 }
23
24 void Module::load_source(IO::Base &io, const string &name)
25 {
26         load_source(io, 0, name);
27 }
28
29
30 void GlslModule::compile(SL::Compiler &compiler)
31 {
32         compiler.compile(SL::Compiler::MODULE);
33         prepared_source = compiler.get_combined_glsl();
34         source_map = compiler.get_source_map();
35 #ifdef DEBUG
36         string diagnostics = compiler.get_diagnostics();
37         if(!diagnostics.empty())
38                 IO::print("Module diagnostics:\n%s\n", diagnostics);
39 #endif
40 }
41
42 } // namespace GL
43 } // namespace Msp