blob: f77e78286896fd006ac69a71f0880a3e89d279a7 [file] [log] [blame]
#include "slang.hpp"
namespace slang {
/* Following are the API we provide for using slang compiler */
extern "C" SlangCompiler* slangCreateCompiler(const char* targetTriple, const char* targetCPU, const char** targetFeatures) {
Slang* slang = new Slang(targetTriple, targetCPU, targetFeatures);
return (SlangCompiler*) slang;
}
extern "C" void slangAllowRSPrefix(SlangCompiler* compiler) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
slang->allowRSPrefix();
}
extern "C" int slangSetSourceFromMemory(SlangCompiler* compiler, const char* text, size_t textLength) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
return slang->setInputSource("<in memory>", text, textLength);
else
return 0;
}
extern "C" int slangSetSourceFromFile(SlangCompiler* compiler, const char* fileName) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
return slang->setInputSource(fileName);
else
return 0;
}
extern "C" void slangSetOutputType(SlangCompiler* compiler, SlangCompilerOutputTy outputType) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
slang->setOutputType(outputType);
return;
}
extern "C" int slangSetOutputToStream(SlangCompiler* compiler, FILE* stream) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
return slang->setOutput(stream);
else
return 0;
}
extern "C" int slangSetOutputToFile(SlangCompiler* compiler, const char* fileName) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
return slang->setOutput(fileName);
else
return 0;
}
extern "C" int slangCompile(SlangCompiler* compiler) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
return slang->compile();
else
return 0;
}
extern "C" int slangReflectToJava(SlangCompiler* compiler, const char* packageName) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
return slang->reflectToJava(packageName);
else
return 0;
}
extern "C" int slangReflectToJavaPath(SlangCompiler* compiler, const char* pathName) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
return slang->reflectToJavaPath(pathName);
else
return 0;
}
extern "C" const char* slangGetInfoLog(SlangCompiler* compiler) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
return slang->getErrorMessage();
else
return "";
}
extern "C" void slangGetPragmas(SlangCompiler* compiler, size_t* actualStringCount, size_t maxStringCount, char** strings) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
slang->getPragmas(actualStringCount, maxStringCount, strings);
return;
}
extern "C" const char* slangExportFuncs(SlangCompiler* compiler) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
return slang->exportFuncs();
return NULL;
}
extern "C" void slangReset(SlangCompiler* compiler) {
Slang* slang = (Slang*) compiler;
if(slang != NULL)
slang->reset();
return;
}
} /* namespace slang */