summaryrefslogtreecommitdiff
path: root/src/mongo/idl/idl_parser.cpp
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2017-04-19 10:08:26 -0400
committerMark Benvenuto <mark.benvenuto@mongodb.com>2017-04-19 15:30:27 -0400
commitebd361aae87504474e7db011f08da7aeb0923167 (patch)
tree3b07cb1415b5397dc1c5285622a300efc47c4dea /src/mongo/idl/idl_parser.cpp
parent72f19039beebcb3e087dc1efbe6fac31526d2fd0 (diff)
downloadmongo-ebd361aae87504474e7db011f08da7aeb0923167.tar.gz
SERVER-28514 Add Array support for IDL
Diffstat (limited to 'src/mongo/idl/idl_parser.cpp')
-rw-r--r--src/mongo/idl/idl_parser.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/mongo/idl/idl_parser.cpp b/src/mongo/idl/idl_parser.cpp
index 5e1edd7af4c..fee9678f485 100644
--- a/src/mongo/idl/idl_parser.cpp
+++ b/src/mongo/idl/idl_parser.cpp
@@ -184,4 +184,38 @@ void IDLParserErrorContext::throwUnknownField(StringData fieldName) const {
std::string path = getElementPath(fieldName);
uasserted(40415, str::stream() << "BSON field '" << path << "' is an unknown field.");
}
+
+void IDLParserErrorContext::throwBadArrayFieldNumberValue(StringData value) const {
+ std::string path = getElementPath(StringData());
+ uasserted(40422,
+ str::stream() << "BSON array field '" << path << "' has an invalid value '" << value
+ << "' for an array field name.");
+}
+void IDLParserErrorContext::throwBadArrayFieldNumberSequence(std::uint32_t actualValue,
+ std::uint32_t expectedValue) const {
+ std::string path = getElementPath(StringData());
+ uasserted(40423,
+ str::stream() << "BSON array field '" << path << "' has a non-sequential value '"
+ << actualValue
+ << "' for an array field name, expected value '"
+ << expectedValue
+ << "'.");
+}
+
+std::vector<StringData> transformVector(const std::vector<std::string>& input) {
+ return std::vector<StringData>(begin(input), end(input));
+}
+
+std::vector<std::string> transformVector(const std::vector<StringData>& input) {
+ std::vector<std::string> output;
+
+ output.reserve(input.size());
+
+ std::transform(begin(input), end(input), std::back_inserter(output), [](auto&& str) {
+ return str.toString();
+ });
+
+ return output;
+}
+
} // namespace mongo