summaryrefslogtreecommitdiff
path: root/src/mongo/bson/mutable/const_element-inl.h
diff options
context:
space:
mode:
authorAndrew Morrow <acm@10gen.com>2012-12-04 19:19:44 -0500
committerAndrew Morrow <acm@10gen.com>2013-03-08 10:44:00 -0500
commit05eddb24d1a1c4c2ebada12a7beab97a82d7f7d6 (patch)
tree2a03f2a658bdf60da682bd036528d6f651873c2c /src/mongo/bson/mutable/const_element-inl.h
parentc069af07b6c9b2462a83cf7f26147e1f0cb12c1e (diff)
downloadmongo-05eddb24d1a1c4c2ebada12a7beab97a82d7f7d6.tar.gz
SERVER-8046 Implement lazyness for mutable BSON
Diffstat (limited to 'src/mongo/bson/mutable/const_element-inl.h')
-rw-r--r--src/mongo/bson/mutable/const_element-inl.h196
1 files changed, 196 insertions, 0 deletions
diff --git a/src/mongo/bson/mutable/const_element-inl.h b/src/mongo/bson/mutable/const_element-inl.h
new file mode 100644
index 00000000000..034b915f619
--- /dev/null
+++ b/src/mongo/bson/mutable/const_element-inl.h
@@ -0,0 +1,196 @@
+/* Copyright 2013 10gen Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+namespace mongo {
+namespace mutablebson {
+
+ inline ConstElement::ConstElement(const Element& basis)
+ : _basis(basis) {}
+
+ inline ConstElement ConstElement::leftChild() const {
+ return _basis.leftChild();
+ }
+
+ inline ConstElement ConstElement::rightChild() const {
+ return _basis.rightChild();
+ }
+
+ inline ConstElement ConstElement::leftSibling() const {
+ return _basis.leftSibling();
+ }
+
+ inline ConstElement ConstElement::rightSibling() const {
+ return _basis.rightSibling();
+ }
+
+ inline ConstElement ConstElement::parent() const {
+ return _basis.parent();
+ }
+
+ inline ConstElement ConstElement::operator[](size_t n) const {
+ return _basis[n];
+ }
+
+ inline ConstElement ConstElement::operator[](const StringData& name) const {
+ return _basis[name];
+ }
+
+ inline bool ConstElement::hasValue() const {
+ return _basis.hasValue();
+ }
+
+ inline const BSONElement ConstElement::getValue() const {
+ return _basis.getValue();
+ }
+
+ inline double ConstElement::getValueDouble() const {
+ return _basis.getValueDouble();
+ }
+
+ inline StringData ConstElement::getValueString() const {
+ return _basis.getValueString();
+ }
+
+ inline BSONObj ConstElement::getValueObject() const {
+ return _basis.getValueObject();
+ }
+
+ inline BSONArray ConstElement::getValueArray() const {
+ return _basis.getValueArray();
+ }
+
+ inline bool ConstElement::isValueUndefined() const {
+ return _basis.isValueUndefined();
+ }
+
+ inline OID ConstElement::getValueOID() const {
+ return _basis.getValueOID();
+ }
+
+ inline bool ConstElement::getValueBool() const {
+ return _basis.getValueBool();
+ }
+
+ inline Date_t ConstElement::getValueDate() const {
+ return _basis.getValueDate();
+ }
+
+ inline bool ConstElement::isValueNull() const {
+ return _basis.isValueNull();
+ }
+
+ inline StringData ConstElement::getValueSymbol() const {
+ return _basis.getValueSymbol();
+ }
+
+ inline int32_t ConstElement::getValueInt() const {
+ return _basis.getValueInt();
+ }
+
+ inline OpTime ConstElement::getValueTimestamp() const {
+ return _basis.getValueTimestamp();
+ }
+
+ inline int64_t ConstElement::getValueLong() const {
+ return _basis.getValueLong();
+ }
+
+ inline bool ConstElement::isValueMinKey() const {
+ return _basis.isValueMinKey();
+ }
+
+ inline bool ConstElement::isValueMaxKey() const {
+ return _basis.isValueMaxKey();
+ }
+
+ inline SafeNum ConstElement::getValueSafeNum() const {
+ return _basis.getValueSafeNum();
+ }
+
+ inline int ConstElement::compareWithElement(const ConstElement& other,
+ bool considerFieldName) const {
+ return _basis.compareWithElement(other, considerFieldName);
+ }
+
+ inline int ConstElement::compareWithBSONElement(const BSONElement& other,
+ bool considerFieldName) const {
+ return _basis.compareWithBSONElement(other, considerFieldName);
+ }
+
+ inline int ConstElement::compareWithBSONObj(const BSONObj& other,
+ bool considerFieldName) const {
+ return _basis.compareWithBSONObj(other, considerFieldName);
+ }
+
+ inline void ConstElement::writeTo(BSONObjBuilder* builder) const {
+ return _basis.writeTo(builder);
+ }
+
+ inline void ConstElement::writeArrayTo(BSONArrayBuilder* builder) const {
+ return _basis.writeArrayTo(builder);
+ }
+
+ inline bool ConstElement::ok() const {
+ return _basis.ok();
+ }
+
+ inline const Document& ConstElement::getDocument() const {
+ return _basis.getDocument();
+ }
+
+ inline BSONType ConstElement::getType() const {
+ return _basis.getType();
+ }
+
+ inline bool ConstElement::isType(BSONType type) const {
+ return _basis.isType(type);
+ }
+
+ inline StringData ConstElement::getFieldName() const {
+ return _basis.getFieldName();
+ }
+
+ inline Element::RepIdx ConstElement::getIdx() const {
+ return _basis.getIdx();
+ }
+
+ inline bool operator==(const ConstElement& l, const ConstElement& r) {
+ return l._basis == r._basis;
+ }
+
+ inline bool operator!=(const ConstElement& l, const ConstElement& r) {
+ return !(l == r);
+ }
+
+ inline bool operator==(const Element& l, const ConstElement& r) {
+ return ConstElement(l) == r;
+ }
+
+ inline bool operator!=(const Element& l, const ConstElement& r) {
+ return !(l == r);
+ }
+
+ inline bool operator==(const ConstElement& l, const Element& r) {
+ return l == ConstElement(r);
+ }
+
+ inline bool operator!=(const ConstElement& l, const Element& r) {
+ return !(l == r);
+ }
+
+} // namespace mutablebson
+} // namespace mongo