/* * Copyright (c) 2001-2006 * DecisionSoft Limited. All rights reserved. * Copyright (c) 2004-2006 * Progress Software Corporation. All rights reserved. * Copyright (c) 2004-2006 * Oracle. All rights reserved. * * See the file LICENSE for redistribution information. * * $Id: Match.hpp,v 1.2 2006/11/01 16:37:12 jpcs Exp $ */ #ifndef _MATCH_HPP #define _MATCH_HPP #include #include #include #include class XQILLA_API StringMatch { public: StringMatch() : queryString(0), queryPos(0), tokenInfo(0), startToken(false), endToken(false) {} StringMatch(const XMLCh *qString, unsigned int qPos, const TokenInfo::Ptr &tInfo) : queryString(qString), queryPos(qPos), tokenInfo(tInfo), startToken(false), endToken(false) {} const XMLCh *queryString; unsigned int queryPos; TokenInfo::Ptr tokenInfo; bool startToken, endToken; }; typedef std::vector StringMatches; class XQILLA_API Match : public ReferenceCounted { public: typedef RefCountPointer Ptr; Match() {} const StringMatches &getStringIncludes() const { return includes_; } const StringMatches &getStringExcludes() const { return excludes_; } void addStringInclude(const XMLCh *queryString, unsigned int queryPos, const TokenInfo::Ptr &tokenInfo) { includes_.push_back(StringMatch(queryString, queryPos, tokenInfo)); } void addStringExclude(const XMLCh *queryString, unsigned int queryPos, const TokenInfo::Ptr &tokenInfo) { excludes_.push_back(StringMatch(queryString, queryPos, tokenInfo)); } void addStringInclude(const StringMatch &match) { includes_.push_back(match); } void addStringExclude(const StringMatch &match) { excludes_.push_back(match); } void addStringIncludes(const StringMatches &sMatches) { for(StringMatches::const_iterator j = sMatches.begin(); j != sMatches.end(); ++j) { includes_.push_back(*j); } } void addStringExcludes(const StringMatches &sMatches) { for(StringMatches::const_iterator j = sMatches.begin(); j != sMatches.end(); ++j) { excludes_.push_back(*j); } } void add(const Match::Ptr &match) { addStringIncludes(match->getStringIncludes()); addStringExcludes(match->getStringExcludes()); } private: StringMatches includes_; StringMatches excludes_; }; #endif