# Copyright (C) 2017 MongoDB Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3,
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
#
# IDL Basic Types
global:
cpp_namespace: "mongo"
cpp_includes:
- "mongo/db/namespace_string.h"
- "mongo/util/uuid.h"
types:
string:
bson_serialization_type: string
description: "A BSON UTF-8 string"
cpp_type: "std::string"
deserializer: "mongo::BSONElement::str"
int:
bson_serialization_type: int
description: "A BSON 32-bit integer"
cpp_type: "std::int32_t"
deserializer: "mongo::BSONElement::_numberInt"
safeInt64:
bson_serialization_type:
- long
- int
- decimal
- double
description: "Accepts any numerical type within int64 range"
cpp_type: std::int64_t
deserializer: "mongo::BSONElement::numberInt"
long:
bson_serialization_type: long
description: "A BSON 64-bit integer"
cpp_type: "std::int64_t"
deserializer: "mongo::BSONElement::_numberLong"
double:
bson_serialization_type: double
description: "A BSON 64-bit floating point number"
cpp_type: "double"
deserializer: "mongo::BSONElement::_numberDouble"
decimal:
bson_serialization_type: double
description: "A BSON 128-bit floating point decimal number"
cpp_type: "mongo::Decimal128"
deserializer: "mongo::BSONElement::_numberDecimal"
bool:
bson_serialization_type: bool
description: "A BSON bool"
cpp_type: "bool"
deserializer: "mongo::BSONElement::boolean"
safeBool:
bson_serialization_type:
- bool
- long
- int
- decimal
- double
description: "Accepts any numerical type (including bool) which can be interpreted as a
true/false value"
cpp_type: bool
deserializer: "mongo::BSONElement::trueValue"
bindata_generic:
bson_serialization_type: bindata
bindata_subtype: generic
description: "A BSON bindata of "
cpp_type: "std::vector"
deserializer: "mongo::BSONElement::_binDataVector"
bindata_function:
bson_serialization_type: bindata
bindata_subtype: function
description: "A BSON bindata of function sub type"
cpp_type: "std::vector"
deserializer: "mongo::BSONElement::_binDataVector"
bindata_uuid:
bson_serialization_type: bindata
bindata_subtype: uuid
description: "A BSON bindata of uuid sub type"
cpp_type: "std::array"
deserializer: "mongo::BSONElement::uuid"
uuid:
bson_serialization_type: bindata
bindata_subtype: uuid
description: "A UUID"
cpp_type: "mongo::UUID"
deserializer: "UUID"
serializer: "mongo::UUID::toCDR"
bindata_md5:
bson_serialization_type: bindata
bindata_subtype: md5
description: "A BSON bindata of uuid sub type"
cpp_type: "std::array"
deserializer: "mongo::BSONElement::md5"
objectid:
bson_serialization_type: objectid
description: "A BSON ObjectID"
cpp_type: "mongo::OID"
deserializer: "mongo::BSONElement::OID"
object:
bson_serialization_type: object
description: "A BSONObj without custom deserialization or serialization"
cpp_type: "mongo::BSONObj"
date:
bson_serialization_type: date
description: "A BSON UTC DateTime"
cpp_type: "mongo::Date_t"
deserializer: "mongo::BSONElement::date"
timestamp:
bson_serialization_type: timestamp
description: "A BSON TimeStamp"
cpp_type: "mongo::Timestamp"
deserializer: "mongo::BSONElement::timestamp"
namespacestring:
bson_serialization_type: string
description: "A MongoDB NamespaceString"
cpp_type: "mongo::NamespaceString"
serializer: mongo::NamespaceString::toString
deserializer: mongo::NamespaceString