uPg input-output traits.
Namespace with metafunctions detecting different type traits needed for PostgreSQL input-output operations
Classes | |
struct | AddTupleConstRef |
struct | AddTupleConstRef< std::tuple< T... > > |
struct | BitContainerTraits |
struct | BitContainerTraits< BitContainer, std::enable_if_t< std::is_integral_v< BitContainer > > > |
struct | BitContainerTraits< std::array< bool, N > > |
struct | BitContainerTraits< std::bitset< N > > |
struct | CanClear |
struct | CanClear< T, ::utils::void_t< decltype(std::declval< T >().clear())> > |
struct | CanReserve |
struct | CanReserve< T, ::utils::void_t< decltype(std::declval< T >().reserve(std::declval< std::size_t >()))> > |
struct | CanResize |
struct | CanResize< T, ::utils::void_t< decltype(std::declval< T >().resize(std::declval< std::size_t >()))> > |
struct | CanUseEnumAsStrongTypedef |
struct | ContainerFinalElement |
Detect type of multidimensional C++ container. More... | |
struct | DimensionCount |
Calculate number of dimensions in C++ container. More... | |
struct | DimensionCount< T, std::enable_if_t< kIsCompatibleContainer< T > > > |
struct | DimensionSize |
struct | DimensionSize< std::array< T, N > > |
struct | ExtractionTag |
struct | ExtractionTag< T, std::enable_if_t< kIsRowType< T > > > |
struct | FixedDimensions |
struct | GetSetNull |
struct | GetSetNull< boost::optional< T > > |
struct | GetSetNull< Null< T > > |
struct | GetSetNull< std::optional< T > > |
struct | GetSetNull<::utils::OptionalRef< T > > |
struct | GetSetNull<::utils::StrongTypedef< Tag, T, Ops, Enable > > |
struct | HasFixedDimensions |
struct | HasFormatter |
Metafunction to detect if a type has a formatter. More... | |
struct | HasIntrospection |
struct | HasParser |
Metafunction to detect if a type has a parser. More... | |
struct | Input |
Customisation point for parsers. More... | |
struct | Input< BoundedRange< T >, std::enable_if_t< kHasParser< T > > > |
struct | Input< formats::json::Value > |
struct | Input< io::detail::Box > |
struct | Input< io::detail::Circle > |
struct | Input< io::detail::Line > |
struct | Input< io::detail::LineSegment > |
struct | Input< io::detail::Path > |
struct | Input< io::detail::Point > |
struct | Input< io::detail::Polygon > |
struct | Input< Range< T >, std::enable_if_t< kHasParser< T > > > |
struct | Input< std::chrono::duration< Rep, Period > > |
Binary parser for std::chrono::duration. More... | |
struct | Input< T, EnableIfCanUseEnumAsStrongTypedef< T > > |
struct | Input< T, std::enable_if_t<!detail::kCustomParserDefined< T > &&io::detail::kEnableArrayParser< T > > > |
struct | Input< T, std::enable_if_t<!detail::kCustomParserDefined< T > &&kIsRowType< T > > > |
struct | IO |
A default deducer of parsers/formatters for a type/data format. Can be specialised for a type/format pair providing custom parsers/formatters. More... | |
struct | IsBitStringCompatible |
struct | IsBitStringCompatible< std::array< bool, N > > |
struct | IsBitStringCompatible< std::bitset< N > > |
struct | IsBitStringCompatible<::utils::Flags< Enum > > |
struct | IsByteaCompatible |
struct | IsByteaCompatible< std::string > |
struct | IsByteaCompatible< std::string_view > |
struct | IsByteaCompatible< std::vector< char, VectorArgs... > > |
struct | IsByteaCompatible< std::vector< unsigned char, VectorArgs... > > |
struct | IsCompatibleContainer |
Mark C++ container type as supported by the driver. More... | |
struct | IsCompatibleContainer< io::detail::ContainerChunk< Container > > |
struct | IsCompatibleContainer< std::array< T, Size > > |
struct | IsCompatibleContainer< std::set< T... > > |
struct | IsCompatibleContainer< std::unordered_set< T... > > |
struct | IsCompatibleContainer< std::vector< T... > > |
struct | IsCompatibleContainer<::utils::impl::ProjectingView< const Container, Projection > > |
struct | IsMappedToArray |
Detect if the C++ type is mapped to a Postgres array type. More... | |
struct | IsMappedToPg |
Detect if the C++ type is mapped to a Postgres type. More... | |
struct | IsMappedToPg< boost::optional< T > > |
struct | IsMappedToPg< Null< T > > |
struct | IsMappedToPg< std::optional< T > > |
struct | IsMappedToPg< T, EnableIfCanUseEnumAsStrongTypedef< T > > |
struct | IsMappedToPg<::utils::OptionalRef< T > > |
struct | IsMappedToPg<::utils::StrongTypedef< Tag, T, Ops, Enable > > |
struct | IsMappedToSystemType |
Detect if the C++ type is mapped to a Postgres system type. More... | |
struct | IsMappedToUserType |
Detect if the C++ type is mapped to a Postgres user type. More... | |
struct | IsNullable |
Metafunction to detect nullability of a type. More... | |
struct | IsNullable< boost::optional< T > > |
Nullability traits for boost::optional. More... | |
struct | IsNullable< Null< T > > |
struct | IsNullable< std::optional< T > > |
Nullability traits for std::optional. More... | |
struct | IsNullable<::utils::OptionalRef< T > > |
Nullability traits for USERVER_NAMESPACE::utils::OptionalRef. More... | |
struct | IsNullable<::utils::StrongTypedef< Tag, T, Ops, Enable > > |
struct | IsSpecialMapping |
Mark C++ mapping a special case for disambiguation. More... | |
struct | IsSpecialMapping< boost::optional< T > > |
struct | IsSpecialMapping< Null< T > > |
struct | IsSpecialMapping< std::optional< T > > |
struct | IsSpecialMapping< T, EnableIfCanUseEnumAsStrongTypedef< T > > |
struct | IsSpecialMapping<::utils::OptionalRef< T > > |
struct | IsSpecialMapping<::utils::StrongTypedef< Tag, T, Ops, Enable > > |
struct | IsSuitableRowType |
struct | IsSuitableRowType<::utils::StrongTypedef< Tag, T, Ops, Enable > > |
struct | IsTuple |
struct | IsTuple< std::tuple< T... > > |
struct | IsTupleOfRefs |
struct | IsTupleOfRefs< std::tuple< T &... > > |
struct | Output |
Customisation point for formatters. More... | |
struct | Output< BoundedRange< T >, std::enable_if_t< kHasFormatter< T > > > |
struct | Output< formats::json::Value > |
struct | Output< io::detail::Box > |
struct | Output< io::detail::Circle > |
struct | Output< io::detail::Line > |
struct | Output< io::detail::LineSegment > |
struct | Output< io::detail::Path > |
struct | Output< io::detail::Point > |
struct | Output< io::detail::Polygon > |
struct | Output< PlainJson > |
struct | Output< Range< T >, std::enable_if_t< kHasFormatter< T > > > |
struct | Output< std::chrono::duration< Rep, Period > > |
Binary formatter for std::chrono::duration. More... | |
struct | Output< T, EnableIfCanUseEnumAsStrongTypedef< T > > |
struct | Output< T, std::enable_if_t<!detail::kCustomFormatterDefined< T > &&io::detail::kEnableArrayFormatter< T > > > |
struct | Output< T, std::enable_if_t<!detail::kCustomFormatterDefined< T > &&kIsMappedToUserType< T > &&kIsRowType< T > > > |
struct | ParserBufferCategory |
Buffer category for parser. More... | |
struct | ParserBufferCategory< BufferParser< boost::optional< T > > > |
struct | ParserBufferCategory< BufferParser< std::optional< T > > > |
struct | ParserBufferCategory< BufferParser<::utils::StrongTypedef< Tag, T, Ops, Enable > > > |
struct | ParserBufferCategory< io::detail::ArrayBinaryParser< T > > |
struct | ParserBufferCategory< io::detail::BoundedRangeBinaryParser< T > > |
struct | ParserBufferCategory< io::detail::BoxParser > |
struct | ParserBufferCategory< io::detail::CircleParser > |
struct | ParserBufferCategory< io::detail::CompositeBinaryParser< T > > |
struct | ParserBufferCategory< io::detail::EnumParser< T > > |
struct | ParserBufferCategory< io::detail::JsonParser > |
struct | ParserBufferCategory< io::detail::LineParser > |
struct | ParserBufferCategory< io::detail::LineSegmentParser > |
struct | ParserBufferCategory< io::detail::PathParser > |
struct | ParserBufferCategory< io::detail::PointParser > |
struct | ParserBufferCategory< io::detail::PolygonParser > |
struct | ParserBufferCategory< io::detail::RangeBinaryParser< T > > |
struct | RemoveTupleReferences |
struct | RemoveTupleReferences< std::tuple< T... > > |
struct | RowCategory |
struct | RowCategory<::utils::StrongTypedef< Tag, T, Ops, Enable > > |
struct | TupleHasFormatters |
struct | TupleHasFormatters< std::tuple< T... > > |
struct | TupleHasParsers |
struct | TupleHasParsers< std::tuple< T... > > |
struct | TypeBufferCategory |
Typedefs | |
template<bool Value> | |
using | BoolConstant = std::integral_constant<bool, Value> |
template<std::size_t Value> | |
using | SizeConstant = std::integral_constant<std::size_t, Value> |
template<typename T> | |
using | EnableIfByteaCompatible = std::enable_if_t<IsByteaCompatible<T>{}> |
template<typename T> | |
using | EnableIfCanUseEnumAsStrongTypedef = std::enable_if_t<impl::CheckCanUseEnumAsStrongTypedef<T>()> |
template<typename T> | |
using | ContainerFinaleElementType = typename ContainerFinalElement<T>::type |
Functions | |
template<typename T> | |
auto | Inserter (T &container) |
template<typename T, T... Values> | |
constexpr std::array< T, sizeof...(Values)> | MakeArray (const std::integer_sequence< T, Values... > &) |
Variables | |
template<typename T> | |
constexpr bool | kCanReserve = CanReserve<T>::value |
template<typename T> | |
constexpr bool | kCanResize = CanResize<T>::value |
template<typename T> | |
constexpr bool | kCanClear = CanClear<T>::value |
template<typename T> | |
constexpr bool | kIsNullable = IsNullable<T>::value |
template<typename T> | |
constexpr bool | kIsByteaCompatible = IsByteaCompatible<T>::value |
template<typename Container> | |
constexpr bool | kHasFixedDimensions = HasFixedDimensions<Container>::value |
template<typename T> | |
constexpr std::size_t | kDimensionSize = DimensionSize<T>::value |
template<typename Tag, typename T, ::utils::StrongTypedefOps Ops, typename Enable> | |
constexpr bool | kIsStrongTypedefDirectlyMapped |
template<typename T> | |
constexpr bool | kIsBitStringCompatible = IsBitStringCompatible<T>::value |
Type mapping traits | |
template<typename T> | |
constexpr bool | kIsMappedToSystemType = IsMappedToSystemType<T>::value |
template<typename T> | |
constexpr bool | kIsMappedToUserType = IsMappedToUserType<T>::value |
template<typename T> | |
constexpr bool | kIsMappedToArray = IsMappedToArray<T>::value |
template<typename T> | |
constexpr bool | kIsMappedToPg = IsMappedToPg<T>::value |
template<typename T> | |
constexpr bool | kIsSpecialMapping = IsSpecialMapping<T>::value |
Traits for containers | |
template<typename T> | |
constexpr bool | kIsCompatibleContainer = IsCompatibleContainer<T>::value |
template<typename T> | |
constexpr bool | kIsFixedSizeContainer = meta::kIsFixedSizeContainer<T> |
template<typename T> | |
constexpr std::size_t | kDimensionCount = DimensionCount<T>::value |
Buffer category for a type | |
template<typename T> | |
constexpr BufferCategory | kTypeBufferCategory = TypeBufferCategory<T>::value |
Row type traits | |
enum class | RowCategoryType { kNonRow , kTuple , kAggregate , kIntrusiveIntrospection } |
template<RowCategoryType Tag> | |
using | RowCategoryConstant = std::integral_constant<RowCategoryType, Tag> |
template<typename T> | |
constexpr bool | kIsSuitableRowType = IsSuitableRowType<T>::value |
template<typename T> | |
constexpr RowCategoryType | kRowCategory = RowCategory<T>::value |
template<typename T> | |
constexpr bool | kIsRowType = kRowCategory<T> != RowCategoryType::kNonRow |
template<typename T> | |
constexpr bool | kIsCompositeType = kIsRowType<T> |
template<typename T> | |
constexpr bool | kIsColumnType = kRowCategory<T> == RowCategoryType::kNonRow |
template<typename T> | |
constexpr ExtractionTag< T >::type | kExtractionTag {} |
template<typename T> | |
constexpr void | AssertIsValidRowType () |
Detect iostream operators | |
template<typename T> | |
using | HasOutputOperator = decltype(std::declval<std::ostream&>() << std::declval<T&>()) |
template<typename T> | |
using | HasInputOperator = decltype(std::declval<std::istream&>() >> std::declval<T&>()) |
template<typename T> | |
constexpr bool | kHasOutputOperator = meta::kIsDetected<HasOutputOperator, T> |
template<typename T> | |
constexpr bool | kHasInputOperator = meta::kIsDetected<HasInputOperator, T> |
Shortcut metafunction result values | |
template<typename T> | |
using | ParserBufferCategoryType = typename ParserBufferCategory<T>::type |
template<typename T> | |
constexpr bool | kHasParser = HasParser<T>::value |
template<typename T> | |
constexpr bool | kHasFormatter = HasFormatter<T>::value |
template<typename T> | |
constexpr BufferCategory | kParserBufferCategory = ParserBufferCategory<T>::value |
template<typename T> | |
constexpr bool | CheckParser () |
template<typename T> | |
constexpr void | CheckFormatter () |
using storages::postgres::io::traits::BoolConstant = std::integral_constant<bool, Value> |
Definition at line 18 of file type_traits.hpp.
using storages::postgres::io::traits::ContainerFinaleElementType = typename ContainerFinalElement<T>::type |
Definition at line 119 of file type_traits.hpp.
using storages::postgres::io::traits::EnableIfByteaCompatible = std::enable_if_t<IsByteaCompatible<T>{}> |
using storages::postgres::io::traits::EnableIfCanUseEnumAsStrongTypedef = std::enable_if_t<impl::CheckCanUseEnumAsStrongTypedef<T>()> |
Definition at line 105 of file strong_typedef.hpp.
using storages::postgres::io::traits::HasInputOperator = decltype(std::declval<std::istream&>() >> std::declval<T&>()) |
Definition at line 64 of file type_traits.hpp.
using storages::postgres::io::traits::HasOutputOperator = decltype(std::declval<std::ostream&>() << std::declval<T&>()) |
Definition at line 58 of file type_traits.hpp.
using storages::postgres::io::traits::ParserBufferCategoryType = typename ParserBufferCategory<T>::type |
Definition at line 173 of file traits.hpp.
using storages::postgres::io::traits::RowCategoryConstant = std::integral_constant<RowCategoryType, Tag> |
Definition at line 119 of file row_types.hpp.
using storages::postgres::io::traits::SizeConstant = std::integral_constant<std::size_t, Value> |
Definition at line 20 of file type_traits.hpp.
|
strong |
Definition at line 116 of file row_types.hpp.
|
constexpr |
Definition at line 140 of file row_types.hpp.
|
constexpr |
Definition at line 152 of file traits.hpp.
|
constexpr |
Definition at line 132 of file traits.hpp.
auto storages::postgres::io::traits::Inserter | ( | T & | container | ) |
Definition at line 167 of file type_traits.hpp.
|
constexpr |
Definition at line 92 of file array_types.hpp.
|
inlineconstexpr |
Definition at line 164 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 147 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 156 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 91 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 64 of file array_types.hpp.
|
inlineconstexpr |
Definition at line 173 of file row_types.hpp.
|
inlineconstexpr |
Definition at line 52 of file array_types.hpp.
|
inlineconstexpr |
Definition at line 128 of file traits.hpp.
|
inlineconstexpr |
Definition at line 67 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 61 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 126 of file traits.hpp.
|
inlineconstexpr |
Definition at line 36 of file bitstring.hpp.
|
inlineconstexpr |
|
inlineconstexpr |
Definition at line 160 of file row_types.hpp.
|
inlineconstexpr |
Definition at line 76 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 157 of file row_types.hpp.
|
inlineconstexpr |
Definition at line 79 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 40 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 46 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 28 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 34 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 16 of file nullable_traits.hpp.
|
inlineconstexpr |
Definition at line 154 of file row_types.hpp.
|
inlineconstexpr |
Definition at line 52 of file type_traits.hpp.
|
inlineconstexpr |
Definition at line 45 of file strong_typedef.hpp.
|
inlineconstexpr |
Definition at line 114 of file row_types.hpp.
|
inlineconstexpr |
Definition at line 175 of file traits.hpp.
|
inlineconstexpr |
Definition at line 137 of file row_types.hpp.
|
inlineconstexpr |
Definition at line 192 of file traits.hpp.