diff options
| author | Charles E. Rolke <chug@apache.org> | 2013-03-07 14:42:10 +0000 |
|---|---|---|
| committer | Charles E. Rolke <chug@apache.org> | 2013-03-07 14:42:10 +0000 |
| commit | 5dffcdd2715cb801f7f33f6db604940d0dd17c54 (patch) | |
| tree | 010a6b236152aca978467134dae7619f9f9c1a76 | |
| parent | d507fcd7d13652075b812b1761bf795a50c54e18 (diff) | |
| download | qpid-python-5dffcdd2715cb801f7f33f6db604940d0dd17c54.tar.gz | |
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
| -rw-r--r-- | qpid/cpp/src/qpid/broker/Selector.h | 8 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/SelectorToken.h | 26 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/SelectorValue.h | 5 | ||||
| -rw-r--r-- | qpid/cpp/src/tests/Selector.cpp | 2 |
4 files changed, 25 insertions, 16 deletions
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 <string> #include <boost/scoped_ptr.hpp> @@ -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 <iosfwd> #include <string> #include <stdexcept> @@ -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<Token> 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)); |
