summaryrefslogtreecommitdiffstats
path: root/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp')
-rw-r--r--tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp b/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp
index f5724b7b6..9dd05ac78 100644
--- a/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp
+++ b/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp
@@ -1889,6 +1889,9 @@ SlangResult CPPExtractorApp::calcHeader(CPPExtractor& extractor, StringBuilder&
typeIndex++;
}
+ _indent(1, out);
+ out << "CountOf\n";
+
out << "};\n\n";
}
@@ -1968,7 +1971,7 @@ SlangResult CPPExtractorApp::calcHeader(CPPExtractor& extractor, StringBuilder&
// Output all of the definitions for each type
for (Node* node : nodes)
{
- out << "#define SLANG_" << reflectTypeName << "_" << node->m_name.Content << "(x, param) ";
+ out << "#define " << m_options.m_prefixMark << reflectTypeName << "_" << node->m_name.Content << "(x, param) ";
// Output the X macro part
_indent(1, out);
@@ -2027,6 +2030,7 @@ SlangResult CPPExtractorApp::calcHeader(CPPExtractor& extractor, StringBuilder&
}
}
+
// Now pop the scope in revers
for (Index j = baseScopePath.getCount() - 1; j >= 0; j--)
{
@@ -2035,6 +2039,27 @@ SlangResult CPPExtractorApp::calcHeader(CPPExtractor& extractor, StringBuilder&
}
}
+ // Do macros by origin
+
+ out << "// Origin macros\n\n";
+
+ for (SourceOrigin* origin : extractor.getSourceOrigins())
+ {
+ out << "#define " << m_options.m_prefixMark << "ORIGIN_" << origin->m_macroOrigin << "_" << reflectTypeName << "(x, param) \\\n";
+
+ for (Node* node : origin->m_nodes)
+ {
+ if (!(node->m_isReflected && node->isClassLike()))
+ {
+ continue;
+ }
+
+ _indent(1, out);
+ out << "x(" << node->m_name.Content << ", param) \\\n";
+ }
+ out << "/* */\n\n";
+ }
+
return SLANG_OK;
}