19 #include <type_traits>
21 #include <bsoncxx/types.hpp>
23 #include <bsoncxx/config/prelude.hpp>
26 BSONCXX_INLINE_NAMESPACE_BEGIN
33 namespace bson_value {
60 #define BSONCXX_ENUM(type, val) explicit view(b_##type) noexcept;
61 #include <bsoncxx/enums/type.hpp>
71 view& operator=(const
view&) noexcept;
82 friend BSONCXX_API
bool BSONCXX_CALL operator==(const bson_value::
view&,
83 const bson_value::
view&);
84 friend BSONCXX_API
bool BSONCXX_CALL operator!=(const bson_value::
view&,
85 const bson_value::
view&);
264 friend class document::element;
265 friend class bson_value::
value;
267 view(const std::uint8_t* raw, std::uint32_t length, std::uint32_t offset, std::uint32_t keylen);
268 view(
void* internal_value) noexcept;
270 void _init(
void* internal_value) noexcept;
272 void BSONCXX_PRIVATE destroy() noexcept;
302 template <
typename T>
303 using not_view =
typename std::enable_if<
304 std::is_constructible<bson_value::view, T>::value &&
309 template <
typename T>
310 BSONCXX_INLINE not_view<T> operator==(
const bson_value::view& lhs, T&& rhs) {
314 template <
typename T>
315 BSONCXX_INLINE not_view<T> operator==(T&& lhs,
const bson_value::view& rhs) {
316 return bson_value::view{std::forward<T>(lhs)} == rhs;
319 template <
typename T>
320 BSONCXX_INLINE not_view<T> operator!=(
const bson_value::view& lhs, T&& rhs) {
321 return lhs != bson_value::view{std::forward<T>(rhs)};
324 template <
typename T>
325 BSONCXX_INLINE not_view<T> operator!=(T&& lhs,
const bson_value::view& rhs) {
326 return bson_value::view{std::forward<T>(lhs)} != rhs;
332 BSONCXX_INLINE_NAMESPACE_END
335 #include <bsoncxx/config/postlude.hpp>
A variant owning type that represents any BSON type.
Definition: value.hpp:39
A view-only variant that can contain any BSON type.
Definition: view.hpp:44
view() noexcept
Default constructs a bson_value::view.
Top level namespace for MongoDB C++ BSON functionality.
Definition: element.hpp:24
type
An enumeration of each BSON type.
Definition: types.hpp:39
A BSON array value.
Definition: types.hpp:181
A BSON binary data value.
Definition: types.hpp:206
A BSON boolean value.
Definition: types.hpp:264
A BSON JavaScript code value.
Definition: types.hpp:421
A BSON JavaScript code with scope value.
Definition: types.hpp:496
A BSON date value.
Definition: types.hpp:289
A BSON DBPointer value.
Definition: types.hpp:402
A BSON Decimal128 value.
Definition: types.hpp:605
A BSON document value.
Definition: types.hpp:149
A BSON double value.
Definition: types.hpp:88
A BSON signed 32-bit integer value.
Definition: types.hpp:532
A BSON 64-bit signed integer value.
Definition: types.hpp:580
A BSON max-key value.
Definition: types.hpp:651
A BSON min-key value.
Definition: types.hpp:635
A BSON null value.
Definition: types.hpp:348
A BSON ObjectId value.
Definition: types.hpp:246
A BSON regex value.
Definition: types.hpp:364
A BSON Symbol value.
Definition: types.hpp:460
A BSON replication timestamp value.
Definition: types.hpp:561
A BSON undefined value.
Definition: types.hpp:230
A BSON UTF-8 encoded string value.
Definition: types.hpp:113