summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorCharles E. Rolke <chug@apache.org>2013-03-07 14:42:10 +0000
committerCharles E. Rolke <chug@apache.org>2013-03-07 14:42:10 +0000
commit5dffcdd2715cb801f7f33f6db604940d0dd17c54 (patch)
tree010a6b236152aca978467134dae7619f9f9c1a76 /qpid/cpp/src
parentd507fcd7d13652075b812b1761bf795a50c54e18 (diff)
downloadqpid-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
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/broker/Selector.h8
-rw-r--r--qpid/cpp/src/qpid/broker/SelectorToken.h26
-rw-r--r--qpid/cpp/src/qpid/broker/SelectorValue.h5
-rw-r--r--qpid/cpp/src/tests/Selector.cpp2
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));