diff options
Diffstat (limited to 'tools/slang-cpp-extractor/parser.h')
| -rw-r--r-- | tools/slang-cpp-extractor/parser.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/tools/slang-cpp-extractor/parser.h b/tools/slang-cpp-extractor/parser.h index 5ed862d65..4815821c5 100644 --- a/tools/slang-cpp-extractor/parser.h +++ b/tools/slang-cpp-extractor/parser.h @@ -33,6 +33,11 @@ public: void setKindEnabled(Node::Kind kind, bool isEnabled = true); bool isTypeEnabled(Node::Kind kind) { return (m_nodeTypeEnabled & (NodeTypeBitType(1) << int(kind))) != 0; } + + /// If set classes require a 'marker' to be reflected + void setRequireMarker(bool requireMarker) { m_requireMarker = requireMarker; } + bool getRequireMarker() const { return m_requireMarker; } + void setKindsEnabled(const Node::Kind* kinds, Index kindsCount, bool isEnabled = true); Parser(NodeTree* nodeTree, DiagnosticSink* sink); @@ -48,14 +53,17 @@ protected: SlangResult _parseTypeSet(); SlangResult _maybeParseNode(Node::Kind kind); - SlangResult _maybeParseField(); + SlangResult _maybeParseContained(Node** outNode); SlangResult _parseTypeDef(); SlangResult _parseEnum(); + SlangResult _parseMarker(); SlangResult _maybeParseType(List<Token>& outToks); SlangResult _maybeParseType(UnownedStringSlice& outType); + SlangResult _parseExpression(List<Token>& outExprTokens); + SlangResult _maybeParseType(Index& ioTemplateDepth); SlangResult _maybeParseTemplateArgs(Index& ioTemplateDepth); SlangResult _maybeParseTemplateArg(Index& ioTemplateDepth); @@ -66,9 +74,14 @@ protected: /// Concatenate all tokens from start to the current position UnownedStringSlice _concatTokens(TokenReader::ParsingCursor start); + /// Consume what looks like a template definition + SlangResult _consumeTemplate(); + void _consumeTypeModifiers(); SlangResult _consumeToSync(); + /// Consumes balanced parens. Will return an error if not matched. Assumes starts on opening ( + SlangResult _consumeBalancedParens(); NodeTypeBitType m_nodeTypeEnabled; @@ -82,6 +95,8 @@ protected: NodeTree* m_nodeTree; ///< Shared state between parses. Nodes will be added to this + bool m_requireMarker = true; + const Options* m_options; }; |
