/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. * Use of this file is governed by the BSD 3-clause license that * can be found in the LICENSE.txt file in the project root. */ #pragma once #include "antlr4-common.h" namespace antlr4 { namespace tree { class ParseTree; namespace xpath { class ANTLR4CPP_PUBLIC XPathElement { public: /// Construct element like {@code /ID} or {@code ID} or {@code /*} etc... /// op is null if just node XPathElement(const std::string &nodeName); XPathElement(XPathElement const&) = default; virtual ~XPathElement(); XPathElement& operator=(XPathElement const&) = default; /// Given tree rooted at {@code t} return all nodes matched by this path /// element. virtual std::vector evaluate(ParseTree *t); virtual std::string toString() const; void setInvert(bool value); protected: std::string _nodeName; bool _invert = false; }; } // namespace xpath } // namespace tree } // namespace antlr4