summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauro Oyen <15063951+laurooyen@users.noreply.github.com>2024-12-02 20:46:43 +0100
committerGitHub <noreply@github.com>2024-12-02 11:46:43 -0800
commiteaa8dcfcc9deabb906cc09bf31fc17ab6f343ff4 (patch)
tree8e0f4658de3efb5e7696e8588c55471f9d65ba18
parent7aaf7009e2c6055a714ba4a93ab3dd73d2d2cdb7 (diff)
Move c++ parsing code from slang-cpp-extractor to static library (#5675)
* Move c++ parsing code from slang-cpp-extractor to static library * Format code * Remove relative includes --------- Co-authored-by: slangbot <ellieh+slangbot@nvidia.com> Co-authored-by: Yong He <yonghe@outlook.com>
-rw-r--r--tools/CMakeLists.txt10
-rw-r--r--tools/slang-cpp-extractor/cpp-extractor-main.cpp40
-rw-r--r--tools/slang-cpp-extractor/macro-writer.cpp22
-rw-r--r--tools/slang-cpp-extractor/macro-writer.h14
-rw-r--r--tools/slang-cpp-extractor/unit-test.h17
-rw-r--r--tools/slang-cpp-parser/diagnostic-defs.h (renamed from tools/slang-cpp-extractor/diagnostic-defs.h)2
-rw-r--r--tools/slang-cpp-parser/diagnostics.cpp (renamed from tools/slang-cpp-extractor/diagnostics.cpp)4
-rw-r--r--tools/slang-cpp-parser/diagnostics.h (renamed from tools/slang-cpp-extractor/diagnostics.h)11
-rw-r--r--tools/slang-cpp-parser/file-util.cpp (renamed from tools/slang-cpp-extractor/file-util.cpp)6
-rw-r--r--tools/slang-cpp-parser/file-util.h (renamed from tools/slang-cpp-extractor/file-util.h)9
-rw-r--r--tools/slang-cpp-parser/identifier-lookup.cpp (renamed from tools/slang-cpp-extractor/identifier-lookup.cpp)4
-rw-r--r--tools/slang-cpp-parser/identifier-lookup.h (renamed from tools/slang-cpp-extractor/identifier-lookup.h)9
-rw-r--r--tools/slang-cpp-parser/node-tree.cpp (renamed from tools/slang-cpp-extractor/node-tree.cpp)8
-rw-r--r--tools/slang-cpp-parser/node-tree.h (renamed from tools/slang-cpp-extractor/node-tree.h)11
-rw-r--r--tools/slang-cpp-parser/node.cpp (renamed from tools/slang-cpp-extractor/node.cpp)8
-rw-r--r--tools/slang-cpp-parser/node.h (renamed from tools/slang-cpp-extractor/node.h)11
-rw-r--r--tools/slang-cpp-parser/options.cpp (renamed from tools/slang-cpp-extractor/options.cpp)4
-rw-r--r--tools/slang-cpp-parser/options.h (renamed from tools/slang-cpp-extractor/options.h)12
-rw-r--r--tools/slang-cpp-parser/parser.cpp (renamed from tools/slang-cpp-extractor/parser.cpp)10
-rw-r--r--tools/slang-cpp-parser/parser.h (renamed from tools/slang-cpp-extractor/parser.h)11
-rw-r--r--tools/slang-cpp-parser/unit-test.cpp (renamed from tools/slang-cpp-extractor/unit-test.cpp)12
-rw-r--r--tools/slang-cpp-parser/unit-test.h14
22 files changed, 115 insertions, 134 deletions
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 8438fe6b8..900101a39 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -49,6 +49,7 @@ generator(
USE_FEWER_WARNINGS
LINK_WITH_PRIVATE
compiler-core
+ slang-cpp-parser
)
generator(slang-embed)
generator(slang-generate USE_FEWER_WARNINGS)
@@ -68,6 +69,15 @@ generator(
Threads::Threads
)
+slang_add_target(
+ slang-cpp-parser
+ STATIC
+ USE_FEWER_WARNINGS
+ LINK_WITH_PRIVATE core compiler-core
+ INCLUDE_DIRECTORIES_PUBLIC .
+ FOLDER generators
+)
+
#
# Language Server
#
diff --git a/tools/slang-cpp-extractor/cpp-extractor-main.cpp b/tools/slang-cpp-extractor/cpp-extractor-main.cpp
index a4573a8e4..bd7787162 100644
--- a/tools/slang-cpp-extractor/cpp-extractor-main.cpp
+++ b/tools/slang-cpp-extractor/cpp-extractor-main.cpp
@@ -1,27 +1,27 @@
// main.cpp
-#include "../../source/compiler-core/slang-diagnostic-sink.h"
-#include "../../source/compiler-core/slang-doc-extractor.h"
-#include "../../source/compiler-core/slang-lexer.h"
-#include "../../source/compiler-core/slang-name-convention-util.h"
-#include "../../source/compiler-core/slang-name.h"
-#include "../../source/compiler-core/slang-source-loc.h"
-#include "../../source/core/slang-file-system.h"
-#include "../../source/core/slang-io.h"
-#include "../../source/core/slang-list.h"
-#include "../../source/core/slang-secure-crt.h"
-#include "../../source/core/slang-string-slice-pool.h"
-#include "../../source/core/slang-string-util.h"
-#include "../../source/core/slang-string.h"
-#include "../../source/core/slang-writer.h"
-#include "diagnostics.h"
-#include "file-util.h"
+#include "compiler-core/slang-diagnostic-sink.h"
+#include "compiler-core/slang-doc-extractor.h"
+#include "compiler-core/slang-lexer.h"
+#include "compiler-core/slang-name-convention-util.h"
+#include "compiler-core/slang-name.h"
+#include "compiler-core/slang-source-loc.h"
+#include "core/slang-file-system.h"
+#include "core/slang-io.h"
+#include "core/slang-list.h"
+#include "core/slang-secure-crt.h"
+#include "core/slang-string-slice-pool.h"
+#include "core/slang-string-util.h"
+#include "core/slang-string.h"
+#include "core/slang-writer.h"
#include "macro-writer.h"
-#include "node.h"
-#include "options.h"
-#include "parser.h"
#include "slang-com-helper.h"
-#include "unit-test.h"
+#include "slang-cpp-parser/diagnostics.h"
+#include "slang-cpp-parser/file-util.h"
+#include "slang-cpp-parser/node.h"
+#include "slang-cpp-parser/options.h"
+#include "slang-cpp-parser/parser.h"
+#include "slang-cpp-parser/unit-test.h"
#include <stdio.h>
#include <stdlib.h>
diff --git a/tools/slang-cpp-extractor/macro-writer.cpp b/tools/slang-cpp-extractor/macro-writer.cpp
index 3f0e0a5fa..324a48efd 100644
--- a/tools/slang-cpp-extractor/macro-writer.cpp
+++ b/tools/slang-cpp-extractor/macro-writer.cpp
@@ -1,22 +1,20 @@
#include "macro-writer.h"
-#include "../../source/core/slang-list.h"
-#include "../../source/core/slang-string.h"
+#include "compiler-core/slang-diagnostic-sink.h"
+#include "core/slang-io.h"
+#include "core/slang-list.h"
+#include "core/slang-string.h"
+#include "core/slang-writer.h"
#include "slang-com-helper.h"
-// #include "../../source/core/slang-string-util.h"
-#include "../../source/compiler-core/slang-diagnostic-sink.h"
-#include "../../source/core/slang-io.h"
-#include "../../source/core/slang-writer.h"
-// #include "../../source/compiler-core/slang-name.h"
-
-#include "diagnostics.h"
-#include "file-util.h"
-#include "node-tree.h"
-#include "options.h"
+#include "slang-cpp-parser/diagnostics.h"
+#include "slang-cpp-parser/file-util.h"
+#include "slang-cpp-parser/node-tree.h"
+#include "slang-cpp-parser/options.h"
namespace CppExtract
{
using namespace Slang;
+using namespace CppParse;
SLANG_FORCE_INLINE static void _indent(Index indentCount, StringBuilder& out)
{
diff --git a/tools/slang-cpp-extractor/macro-writer.h b/tools/slang-cpp-extractor/macro-writer.h
index 0cbf85fb3..aa23c96ef 100644
--- a/tools/slang-cpp-extractor/macro-writer.h
+++ b/tools/slang-cpp-extractor/macro-writer.h
@@ -1,14 +1,14 @@
-#ifndef CPP_EXTRACT_MACRO_WRITER_H
-#define CPP_EXTRACT_MACRO_WRITER_H
+#pragma once
-#include "../../source/compiler-core/slang-diagnostic-sink.h"
-#include "diagnostics.h"
-#include "node-tree.h"
-#include "options.h"
+#include "compiler-core/slang-diagnostic-sink.h"
+#include "slang-cpp-parser/diagnostics.h"
+#include "slang-cpp-parser/node-tree.h"
+#include "slang-cpp-parser/options.h"
namespace CppExtract
{
using namespace Slang;
+using namespace CppParse;
/* A class that writes out macros that define type hierarchies, as well as fields of types */
class MacroWriter
@@ -39,5 +39,3 @@ protected:
};
} // namespace CppExtract
-
-#endif
diff --git a/tools/slang-cpp-extractor/unit-test.h b/tools/slang-cpp-extractor/unit-test.h
deleted file mode 100644
index fd3ab1328..000000000
--- a/tools/slang-cpp-extractor/unit-test.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef CPP_EXTRACT_UNIT_TEST_H
-#define CPP_EXTRACT_UNIT_TEST_H
-
-#include "diagnostics.h"
-
-namespace CppExtract
-{
-using namespace Slang;
-
-struct UnitTestUtil
-{
- static SlangResult run();
-};
-
-} // namespace CppExtract
-
-#endif
diff --git a/tools/slang-cpp-extractor/diagnostic-defs.h b/tools/slang-cpp-parser/diagnostic-defs.h
index 03ba88dd3..cba5a8e6f 100644
--- a/tools/slang-cpp-extractor/diagnostic-defs.h
+++ b/tools/slang-cpp-parser/diagnostic-defs.h
@@ -14,7 +14,7 @@
// for any arguments.
#ifndef DIAGNOSTIC
-#error Need to #define DIAGNOSTIC(...) before including "slang-cpp-extractor-diagnostics-defs.h"
+#error Need to #define DIAGNOSTIC(...) before including "slang-cpp-parser/diagnostics-defs.h"
#define DIAGNOSTIC(id, severity, name, messageFormat) /* */
#endif
diff --git a/tools/slang-cpp-extractor/diagnostics.cpp b/tools/slang-cpp-parser/diagnostics.cpp
index 782e5e9da..10455a9ff 100644
--- a/tools/slang-cpp-extractor/diagnostics.cpp
+++ b/tools/slang-cpp-parser/diagnostics.cpp
@@ -1,6 +1,6 @@
#include "diagnostics.h"
-namespace CppExtract
+namespace CppParse
{
namespace CPPDiagnostics
@@ -12,4 +12,4 @@ using namespace Slang;
#include "diagnostic-defs.h"
} // namespace CPPDiagnostics
-} // namespace CppExtract
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/diagnostics.h b/tools/slang-cpp-parser/diagnostics.h
index cb3bd342b..4db70fbca 100644
--- a/tools/slang-cpp-extractor/diagnostics.h
+++ b/tools/slang-cpp-parser/diagnostics.h
@@ -1,9 +1,8 @@
-#ifndef CPP_EXTRACT_DIAGNOSTICS_H
-#define CPP_EXTRACT_DIAGNOSTICS_H
+#pragma once
-#include "../../source/slang/slang-diagnostics.h"
+#include "slang/slang-diagnostics.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -14,6 +13,4 @@ namespace CPPDiagnostics
#include "diagnostic-defs.h"
} // namespace CPPDiagnostics
-} // namespace CppExtract
-
-#endif
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/file-util.cpp b/tools/slang-cpp-parser/file-util.cpp
index 2980a22ce..9e7c60755 100644
--- a/tools/slang-cpp-extractor/file-util.cpp
+++ b/tools/slang-cpp-parser/file-util.cpp
@@ -1,8 +1,8 @@
#include "file-util.h"
-#include "../../source/core/slang-io.h"
+#include "core/slang-io.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -98,4 +98,4 @@ struct DiagnosticReporter
}
}
-} // namespace CppExtract
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/file-util.h b/tools/slang-cpp-parser/file-util.h
index 201825973..735758384 100644
--- a/tools/slang-cpp-extractor/file-util.h
+++ b/tools/slang-cpp-parser/file-util.h
@@ -1,9 +1,8 @@
-#ifndef CPP_EXTRACT_FILE_UTIL_H
-#define CPP_EXTRACT_FILE_UTIL_H
+#pragma once
#include "diagnostics.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -29,6 +28,4 @@ struct FileUtil
static void indent(Index indentCount, StringBuilder& out);
};
-} // namespace CppExtract
-
-#endif
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/identifier-lookup.cpp b/tools/slang-cpp-parser/identifier-lookup.cpp
index c7255aa1f..3a704a454 100644
--- a/tools/slang-cpp-extractor/identifier-lookup.cpp
+++ b/tools/slang-cpp-parser/identifier-lookup.cpp
@@ -1,6 +1,6 @@
#include "identifier-lookup.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -174,4 +174,4 @@ void IdentifierLookup::initDefault(const UnownedStringSlice& markPrefix)
}
}
-} // namespace CppExtract
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/identifier-lookup.h b/tools/slang-cpp-parser/identifier-lookup.h
index f26220f1f..226d00667 100644
--- a/tools/slang-cpp-extractor/identifier-lookup.h
+++ b/tools/slang-cpp-parser/identifier-lookup.h
@@ -1,9 +1,8 @@
-#ifndef CPP_EXTRACT_IDENTIFIER_LOOKUP_H
-#define CPP_EXTRACT_IDENTIFIER_LOOKUP_H
+#pragma once
#include "diagnostics.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -119,6 +118,4 @@ SLANG_FORCE_INLINE bool hasFlag(IdentifierStyle style, IdentifierFlag::Enum flag
return (getFlags(style) & flag) != 0;
}
-} // namespace CppExtract
-
-#endif
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/node-tree.cpp b/tools/slang-cpp-parser/node-tree.cpp
index 6b543ad31..e48ce9779 100644
--- a/tools/slang-cpp-extractor/node-tree.cpp
+++ b/tools/slang-cpp-parser/node-tree.cpp
@@ -1,11 +1,11 @@
#include "node-tree.h"
-#include "../../source/compiler-core/slang-name-convention-util.h"
-#include "../../source/core/slang-io.h"
+#include "compiler-core/slang-name-convention-util.h"
+#include "core/slang-io.h"
#include "identifier-lookup.h"
#include "options.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -173,4 +173,4 @@ SlangResult NodeTree::calcDerivedTypes(DiagnosticSink* sink)
}
-} // namespace CppExtract
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/node-tree.h b/tools/slang-cpp-parser/node-tree.h
index f1547dbc1..8911d0d71 100644
--- a/tools/slang-cpp-extractor/node-tree.h
+++ b/tools/slang-cpp-parser/node-tree.h
@@ -1,12 +1,11 @@
-#ifndef CPP_EXTRACT_NODE_TREE_H
-#define CPP_EXTRACT_NODE_TREE_H
+#pragma once
-#include "../../source/compiler-core/slang-lexer.h"
+#include "compiler-core/slang-lexer.h"
#include "diagnostics.h"
#include "identifier-lookup.h"
#include "node.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -99,6 +98,4 @@ protected:
List<RefPtr<SourceOrigin>> m_sourceOrigins;
};
-} // namespace CppExtract
-
-#endif
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/node.cpp b/tools/slang-cpp-parser/node.cpp
index 4598e34c9..16484ead3 100644
--- a/tools/slang-cpp-extractor/node.cpp
+++ b/tools/slang-cpp-parser/node.cpp
@@ -1,10 +1,10 @@
#include "node.h"
-#include "../../source/core/slang-string-escape-util.h"
-#include "../../source/core/slang-string-util.h"
+#include "core/slang-string-escape-util.h"
+#include "core/slang-string-util.h"
#include "file-util.h"
-namespace CppExtract
+namespace CppParse
{
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Node Impl
@@ -697,4 +697,4 @@ void ClassLikeNode::dump(int indentCount, StringBuilder& out)
out << "}\n";
}
-} // namespace CppExtract
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/node.h b/tools/slang-cpp-parser/node.h
index 2c15e460d..4dad9473e 100644
--- a/tools/slang-cpp-extractor/node.h
+++ b/tools/slang-cpp-parser/node.h
@@ -1,10 +1,9 @@
-#ifndef CPP_EXTRACT_NODE_H
-#define CPP_EXTRACT_NODE_H
+#pragma once
-#include "../../source/compiler-core/slang-doc-extractor.h"
+#include "compiler-core/slang-doc-extractor.h"
#include "diagnostics.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -420,6 +419,4 @@ T* as(Node* node)
return (node && T::isOfKind(node->m_kind)) ? static_cast<T*>(node) : nullptr;
}
-} // namespace CppExtract
-
-#endif
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/options.cpp b/tools/slang-cpp-parser/options.cpp
index 17ff5eebc..8be319e7b 100644
--- a/tools/slang-cpp-extractor/options.cpp
+++ b/tools/slang-cpp-parser/options.cpp
@@ -2,7 +2,7 @@
#include "diagnostics.h"
-namespace CppExtract
+namespace CppParse
{
SlangResult OptionsParser::_parseArgFlag(const char* option, bool& outFlag)
@@ -150,4 +150,4 @@ SlangResult OptionsParser::parse(
return SLANG_OK;
}
-} // namespace CppExtract
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/options.h b/tools/slang-cpp-parser/options.h
index 8231d5e3b..c1cbb1a27 100644
--- a/tools/slang-cpp-extractor/options.h
+++ b/tools/slang-cpp-parser/options.h
@@ -1,9 +1,8 @@
-#ifndef CPP_EXTRACT_OPTIONS_H
-#define CPP_EXTRACT_OPTIONS_H
+#pragma once
-#include "../../source/slang/slang-diagnostics.h"
+#include "slang/slang-diagnostics.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -61,7 +60,4 @@ struct OptionsParser
DiagnosticSink* m_sink;
};
-
-} // namespace CppExtract
-
-#endif
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/parser.cpp b/tools/slang-cpp-parser/parser.cpp
index 3a4891829..1edc38ac7 100644
--- a/tools/slang-cpp-extractor/parser.cpp
+++ b/tools/slang-cpp-parser/parser.cpp
@@ -1,12 +1,12 @@
#include "parser.h"
-#include "../../source/compiler-core/slang-name-convention-util.h"
-#include "../../source/core/slang-io.h"
-#include "../../source/core/slang-string-util.h"
+#include "compiler-core/slang-name-convention-util.h"
+#include "core/slang-io.h"
+#include "core/slang-string-util.h"
#include "identifier-lookup.h"
#include "options.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -2258,4 +2258,4 @@ SlangResult Parser::parse(SourceOrigin* sourceOrigin, const Options* options)
}
}
-} // namespace CppExtract
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/parser.h b/tools/slang-cpp-parser/parser.h
index 605a0d8be..519ad6935 100644
--- a/tools/slang-cpp-extractor/parser.h
+++ b/tools/slang-cpp-parser/parser.h
@@ -1,13 +1,12 @@
-#ifndef CPP_EXTRACT_PARSER_H
-#define CPP_EXTRACT_PARSER_H
+#pragma once
-#include "../../source/compiler-core/slang-lexer.h"
+#include "compiler-core/slang-lexer.h"
#include "diagnostics.h"
#include "identifier-lookup.h"
#include "node-tree.h"
#include "node.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -110,6 +109,4 @@ protected:
const Options* m_options;
};
-} // namespace CppExtract
-
-#endif
+} // namespace CppParse
diff --git a/tools/slang-cpp-extractor/unit-test.cpp b/tools/slang-cpp-parser/unit-test.cpp
index 3c0edac3c..70851fd7c 100644
--- a/tools/slang-cpp-extractor/unit-test.cpp
+++ b/tools/slang-cpp-parser/unit-test.cpp
@@ -1,15 +1,15 @@
#include "unit-test.h"
-#include "../../source/compiler-core/slang-lexer.h"
-#include "../../source/compiler-core/slang-name-convention-util.h"
-#include "../../source/compiler-core/slang-source-loc.h"
-#include "../../source/core/slang-io.h"
+#include "compiler-core/slang-lexer.h"
+#include "compiler-core/slang-name-convention-util.h"
+#include "compiler-core/slang-source-loc.h"
+#include "core/slang-io.h"
#include "identifier-lookup.h"
#include "node-tree.h"
#include "options.h"
#include "parser.h"
-namespace CppExtract
+namespace CppParse
{
using namespace Slang;
@@ -124,4 +124,4 @@ static const char someSource[] = "class ISomeInterface\n"
return SLANG_OK;
}
-} // namespace CppExtract
+} // namespace CppParse
diff --git a/tools/slang-cpp-parser/unit-test.h b/tools/slang-cpp-parser/unit-test.h
new file mode 100644
index 000000000..e8d1b53b2
--- /dev/null
+++ b/tools/slang-cpp-parser/unit-test.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "diagnostics.h"
+
+namespace CppParse
+{
+using namespace Slang;
+
+struct UnitTestUtil
+{
+ static SlangResult run();
+};
+
+} // namespace CppParse