summaryrefslogtreecommitdiff
path: root/src/core/parser/ParserScope.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/parser/ParserScope.hpp')
-rw-r--r--src/core/parser/ParserScope.hpp33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/core/parser/ParserScope.hpp b/src/core/parser/ParserScope.hpp
index dc1b1bf..7be3c4a 100644
--- a/src/core/parser/ParserScope.hpp
+++ b/src/core/parser/ParserScope.hpp
@@ -145,6 +145,33 @@ public:
/**
* Ascends in the stack starting with the leaf node, returns the first node
+ * that matches the type given in the RttiSet or nullptr if none matches.
+ *
+ * @param types is a set of Rtti types for which should be searched in the
+ * stack.
+ * @param maxDepth is the maximum number of stack entries the selection
+ * function may ascend. A negative value indicates no limitation.
+ * @return the matching node or nullptr if the node was not found.
+ */
+ Rooted<Node> select(RttiSet types, int maxDepth = -1);
+
+ /**
+ * Ascends in the stack starting with the leaf node, returns the first node
+ * that matches the given type or nullptr if none matches.
+ *
+ * @tparam T is the type that should be searched in the stack.
+ * @param maxDepth is the maximum number of stack entries the selection
+ * function may ascend. A negative value indicates no limitation.
+ * @return the matching node or nullptr if the node was not found.
+ */
+ template <class T>
+ Rooted<T> select(int maxDepth = -1)
+ {
+ return select(RttiSet{&typeOf<T>()}, maxDepth).cast<T>();
+ }
+
+ /**
+ * Ascends in the stack starting with the leaf node, returns the first node
* that matches the type given in the RttiSet. Throws an exception if no
* node matches.
*
@@ -154,7 +181,7 @@ public:
* function may ascend. A negative value indicates no limitation.
* @return the matching node.
*/
- Rooted<Node> select(RttiSet types, int maxDepth = -1);
+ Rooted<Node> selectOrThrow(RttiSet types, int maxDepth = -1);
/**
* Ascends in the stack starting with the leaf node, returns the first node
@@ -166,9 +193,9 @@ public:
* @return the matching node.
*/
template <class T>
- Rooted<T> select(int maxDepth = -1)
+ Rooted<T> selectOrThrow(int maxDepth = -1)
{
- return select(RttiSet{&typeOf<T>()}, maxDepth).cast<T>();
+ return selectOrThrow(RttiSet{&typeOf<T>()}, maxDepth).cast<T>();
}
};