7 #ifndef OPENDDS_DCPS_ASTNODEWRAPPER_H 8 #define OPENDDS_DCPS_ASTNODEWRAPPER_H 13 #ifndef OPENDDS_NO_CONTENT_SUBSCRIPTION_PROFILE 15 #include "yard/yard_parser.hpp" 24 typedef yard::TreeBuildingParser<char>::Node
AstNode;
27 inline void reportErrors(yard::SimpleTextParser& parser,
const char* input)
30 for (AstNode* iter = parser.GetAstRoot()->GetFirstChild(); iter;
31 iter = iter->GetSibling()) {
34 ptrdiff_t pos = prev ? prev->GetLastToken() - parser.Begin() : 0;
35 std::ostringstream oss;
37 throw std::runtime_error(
"Invalid expression [" +
OPENDDS_STRING(input)
38 +
"] at character " + oss.str());
44 return iter ?
OPENDDS_STRING(iter->GetFirstToken(), iter->GetLastToken()) :
"";
52 operator AstNode*()
const {
return ptr_; }
keeps the details of yard out of the FilterEvaluator header file
yard::TreeBuildingParser< char >::Node AstNode
OPENDDS_STRING toString(yard::TreeBuildingParser< char >::Node *iter)
AstNode * operator->() const
void reportErrors(yard::SimpleTextParser &parser, const char *input)
called after parsing has failed, throws std::exception with details
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
AstNodeWrapper(AstNode *ptr)
The Internal API and Implementation of OpenDDS.