Loading...
Searching...
No Matches
bsoncxx::v_noabi::builder::stream::array_context< base > Class Template Reference

`#include <bsoncxx/v_noabi/bsoncxx/builder/stream/array_context.hpp>`

## Description

template<class base>
class bsoncxx::v_noabi::builder::stream::array_context< base >

A stream context which expects any number of values.

The template argument can be used to hold additional information about containing documents or arrays. I.e. value_context<> implies that this array is a sub_array in a document, while array_context would indicated a sub_array in an array. These types can be nested, such that contextual parsing (for key/value pairs) and depth (to prevent an invalid array_close) are enforced by the type system.

I.e. builder << array_context << array_context << ...;

This builds a bson array with successively higher index keys

## Public Member Functions

| array_context (core *core)
| Create an array_context given a core builder.
| operator array_context<> ()
| Conversion operator which provides a rooted array context given any stream currently in a nested array_context.
| operator single_context ()
| Conversion operator for single_context.
base | operator<< (close_array_type const)
| << operator for closing a subarray in the core builder.
array_context | operator<< (concatenate_array array)
| << operator for concatenating another array.
template<typename Func>
detail::requires_t< array_context &, detail::disjunction< detail::is_invocable< Func, array_context >, detail::is_invocable< Func, single_context > > > | operator<< (Func &&func)
| << operator for accepting a callable of the form void(array_context) or void(single_context) and invoking it to perform 1 or more value appends to the core builder.
array_context< array_context > | operator<< (open_array_type const)
| << operator for opening a new subarray in the core builder.
key_context< array_context > | operator<< (open_document_type const)
| << operator for opening a new subdocument in the core builder.
template<typename T>
detail::requires_t< v_noabi::array::value, std::is_same< base, closed_context >, detail::is_alike< T, finalize_type > > | operator<< (T &&)
| << operator for finalizing the stream.
template<class T>
detail::requires_not_t< array_context &, detail::is_invocable< T, array_context<> >, detail::is_invocable< T, single_context >, detail::is_alike< T, finalize_type > > | operator<< (T &&t)
| << operator for accepting a real value and appending it to the core builder.

## Constructor & Destructor Documentation

## array_context()

template<class base>

bsoncxx::v_noabi::builder::stream::array_context< base >::array_context | ( | core * | core | ) |

inline

Create an array_context given a core builder.

Parameters

  core | The core builder to orchestrate

## Member Function Documentation

## operator array_context<>()

template<class base>

bsoncxx::v_noabi::builder::stream::array_context< base >::operator array_context<> | ( |  | ) |

inline

Conversion operator which provides a rooted array context given any stream currently in a nested array_context.

## operator single_context()

template<class T>

bsoncxx::v_noabi::builder::stream::array_context< T >::operator single_context | ( |  | ) |

Conversion operator for single_context.

Implementation of the single_context conversion operator for array_context.

See also
  - bsoncxx::v_noabi::builder::stream::single_context

## operator<<() [1/7]

template<class base>

base bsoncxx::v_noabi::builder::stream::array_context< base >::operator<< | ( | close_array_type const |  | ) |

inline

<< operator for closing a subarray in the core builder.

The argument must be a close_array_type token (it is otherwise ignored).

## operator<<() [2/7]

template<class base>

array_context bsoncxx::v_noabi::builder::stream::array_context< base >::operator<< | ( | concatenate_array | array | ) |

inline

<< operator for concatenating another array.

This operation concatenates all of the values from the passed document into the current stream. Keys are adjusted to match the existing array.

Parameters

  array | An array to concatenate

## operator<<() [3/7]

template<class base>
template<typename Func>

detail::requires_t< array_context &, detail::disjunction< detail::is_invocable< Func, array_context >, detail::is_invocable< Func, single_context > > > bsoncxx::v_noabi::builder::stream::array_context< base >::operator<< | ( | Func && | func | ) |

inline

<< operator for accepting a callable of the form void(array_context) or void(single_context) and invoking it to perform 1 or more value appends to the core builder.

Parameters

  func | The callback to invoke

## operator<<() [4/7]

template<class base>

array_context< array_context > bsoncxx::v_noabi::builder::stream::array_context< base >::operator<< | ( | open_array_type const |  | ) |

inline

<< operator for opening a new subarray in the core builder.

The argument must be an open_document_type token (it is otherwise ignored).

## operator<<() [5/7]

template<class base>

key_context< array_context > bsoncxx::v_noabi::builder::stream::array_context< base >::operator<< | ( | open_document_type const |  | ) |

inline

<< operator for opening a new subdocument in the core builder.

The argument must be an open_document_type token (it is otherwise ignored).

## operator<<() [6/7]

template<class base>
template<typename T>

detail::requires_t< v_noabi::array::value, std::is_same< base, closed_context >, detail::is_alike< T, finalize_type > > bsoncxx::v_noabi::builder::stream::array_context< base >::operator<< | ( | T && |  | ) |

inline

<< operator for finalizing the stream.

This operation finishes all processing necessary to fully encode the bson bytes and returns an owning value.

The argument must be a finalize_type token (it is otherwise ignored).

Returns
  A value type which holds the complete bson document.

## operator<<() [7/7]

template<class base>
template<class T>

detail::requires_not_t< array_context &, detail::is_invocable< T, array_context<> >, detail::is_invocable< T, single_context >, detail::is_alike< T, finalize_type > > bsoncxx::v_noabi::builder::stream::array_context< base >::operator<< | ( | T && | t | ) |

inline

<< operator for accepting a real value and appending it to the core builder.

Parameters

  t | The value to append

The documentation for this class was generated from the following files:

- bsoncxx/v_noabi/bsoncxx/builder/stream/array_context-fwd.hpp
- bsoncxx/v_noabi/bsoncxx/builder/stream/array_context.hpp
- bsoncxx/v_noabi/bsoncxx/builder/stream/single_context.hpp