summaryrefslogtreecommitdiff
path: root/src/mongo/bson/util/bson_extract.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/bson/util/bson_extract.h')
-rw-r--r--src/mongo/bson/util/bson_extract.h280
1 files changed, 134 insertions, 146 deletions
diff --git a/src/mongo/bson/util/bson_extract.h b/src/mongo/bson/util/bson_extract.h
index 4558e18b22d..fa7e3bbc9ab 100644
--- a/src/mongo/bson/util/bson_extract.h
+++ b/src/mongo/bson/util/bson_extract.h
@@ -36,152 +36,140 @@
namespace mongo {
- class BSONObj;
- class BSONElement;
- class OID;
- class Timestamp;
-
- /**
- * Finds an element named "fieldName" in "object".
- *
- * Returns Status::OK() and sets "*outElement" to the found element on success. Returns
- * ErrorCodes::NoSuchKey if there are no matches.
- */
- Status bsonExtractField(const BSONObj& object,
- StringData fieldName,
- BSONElement* outElement);
-
- /**
- * Finds an element named "fieldName" in "object".
- *
- * Returns Status::OK() and sets *outElement to the found element on success. Returns
- * ErrorCodes::NoSuchKey if there are no matches for "fieldName", and ErrorCodes::TypeMismatch
- * if the type of the matching element is not "type". For return values other than
- * Status::OK(), the resulting value of "*outElement" is undefined.
- */
- Status bsonExtractTypedField(const BSONObj& object,
- StringData fieldName,
- BSONType type,
- BSONElement* outElement);
-
- /**
- * Finds a bool-like element named "fieldName" in "object".
- *
- * Returns Status::OK() and sets *out to the found element's boolean value on success. Returns
- * ErrorCodes::NoSuchKey if there are no matches for "fieldName", and ErrorCodes::TypeMismatch
- * if the type of the matching element is not Bool or a number type. For return values other
- * than Status::OK(), the resulting value of "*out" is undefined.
- */
- Status bsonExtractBooleanField(const BSONObj& object,
- StringData fieldName,
- bool* out);
-
- /**
- * Finds an element named "fieldName" in "object" that represents an integral value.
- *
- * Returns Status::OK() and sets *out to the element's 64-bit integer value representation on
- * success. Returns ErrorCodes::NoSuchKey if there are no matches for "fieldName". Returns
- * ErrorCodes::TypeMismatch if the value of the matching element is not of a numeric type.
- * Returns ErrorCodes::BadValue if the value does not have an exact 64-bit integer
- * representation. For return values other than Status::OK(), the resulting value of "*out" is
- * undefined.
- */
- Status bsonExtractIntegerField(const BSONObj& object,
- StringData fieldName,
- long long* out);
-
- /**
- * Finds a string-typed element named "fieldName" in "object" and stores its value in "out".
- *
- * Returns Status::OK() and sets *out to the found element's std::string value on success. Returns
- * ErrorCodes::NoSuchKey if there are no matches for "fieldName", and ErrorCodes::TypeMismatch
- * if the type of the matching element is not String. For return values other than
- * Status::OK(), the resulting value of "*out" is undefined.
- */
- Status bsonExtractStringField(const BSONObj& object,
- StringData fieldName,
- std::string* out);
-
- /**
- * Finds an Timestamp-typed element named "fieldName" in "object" and stores its value in "out".
- *
- * Returns Status::OK() and sets *out to the found element's Timestamp value on success. Returns
- * ErrorCodes::NoSuchKey if there are no matches for "fieldName", and ErrorCodes::TypeMismatch
- * if the type of the matching element is not Timestamp. For return values other than
- * Status::OK(), the resulting value of "*out" is undefined.
- */
- Status bsonExtractTimestampField(const BSONObj& object,
- StringData fieldName,
- Timestamp* out);
-
- /**
- * Finds an OID-typed element named "fieldName" in "object" and stores its value in "out".
- *
- * Returns Status::OK() and sets *out to the found element's OID value on success. Returns
- * ErrorCodes::NoSuchKey if there are no matches for "fieldName", and ErrorCodes::TypeMismatch
- * if the type of the matching element is not OID. For return values other than Status::OK(),
- * the resulting value of "*out" is undefined.
- */
- Status bsonExtractOIDField(const BSONObj& object,
- StringData fieldName,
- OID* out);
-
- /**
- * Finds a bool-like element named "fieldName" in "object".
- *
- * If a field named "fieldName" is present, and is either a number or boolean type, stores the
- * truth value of the field into "*out". If no field named "fieldName" is present, sets "*out"
- * to "defaultValue". In these cases, returns Status::OK().
- *
- * If "fieldName" is present more than once, behavior is undefined. If the found field is not a
- * boolean or number, returns ErrorCodes::TypeMismatch.
- */
- Status bsonExtractBooleanFieldWithDefault(const BSONObj& object,
- StringData fieldName,
- bool defaultValue,
- bool* out);
-
- /**
- * Finds an element named "fieldName" in "object" that represents an integral value.
- *
- * If a field named "fieldName" is present and is a value of numeric type with an exact 64-bit
- * integer representation, returns that representation in *out and returns Status::OK(). If
- * there is no field named "fieldName", stores defaultValue into *out and returns Status::OK().
- * If the field is found, but has non-numeric type, returns ErrorCodes::TypeMismatch. If the
- * value has numeric type, but cannot be represented as a 64-bit integer, returns
- * ErrorCodes::BadValue.
- */
- Status bsonExtractIntegerFieldWithDefault(const BSONObj& object,
- StringData fieldName,
- long long defaultValue,
- long long* out);
-
- /**
- * Finds a std::string element named "fieldName" in "object".
- *
- * If a field named "fieldName" is present, and is a string, stores the value of the field into
- * "*out". If no field named fieldName is present, sets "*out" to "defaultValue". In these
- * cases, returns Status::OK().
- *
- * If "fieldName" is present more than once, behavior is undefined. If the found field is not a
- * string, returns ErrorCodes::TypeMismatch.
- */
- Status bsonExtractStringFieldWithDefault(const BSONObj& object,
- StringData fieldName,
- StringData defaultValue,
- std::string* out);
-
- /**
- * Finds an OID-typed element named "fieldName" in "object" and stores its value in *out.
- *
- * Returns Status::OK() and sets *out to the found element's OID value on success. If no field
- * named "fieldName" is present, *out is set to "defaultValue" and Status::OK() is returned.
- * Returns ErrorCodes::TypeMismatch if the type of the matching element is not OID. For return
- * values other than Status::OK(), the resulting value of *out is undefined.
- */
- Status bsonExtractOIDFieldWithDefault(const BSONObj& object,
+class BSONObj;
+class BSONElement;
+class OID;
+class Timestamp;
+
+/**
+ * Finds an element named "fieldName" in "object".
+ *
+ * Returns Status::OK() and sets "*outElement" to the found element on success. Returns
+ * ErrorCodes::NoSuchKey if there are no matches.
+ */
+Status bsonExtractField(const BSONObj& object, StringData fieldName, BSONElement* outElement);
+
+/**
+ * Finds an element named "fieldName" in "object".
+ *
+ * Returns Status::OK() and sets *outElement to the found element on success. Returns
+ * ErrorCodes::NoSuchKey if there are no matches for "fieldName", and ErrorCodes::TypeMismatch
+ * if the type of the matching element is not "type". For return values other than
+ * Status::OK(), the resulting value of "*outElement" is undefined.
+ */
+Status bsonExtractTypedField(const BSONObj& object,
+ StringData fieldName,
+ BSONType type,
+ BSONElement* outElement);
+
+/**
+ * Finds a bool-like element named "fieldName" in "object".
+ *
+ * Returns Status::OK() and sets *out to the found element's boolean value on success. Returns
+ * ErrorCodes::NoSuchKey if there are no matches for "fieldName", and ErrorCodes::TypeMismatch
+ * if the type of the matching element is not Bool or a number type. For return values other
+ * than Status::OK(), the resulting value of "*out" is undefined.
+ */
+Status bsonExtractBooleanField(const BSONObj& object, StringData fieldName, bool* out);
+
+/**
+ * Finds an element named "fieldName" in "object" that represents an integral value.
+ *
+ * Returns Status::OK() and sets *out to the element's 64-bit integer value representation on
+ * success. Returns ErrorCodes::NoSuchKey if there are no matches for "fieldName". Returns
+ * ErrorCodes::TypeMismatch if the value of the matching element is not of a numeric type.
+ * Returns ErrorCodes::BadValue if the value does not have an exact 64-bit integer
+ * representation. For return values other than Status::OK(), the resulting value of "*out" is
+ * undefined.
+ */
+Status bsonExtractIntegerField(const BSONObj& object, StringData fieldName, long long* out);
+
+/**
+ * Finds a string-typed element named "fieldName" in "object" and stores its value in "out".
+ *
+ * Returns Status::OK() and sets *out to the found element's std::string value on success. Returns
+ * ErrorCodes::NoSuchKey if there are no matches for "fieldName", and ErrorCodes::TypeMismatch
+ * if the type of the matching element is not String. For return values other than
+ * Status::OK(), the resulting value of "*out" is undefined.
+ */
+Status bsonExtractStringField(const BSONObj& object, StringData fieldName, std::string* out);
+
+/**
+ * Finds an Timestamp-typed element named "fieldName" in "object" and stores its value in "out".
+ *
+ * Returns Status::OK() and sets *out to the found element's Timestamp value on success. Returns
+ * ErrorCodes::NoSuchKey if there are no matches for "fieldName", and ErrorCodes::TypeMismatch
+ * if the type of the matching element is not Timestamp. For return values other than
+ * Status::OK(), the resulting value of "*out" is undefined.
+ */
+Status bsonExtractTimestampField(const BSONObj& object, StringData fieldName, Timestamp* out);
+
+/**
+ * Finds an OID-typed element named "fieldName" in "object" and stores its value in "out".
+ *
+ * Returns Status::OK() and sets *out to the found element's OID value on success. Returns
+ * ErrorCodes::NoSuchKey if there are no matches for "fieldName", and ErrorCodes::TypeMismatch
+ * if the type of the matching element is not OID. For return values other than Status::OK(),
+ * the resulting value of "*out" is undefined.
+ */
+Status bsonExtractOIDField(const BSONObj& object, StringData fieldName, OID* out);
+
+/**
+ * Finds a bool-like element named "fieldName" in "object".
+ *
+ * If a field named "fieldName" is present, and is either a number or boolean type, stores the
+ * truth value of the field into "*out". If no field named "fieldName" is present, sets "*out"
+ * to "defaultValue". In these cases, returns Status::OK().
+ *
+ * If "fieldName" is present more than once, behavior is undefined. If the found field is not a
+ * boolean or number, returns ErrorCodes::TypeMismatch.
+ */
+Status bsonExtractBooleanFieldWithDefault(const BSONObj& object,
+ StringData fieldName,
+ bool defaultValue,
+ bool* out);
+
+/**
+ * Finds an element named "fieldName" in "object" that represents an integral value.
+ *
+ * If a field named "fieldName" is present and is a value of numeric type with an exact 64-bit
+ * integer representation, returns that representation in *out and returns Status::OK(). If
+ * there is no field named "fieldName", stores defaultValue into *out and returns Status::OK().
+ * If the field is found, but has non-numeric type, returns ErrorCodes::TypeMismatch. If the
+ * value has numeric type, but cannot be represented as a 64-bit integer, returns
+ * ErrorCodes::BadValue.
+ */
+Status bsonExtractIntegerFieldWithDefault(const BSONObj& object,
StringData fieldName,
- const OID& defaultValue,
- OID* out);
+ long long defaultValue,
+ long long* out);
+
+/**
+ * Finds a std::string element named "fieldName" in "object".
+ *
+ * If a field named "fieldName" is present, and is a string, stores the value of the field into
+ * "*out". If no field named fieldName is present, sets "*out" to "defaultValue". In these
+ * cases, returns Status::OK().
+ *
+ * If "fieldName" is present more than once, behavior is undefined. If the found field is not a
+ * string, returns ErrorCodes::TypeMismatch.
+ */
+Status bsonExtractStringFieldWithDefault(const BSONObj& object,
+ StringData fieldName,
+ StringData defaultValue,
+ std::string* out);
+
+/**
+ * Finds an OID-typed element named "fieldName" in "object" and stores its value in *out.
+ *
+ * Returns Status::OK() and sets *out to the found element's OID value on success. If no field
+ * named "fieldName" is present, *out is set to "defaultValue" and Status::OK() is returned.
+ * Returns ErrorCodes::TypeMismatch if the type of the matching element is not OID. For return
+ * values other than Status::OK(), the resulting value of *out is undefined.
+ */
+Status bsonExtractOIDFieldWithDefault(const BSONObj& object,
+ StringData fieldName,
+ const OID& defaultValue,
+ OID* out);
} // namespace mongo