summaryrefslogtreecommitdiff
path: root/src/mongo/bson/mutable/const_element.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/bson/mutable/const_element.h')
-rw-r--r--src/mongo/bson/mutable/const_element.h176
1 files changed, 86 insertions, 90 deletions
diff --git a/src/mongo/bson/mutable/const_element.h b/src/mongo/bson/mutable/const_element.h
index c1c5d2f4da7..3c6b71d593a 100644
--- a/src/mongo/bson/mutable/const_element.h
+++ b/src/mongo/bson/mutable/const_element.h
@@ -32,106 +32,102 @@
namespace mongo {
namespace mutablebson {
- /** For an overview of mutable BSON, please see the file document.h in this directory. */
-
- /** ConstElement recapitulates all of the const methods of Element, but cannot be converted
- * to an Element. This makes it safe to return as a value from a constant Document, since
- * none of Element's non-const methods may be called on ConstElement or any values it
- * yields. If you think of Element like an STL 'iterator', then ConstElement is a
- * 'const_iterator'.
- *
- * For details on the API methods of ConstElement, please see the method comments for the
- * analagous Element methods in the file element.h (in this same directory).
- *
- * All calls on ConstElement are simply forwarded to the underlying Element.
- */
- class ConstElement {
- public:
-
- // This one argument constructor is intentionally not explicit, since we want to be
- // able to pass Elements to functions taking ConstElements without complaint.
- inline ConstElement(const Element& basis);
-
- inline ConstElement leftChild() const;
- inline ConstElement rightChild() const;
- inline bool hasChildren() const;
- inline ConstElement leftSibling(size_t distance = 1) const;
- inline ConstElement rightSibling(size_t distance = 1) const;
- inline ConstElement parent() const;
- inline ConstElement findNthChild(size_t n) const;
- inline ConstElement operator[](size_t n) const;
- inline ConstElement findFirstChildNamed(StringData name) const;
- inline ConstElement operator[](StringData n) const;
- inline ConstElement findElementNamed(StringData name) const;
-
- inline size_t countSiblingsLeft() const;
- inline size_t countSiblingsRight() const;
- inline size_t countChildren() const;
-
- inline bool hasValue() const;
- inline const BSONElement getValue() const;
-
- inline double getValueDouble() const;
- inline StringData getValueString() const;
- inline BSONObj getValueObject() const;
- inline BSONArray getValueArray() const;
- inline bool isValueUndefined() const;
- inline OID getValueOID() const;
- inline bool getValueBool() const;
- inline Date_t getValueDate() const;
- inline bool isValueNull() const;
- inline StringData getValueSymbol() const;
- inline int32_t getValueInt() const;
- inline Timestamp getValueTimestamp() const;
- inline int64_t getValueLong() const;
- inline bool isValueMinKey() const;
- inline bool isValueMaxKey() const;
- inline SafeNum getValueSafeNum() const;
-
- inline int compareWithElement(const ConstElement& other,
- bool considerFieldName = true) const;
-
- inline int compareWithBSONElement(const BSONElement& other,
- bool considerFieldName = true) const;
+/** For an overview of mutable BSON, please see the file document.h in this directory. */
- inline int compareWithBSONObj(const BSONObj& other,
+/** ConstElement recapitulates all of the const methods of Element, but cannot be converted
+ * to an Element. This makes it safe to return as a value from a constant Document, since
+ * none of Element's non-const methods may be called on ConstElement or any values it
+ * yields. If you think of Element like an STL 'iterator', then ConstElement is a
+ * 'const_iterator'.
+ *
+ * For details on the API methods of ConstElement, please see the method comments for the
+ * analagous Element methods in the file element.h (in this same directory).
+ *
+ * All calls on ConstElement are simply forwarded to the underlying Element.
+ */
+class ConstElement {
+public:
+ // This one argument constructor is intentionally not explicit, since we want to be
+ // able to pass Elements to functions taking ConstElements without complaint.
+ inline ConstElement(const Element& basis);
+
+ inline ConstElement leftChild() const;
+ inline ConstElement rightChild() const;
+ inline bool hasChildren() const;
+ inline ConstElement leftSibling(size_t distance = 1) const;
+ inline ConstElement rightSibling(size_t distance = 1) const;
+ inline ConstElement parent() const;
+ inline ConstElement findNthChild(size_t n) const;
+ inline ConstElement operator[](size_t n) const;
+ inline ConstElement findFirstChildNamed(StringData name) const;
+ inline ConstElement operator[](StringData n) const;
+ inline ConstElement findElementNamed(StringData name) const;
+
+ inline size_t countSiblingsLeft() const;
+ inline size_t countSiblingsRight() const;
+ inline size_t countChildren() const;
+
+ inline bool hasValue() const;
+ inline const BSONElement getValue() const;
+
+ inline double getValueDouble() const;
+ inline StringData getValueString() const;
+ inline BSONObj getValueObject() const;
+ inline BSONArray getValueArray() const;
+ inline bool isValueUndefined() const;
+ inline OID getValueOID() const;
+ inline bool getValueBool() const;
+ inline Date_t getValueDate() const;
+ inline bool isValueNull() const;
+ inline StringData getValueSymbol() const;
+ inline int32_t getValueInt() const;
+ inline Timestamp getValueTimestamp() const;
+ inline int64_t getValueLong() const;
+ inline bool isValueMinKey() const;
+ inline bool isValueMaxKey() const;
+ inline SafeNum getValueSafeNum() const;
+
+ inline int compareWithElement(const ConstElement& other, bool considerFieldName = true) const;
+
+ inline int compareWithBSONElement(const BSONElement& other,
bool considerFieldName = true) const;
- inline void writeTo(BSONObjBuilder* builder) const;
- inline void writeArrayTo(BSONArrayBuilder* builder) const;
+ inline int compareWithBSONObj(const BSONObj& other, bool considerFieldName = true) const;
+
+ inline void writeTo(BSONObjBuilder* builder) const;
+ inline void writeArrayTo(BSONArrayBuilder* builder) const;
- inline bool ok() const;
- inline const Document& getDocument() const;
- inline BSONType getType() const;
- inline bool isType(BSONType type) const;
- inline StringData getFieldName() const;
- inline Element::RepIdx getIdx() const;
+ inline bool ok() const;
+ inline const Document& getDocument() const;
+ inline BSONType getType() const;
+ inline bool isType(BSONType type) const;
+ inline StringData getFieldName() const;
+ inline Element::RepIdx getIdx() const;
- inline std::string toString() const;
+ inline std::string toString() const;
- friend bool operator==(const ConstElement&, const ConstElement&);
+ friend bool operator==(const ConstElement&, const ConstElement&);
- private:
- friend class Document;
+private:
+ friend class Document;
- template<typename Builder>
- inline void writeElement(Builder* builder, const StringData* fieldName = NULL) const;
+ template <typename Builder>
+ inline void writeElement(Builder* builder, const StringData* fieldName = NULL) const;
- Element _basis;
- };
+ Element _basis;
+};
- /** See notes for operator==(const Element&, const Element&). The multiple variants listed
- * here enable cross type comparisons between Elements and ConstElements.
- */
- inline bool operator==(const ConstElement& l, const ConstElement& r);
- inline bool operator!=(const ConstElement& l, const ConstElement& r);
- inline bool operator==(const Element& l, const ConstElement& r);
- inline bool operator!=(const Element& l, const ConstElement& r);
- inline bool operator==(const ConstElement& l, const Element& r);
- inline bool operator!=(const ConstElement& l, const Element& r);
+/** See notes for operator==(const Element&, const Element&). The multiple variants listed
+ * here enable cross type comparisons between Elements and ConstElements.
+ */
+inline bool operator==(const ConstElement& l, const ConstElement& r);
+inline bool operator!=(const ConstElement& l, const ConstElement& r);
+inline bool operator==(const Element& l, const ConstElement& r);
+inline bool operator!=(const Element& l, const ConstElement& r);
+inline bool operator==(const ConstElement& l, const Element& r);
+inline bool operator!=(const ConstElement& l, const Element& r);
-} // namespace mutablebson
-} // namespace mongo
+} // namespace mutablebson
+} // namespace mongo
#include "mongo/bson/mutable/const_element-inl.h"
-