Skip to content

Commit f9b70f5

Browse files
committed
Split enums into a seperate object
1 parent 84cc1fb commit f9b70f5

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

ScalaBindgen.cpp

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ class TreeVisitor : public clang::RecursiveASTVisitor<TreeVisitor> {
8787
int i = 0;
8888
for (const clang::EnumConstantDecl* en : enumdecl->enumerators()){
8989
if(name != ""){
90-
declarations += "\tfinal val enum_" + name + "_" + en->getNameAsString() + " = " + std::to_string(i++) + "\n";
90+
enums += "\tfinal val enum_" + name + "_" + en->getNameAsString() + " = " + std::to_string(i++) + "\n";
9191
} else {
92-
declarations += "\tfinal val enum_" + en->getNameAsString() + " = " + std::to_string(i++) + "\n";
92+
enums += "\tfinal val enum_" + en->getNameAsString() + " = " + std::to_string(i++) + "\n";
9393
}
9494
}
9595

@@ -255,12 +255,22 @@ int main(int argc, const char **argv) {
255255

256256
int result = Tool.run(clang::tooling::newFrontendActionFactory<ExampleFrontendAction>().get());
257257

258-
llvm::outs() << "import scala.scalanative._\n";
259-
llvm::outs() << "import scala.scalanative.native.Nat._\n\n";
260-
llvm::outs() << "@native.link(\"" << lib << "\")\n";
261-
llvm::outs() << "@native.extern\nobject " << lib<< " {\n";
262-
llvm::outs() << declarations;
263-
llvm::outs() << "}\n";
258+
llvm::outs() << "import scala.scalanative._\n"
259+
<< "import scala.scalanative.native.Nat._\n\n";
260+
261+
if(declarations != ""){
262+
llvm::outs() << "@native.link(\"" << lib << "\")\n"
263+
<< "@native.extern\n"
264+
<< "object " << lib << " {\n"
265+
<< declarations
266+
<< "}\n\n";
267+
}
268+
269+
if(enums != ""){
270+
llvm::outs() << "object " << lib << "Enums {\n"
271+
<< enums
272+
<< "}\n";
273+
}
264274

265275
return result;
266276
}

0 commit comments

Comments
 (0)