summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Stearn <mathias@10gen.com>2009-11-30 18:48:55 -0500
committerMathias Stearn <mathias@10gen.com>2009-11-30 18:51:39 -0500
commitd5231d774e367ecbf6aad1fe5706b15891184e06 (patch)
tree8d070bf2f6b9dd4bca792fcd8490ccb13e837a2d
parent84fbab144fc44c3af8dde09d8ffbb8427b61d077 (diff)
downloadmongo-d5231d774e367ecbf6aad1fe5706b15891184e06.tar.gz
Use boost's list_p in the json parser. SUPPORT-11 SERVER-443
-rw-r--r--db/json.cpp4
-rw-r--r--stdafx.h2
2 files changed, 4 insertions, 2 deletions
diff --git a/db/json.cpp b/db/json.cpp
index ceb214e97b5..e0b7743518d 100644
--- a/db/json.cpp
+++ b/db/json.cpp
@@ -430,13 +430,13 @@ public:
struct definition {
definition( JsonGrammar const &self ) {
object = ch_p( '{' )[ objectStart( self.b ) ] >> !members >> '}';
- members = fieldName >> ':' >> value >> !( ',' >> members );
+ members = list_p((fieldName >> ':' >> value) , ',');
fieldName =
str[ fieldNameEnd( self.b ) ] |
singleQuoteStr[ fieldNameEnd( self.b ) ] |
unquotedFieldName[ unquotedFieldNameEnd( self.b ) ];
array = ch_p( '[' )[ arrayStart( self.b ) ] >> !elements >> ']';
- elements = value >> !( ch_p( ',' )[ arrayNext( self.b ) ] >> elements );
+ elements = list_p(value, ch_p(',')[arrayNext( self.b )]);
value =
oid[ oidEnd( self.b ) ] |
dbref[ dbrefEnd( self.b ) ] |
diff --git a/stdafx.h b/stdafx.h
index c8966149c8a..5352c5e4d58 100644
--- a/stdafx.h
+++ b/stdafx.h
@@ -107,9 +107,11 @@ namespace mongo {
#define BOOST_SPIRIT_USE_OLD_NAMESPACE
#include <boost/spirit/include/classic_core.hpp>
#include <boost/spirit/include/classic_loops.hpp>
+#include <boost/spirit/include/classic_lists.hpp>
#else
#include <boost/spirit/core.hpp>
#include <boost/spirit/utility/loops.hpp>
+#include <boost/spirit/utility/lists.hpp>
#endif
#include <boost/tuple/tuple.hpp>