blob: c5b75170b55c0c3b55299637cb8adccdb88acc6c [file] [log] [blame]
Shih-wei Liao462aefd2010-06-04 15:32:04 -07001#include "slang.hpp"
2
3namespace slang {
4
5/* Following are the API we provide for using slang compiler */
6extern "C" SlangCompiler* slangCreateCompiler(const char* targetTriple, const char* targetCPU, const char** targetFeatures) {
7 Slang* slang = new Slang(targetTriple, targetCPU, targetFeatures);
8 return (SlangCompiler*) slang;
9}
10
Kirk Stewart1fd85792010-07-07 09:51:23 -070011extern "C" void slangAllowRSPrefix(SlangCompiler* compiler) {
12 Slang* slang = (Slang*) compiler;
13 if(slang != NULL)
14 slang->allowRSPrefix();
15}
16
Shih-wei Liao462aefd2010-06-04 15:32:04 -070017extern "C" int slangSetSourceFromMemory(SlangCompiler* compiler, const char* text, size_t textLength) {
18 Slang* slang = (Slang*) compiler;
19 if(slang != NULL)
20 return slang->setInputSource("<in memory>", text, textLength);
21 else
22 return 0;
23}
24
25extern "C" int slangSetSourceFromFile(SlangCompiler* compiler, const char* fileName) {
26 Slang* slang = (Slang*) compiler;
27 if(slang != NULL)
28 return slang->setInputSource(fileName);
29 else
30 return 0;
31}
32
33extern "C" void slangSetOutputType(SlangCompiler* compiler, SlangCompilerOutputTy outputType) {
34 Slang* slang = (Slang*) compiler;
35 if(slang != NULL)
36 slang->setOutputType(outputType);
37 return;
38}
39
40extern "C" int slangSetOutputToStream(SlangCompiler* compiler, FILE* stream) {
41 Slang* slang = (Slang*) compiler;
42 if(slang != NULL)
43 return slang->setOutput(stream);
44 else
45 return 0;
46}
47
48extern "C" int slangSetOutputToFile(SlangCompiler* compiler, const char* fileName) {
49 Slang* slang = (Slang*) compiler;
50 if(slang != NULL)
51 return slang->setOutput(fileName);
52 else
53 return 0;
54}
55
56extern "C" int slangCompile(SlangCompiler* compiler) {
57 Slang* slang = (Slang*) compiler;
58 if(slang != NULL)
59 return slang->compile();
60 else
61 return 0;
62}
63
64extern "C" int slangReflectToJava(SlangCompiler* compiler, const char* packageName) {
65 Slang* slang = (Slang*) compiler;
66 if(slang != NULL)
67 return slang->reflectToJava(packageName);
68 else
69 return 0;
70}
71
Shih-wei Liao6de89272010-07-15 15:26:20 -070072extern "C" int slangReflectToJavaPath(SlangCompiler* compiler, const char* pathName) {
73 Slang* slang = (Slang*) compiler;
74 if(slang != NULL)
75 return slang->reflectToJavaPath(pathName);
76 else
77 return 0;
78}
79
Shih-wei Liao462aefd2010-06-04 15:32:04 -070080extern "C" const char* slangGetInfoLog(SlangCompiler* compiler) {
81 Slang* slang = (Slang*) compiler;
82 if(slang != NULL)
83 return slang->getErrorMessage();
84 else
85 return "";
86}
87
88extern "C" void slangGetPragmas(SlangCompiler* compiler, size_t* actualStringCount, size_t maxStringCount, char** strings) {
89 Slang* slang = (Slang*) compiler;
90 if(slang != NULL)
91 slang->getPragmas(actualStringCount, maxStringCount, strings);
92 return;
93}
94
95extern "C" void slangReset(SlangCompiler* compiler) {
96 Slang* slang = (Slang*) compiler;
97 if(slang != NULL)
98 slang->reset();
99 return;
100}
101
102} /* namespace slang */