From 5dffcdd2715cb801f7f33f6db604940d0dd17c54 Mon Sep 17 00:00:00 2001 From: "Charles E. Rolke" Date: Thu, 7 Mar 2013 14:42:10 +0000 Subject: QPID-4558: Selectors for C++ broker - fixes windows builds and 32-bit builds git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1453898 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/broker/Selector.h | 8 +++++--- qpid/cpp/src/qpid/broker/SelectorToken.h | 26 ++++++++++++++------------ qpid/cpp/src/qpid/broker/SelectorValue.h | 5 +++++ qpid/cpp/src/tests/Selector.cpp | 2 +- 4 files changed, 25 insertions(+), 16 deletions(-) (limited to 'qpid/cpp/src') diff --git a/qpid/cpp/src/qpid/broker/Selector.h b/qpid/cpp/src/qpid/broker/Selector.h index 0412e6fb8d..ae53fe36a9 100644 --- a/qpid/cpp/src/qpid/broker/Selector.h +++ b/qpid/cpp/src/qpid/broker/Selector.h @@ -22,6 +22,8 @@ * */ +#include "qpid/broker/BrokerImportExport.h" + #include #include @@ -51,13 +53,13 @@ class Selector { const std::string expression; public: - Selector(const std::string&); - ~Selector(); + QPID_BROKER_EXTERN Selector(const std::string&); + QPID_BROKER_EXTERN ~Selector(); /** * Evaluate parsed expression with a given environment */ - bool eval(const SelectorEnv& env); + QPID_BROKER_EXTERN bool eval(const SelectorEnv& env); /** * Apply selector to message diff --git a/qpid/cpp/src/qpid/broker/SelectorToken.h b/qpid/cpp/src/qpid/broker/SelectorToken.h index 0fb4125778..5b0cf51985 100644 --- a/qpid/cpp/src/qpid/broker/SelectorToken.h +++ b/qpid/cpp/src/qpid/broker/SelectorToken.h @@ -22,6 +22,8 @@ * */ +#include "qpid/broker/BrokerImportExport.h" + #include #include #include @@ -75,21 +77,21 @@ struct Token { } }; -std::ostream& operator<<(std::ostream& os, const Token& t); +QPID_BROKER_EXTERN std::ostream& operator<<(std::ostream& os, const Token& t); class TokenException : public std::range_error { public: TokenException(const std::string&); }; -bool tokeniseEos(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); -bool tokeniseIdentifier(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); -bool tokeniseReservedWord(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); -bool tokeniseIdentifierOrReservedWord(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); -bool tokeniseString(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); -bool tokeniseParens(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); -bool tokeniseOperator(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); -bool tokeniseNumeric(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); +QPID_BROKER_EXTERN bool tokeniseEos(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); +QPID_BROKER_EXTERN bool tokeniseIdentifier(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); +QPID_BROKER_EXTERN bool tokeniseReservedWord(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); +QPID_BROKER_EXTERN bool tokeniseIdentifierOrReservedWord(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); +QPID_BROKER_EXTERN bool tokeniseString(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); +QPID_BROKER_EXTERN bool tokeniseParens(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); +QPID_BROKER_EXTERN bool tokeniseOperator(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); +QPID_BROKER_EXTERN bool tokeniseNumeric(std::string::const_iterator& s, std::string::const_iterator& e, Token& tok); class Tokeniser { std::vector tokens; @@ -99,9 +101,9 @@ class Tokeniser { std::string::const_iterator inEnd; public: - Tokeniser(const std::string::const_iterator& s, const std::string::const_iterator& e); - void returnTokens(unsigned int n = 1); - const Token& nextToken(); + QPID_BROKER_EXTERN Tokeniser(const std::string::const_iterator& s, const std::string::const_iterator& e); + QPID_BROKER_EXTERN void returnTokens(unsigned int n = 1); + QPID_BROKER_EXTERN const Token& nextToken(); }; }} diff --git a/qpid/cpp/src/qpid/broker/SelectorValue.h b/qpid/cpp/src/qpid/broker/SelectorValue.h index ec3fe29cf6..2bf4168a5a 100644 --- a/qpid/cpp/src/qpid/broker/SelectorValue.h +++ b/qpid/cpp/src/qpid/broker/SelectorValue.h @@ -72,6 +72,11 @@ public: type(T_EXACT) {} + Value(const int32_t i0) : + i(i0), + type(T_EXACT) + {} + Value(const double x0) : x(x0), type(T_INEXACT) diff --git a/qpid/cpp/src/tests/Selector.cpp b/qpid/cpp/src/tests/Selector.cpp index 1c15abf509..ba99c9e3f0 100644 --- a/qpid/cpp/src/tests/Selector.cpp +++ b/qpid/cpp/src/tests/Selector.cpp @@ -273,7 +273,7 @@ QPID_AUTO_TEST_CASE(numericEval) { TestSelectorEnv env; env.set("A", 42.0); - env.set("B", 39l); + env.set("B", 39); BOOST_CHECK(qb::Selector("A>B").eval(env)); BOOST_CHECK(qb::Selector("A=42").eval(env)); -- cgit v1.2.1