LeechCraft  0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
LC::Util::oral::detail Namespace Reference

Namespaces

 SQLite
 

Classes

struct  AdaptDelete
 
class  AdaptInsert
 
class  AdaptUpdate
 
struct  AggregateType
 
class  AssignList
 
struct  CountAll
 
struct  CustomFunctionType
 
class  DeleteByFieldsWrapper
 
struct  DetectShift
 
struct  DetectShift< Seq, Seq >
 
struct  DetectShift< Seq, std::tuple< Args... > >
 
class  ExprTree
 
class  ExprTree< ExprType::ConstTrue, void, void >
 
class  ExprTree< ExprType::LeafData, std::tuple< Ts... >, void >
 
class  ExprTree< ExprType::LeafData, T, void >
 
class  ExprTree< ExprType::LeafStaticPlaceholder, MemberPtrs< Ptr >, void >
 
struct  GroupBy
 
struct  GroupNone
 
struct  HandleAggSelector
 
struct  HandleSelector
 
struct  HandleSelector< T, AggregateType< AggregateFunction::Count, Ptr > >
 
struct  HandleSelector< T, AggregateType< AggregateFunction::Count, std::true_type {}> >
 
struct  HandleSelector< T, AggregateType< AggregateFunction::Max, Ptr > >
 
struct  HandleSelector< T, AggregateType< AggregateFunction::Min, Ptr > >
 
struct  HandleSelector< T, CustomFunctionType< FunRetType, Fun, Ptr > >
 
struct  HandleSelector< T, MemberPtrs< Ptrs... > >
 
struct  HandleSelector< T, SelectDistinct< U > >
 
struct  HandleSelector< T, SelectorUnion< L, R > >
 
struct  HandleSelector< T, SelectWhole >
 
struct  HSBaseAll
 
struct  HSBaseFirst
 
struct  InfixBinary
 
struct  InfixBinaryProxy
 
struct  IsReferencesTarget
 
struct  IsReferencesTarget< PKey< U, Tags... > >
 
struct  IsReferencesTarget< Unique< U > >
 
struct  LimitNone
 
struct  MemberPtrs
 
struct  OffsetNone
 
struct  OrderBy
 
struct  OrderNone
 
struct  SelectDistinct
 
struct  SelectorUnion
 
struct  SelectWhole
 
class  SelectWrapper
 
class  SelectWrapperCommon
 
struct  UnspecializedSentinel
 
struct  WrapDirect
 

Typedefs

template<typename Seq , int Idx>
using ValueAtC_t = std::decay_t< decltype(Get< Idx >(std::declval< Seq >()))>
 
template<typename T >
using UnwrapIndirect_t = typename std::conditional_t< IsIndirect< T > {}, T, WrapDirect< T > >::value_type
 

Enumerations

enum  ExprType {
  ExprType::ConstTrue,
  ExprType::LeafStaticPlaceholder,
  ExprType::LeafData,
  ExprType::Greater,
  ExprType::Less,
  ExprType::Equal,
  ExprType::Geq,
  ExprType::Leq,
  ExprType::Neq,
  ExprType::Like,
  ExprType::ILike,
  ExprType::And,
  ExprType::Or
}
 
enum  AggregateFunction {
  AggregateFunction::Count,
  AggregateFunction::Min,
  AggregateFunction::Max
}
 
enum  SelectBehaviour {
  SelectBehaviour::Some,
  SelectBehaviour::One
}
 
enum  ResultBehaviour {
  ResultBehaviour::All,
  ResultBehaviour::First
}
 

Functions

bool MatchesSchema (const QString &baseName, const QString &schema, QSqlDatabase &db)
 
template<size_t Idx, typename Seq >
decltype(auto) constexpr Get (const Seq &seq)
 
template<size_t Idx, typename Seq >
decltype(auto) constexpr Get (Seq &seq)
 
template<typename Seq >
constexpr auto GetFullSize (const Seq &seq)
 
template<typename T , CtString str>
consteval auto MorphFieldName ()
 
template<typename Seq , int Idx>
consteval auto GetFieldName ()
 
template<typename T >
QVariant ToVariantF (const T &t) noexcept
 
template<size_t Ix, typename Seq >
void BindAtIndex (const Seq &seq, QSqlQuery &query, bool bindPrimaryKey)
 
template<typename Seq >
auto DoInsert (const Seq &seq, QSqlQuery &insertQuery, bool bindPrimaryKey)
 
template<typename Seq >
consteval int PKeyIndexUnsafe ()
 
template<typename Seq >
consteval int PKeyIndex ()
 
template<typename Seq >
constexpr auto HasAutogenPKey () noexcept
 
template<typename Seq >
constexpr auto ExtractReplaceFields (InsertAction::Replace::WholeType)
 
template<typename Seq , auto... Ptrs>
constexpr auto ExtractReplaceFields (InsertAction::Replace::FieldsType< Ptrs... >)
 
template<typename T , size_t... Indices>
InitializeFromQuery (const QSqlQuery &q, std::index_sequence< Indices... >, int startIdx) noexcept
 
template<ExprType Type>
constexpr auto TypeToSql () noexcept
 
constexpr bool IsRelational (ExprType type) noexcept
 
template<ExprType Type>
constexpr auto WrapSubexpr (auto subexpr)
 
template<ExprType Type, typename Seq , typename L , typename R >
constexpr bool Typecheck ()
 
template<typename T >
constexpr auto AsLeafData (const T &node) noexcept
 
template<ExprType Type, typename L , typename R >
auto MakeExprTree (const L &left, const R &right) noexcept
 
template<typename L , typename R >
requires EitherIsExprTree< L, R > auto operator== (const L &left, const R &right) noexcept
 
template<typename L , typename R >
requires EitherIsExprTree< L, R > auto operator< (const L &left, const R &right) noexcept
 
template<typename L , typename R >
requires EitherIsExprTree< L, R > auto operator<= (const L &left, const R &right) noexcept
 
template<typename L , typename R >
requires EitherIsExprTree< L, R > auto operator> (const L &left, const R &right) noexcept
 
template<typename L , typename R >
requires EitherIsExprTree< L, R > auto operator>= (const L &left, const R &right) noexcept
 
template<typename L , typename R >
requires EitherIsExprTree< L, R > auto operator!= (const L &left, const R &right) noexcept
 
template<typename L , ExprType Op>
auto operator| (const L &left, InfixBinary< Op >) noexcept
 
template<typename L , ExprType Op, typename R >
auto operator| (const InfixBinaryProxy< L, Op > &left, const R &right) noexcept
 
template<typename L , typename R >
requires EitherIsExprTree< L, R > auto operator && (const L &left, const R &right) noexcept
 
template<typename L , typename R >
requires EitherIsExprTree< L, R > auto operator|| (const L &left, const R &right) noexcept
 
template<CtString BindPrefix, typename Seq , typename Tree >
constexpr auto ExprTreeToSql () noexcept
 
template<CtString BindPrefix, typename Seq , typename Tree >
void BindExprTree (const Tree &tree, QSqlQuery &query)
 
template<typename L , typename R >
requires IsSelector< L > &&IsSelector< R > SelectorUnion< L, R > operator+ (L, R) noexcept
 
template<auto Ptr>
auto MemberFromVariant (const QVariant &var) noexcept
 
template<auto Ptr>
auto MakeIndexedQueryHandler (const QSqlQuery &q, int startIdx=0) noexcept
 
template<auto... Ptrs>
auto MakeIndexedQueryHandler (MemberPtrs< Ptrs... >, const QSqlQuery &q, int startIdx) noexcept
 
template<size_t RepIdx, size_t TupIdx, typename Tuple , typename NewType >
decltype(auto) constexpr GetReplaceTupleElem (Tuple &&tuple, NewType &&arg) noexcept
 
template<size_t RepIdx, typename NewType , typename Tuple , size_t... TupIdxs>
constexpr auto ReplaceTupleElemImpl (Tuple &&tuple, NewType &&arg, std::index_sequence< TupIdxs... >) noexcept
 
template<size_t RepIdx, typename NewType , typename... TupleArgs>
constexpr auto ReplaceTupleElem (std::tuple< TupleArgs... > &&tuple, NewType &&arg) noexcept
 
template<typename... LArgs, typename... RArgs>
auto Combine (std::tuple< LArgs... > &&left, std::tuple< RArgs... > &&right) noexcept
 
template<typename... LArgs, typename R >
auto Combine (std::tuple< LArgs... > &&left, const R &right) noexcept
 
template<typename L , typename... RArgs>
auto Combine (const L &left, std::tuple< RArgs... > &&right) noexcept
 
template<typename L , typename R >
auto Combine (const L &left, const R &right) noexcept
 
template<ResultBehaviour ResultBehaviour, typename ResList >
decltype(auto) HandleResultBehaviour (ResList &&list) noexcept
 
template<typename L , typename O >
constexpr auto LimitOffsetToString () noexcept
 
template<typename L , typename O >
void BindLimitOffset (QSqlQuery &query, L limit, O offset) noexcept
 
constexpr auto CombineBehaviour (ResultBehaviour l, ResultBehaviour r) noexcept
 
template<template< typename... > typename Tgt = std::tuple, template< typename... > typename Src, typename... Vals>
constexpr auto MapTy (Src< Vals... >, auto f)
 
template<typename Seq , auto... Ptrs>
constexpr auto CreateIndex (const QSqlDatabase &db, Index< Ptrs... >)
 
template<typename Seq >
void AdaptCreateIndices (const QSqlDatabase &db)
 
template<auto... Ptrs>
constexpr auto ExtractConstraintFields (UniqueSubset< Ptrs... >)
 
template<auto... Ptrs>
constexpr auto ExtractConstraintFields (PrimaryKey< Ptrs... >)
 
template<typename T >
constexpr auto GetConstraintsStrings () noexcept
 
template<typename ImplFactory , typename T , size_t... Indices>
constexpr auto GetTypes (std::index_sequence< Indices... >) noexcept
 
template<auto Name, typename ImplFactory , typename T >
constexpr auto AdaptCreateTableNamed () noexcept
 
template<typename ImplFactory , typename T >
constexpr auto AdaptCreateTable () noexcept
 

Variables

template<typename Seq >
constexpr auto FullSize = decltype (GetFullSize (std::declval<Seq> ()))::value
 
template<typename S >
constexpr auto SeqIndices = std::make_index_sequence<SeqSize<S>> {}
 
template<typename S >
constexpr auto FieldNames
 
template<typename S >
constexpr auto BoundFieldNames
 
template<typename S >
constexpr auto QualifiedFieldNames
 
template<auto Ptr>
constexpr auto FieldNameByPtr = MorphFieldName<MemberPtrStruct_t<Ptr>, MemberNameByPtr<Ptr>> ()
 
template<auto Ptr>
constexpr auto QualifiedFieldNameByPtr = MemberPtrStruct_t<Ptr>::ClassName + "." + FieldNameByPtr<Ptr>
 
template<typename T >
concept TypeNameCustomizedMember = requires { typename T::TypeName; }
 
template<typename T >
concept BaseTypeCustomized = requires { typename T::BaseType; }
 
template<typename T >
constexpr bool IsPKey = false
 
template<typename U , typename... Tags>
constexpr bool IsPKey< PKey< U, Tags... > > = true
 
template<typename Seq >
constexpr int PKeyIndex_v = PKeyIndex<Seq> ()
 
template<typename Seq >
concept HasPKey = PKeyIndexUnsafe<Seq> () >= 0
 
template<typename T >
constexpr bool IsExprTree = false
 
template<ExprType Type, typename L , typename R >
constexpr bool IsExprTree< ExprTree< Type, L, R > > = true
 
constexpr auto ConstTrueTree_v = ExprTree<ExprType::ConstTrue> {}
 
template<typename L , typename R >
concept EitherIsExprTree = IsExprTree<L> || IsExprTree<R>
 
template<typename T >
constexpr bool IsSelector = false
 
template<>
constexpr bool IsSelector< SelectWhole > = true
 
template<AggregateFunction Fun, auto Ptr>
constexpr bool IsSelector< AggregateType< Fun, Ptr > > = true
 
template<typename FunRetType , CtString Fun, auto Ptr>
constexpr bool IsSelector< CustomFunctionType< FunRetType, Fun, Ptr > > = true
 
template<auto... Ptrs>
constexpr bool IsSelector< MemberPtrs< Ptrs... > > = true
 
template<typename L , typename R >
constexpr bool IsSelector< SelectorUnion< L, R > > = true
 
template<typename T >
constexpr bool IsSelector< SelectDistinct< T > > = true
 

Typedef Documentation

◆ UnwrapIndirect_t

template<typename T >
using LC::Util::oral::detail::UnwrapIndirect_t = typedef typename std::conditional_t<IsIndirect<T> {}, T, WrapDirect<T> >::value_type

Definition at line 600 of file oral.h.

◆ ValueAtC_t

template<typename Seq , int Idx>
using LC::Util::oral::detail::ValueAtC_t = typedef std::decay_t<decltype (Get<Idx> (std::declval<Seq> ()))>

Definition at line 290 of file oral.h.

Enumeration Type Documentation

◆ AggregateFunction

Enumerator
Count 
Min 
Max 

Definition at line 1019 of file oral.h.

◆ ExprType

Enumerator
ConstTrue 
LeafStaticPlaceholder 
LeafData 
Greater 
Less 
Equal 
Geq 
Leq 
Neq 
Like 
ILike 
And 
Or 

Definition at line 524 of file oral.h.

◆ ResultBehaviour

Enumerator
All 
First 

Definition at line 1233 of file oral.h.

◆ SelectBehaviour

Enumerator
Some 
One 

Definition at line 1158 of file oral.h.

Function Documentation

◆ AdaptCreateIndices()

template<typename Seq >
void LC::Util::oral::detail::AdaptCreateIndices ( const QSqlDatabase &  db)

Definition at line 1730 of file oral.h.

References MapTy(), and LC::Util::oral::requires().

+ Here is the call graph for this function:

◆ AdaptCreateTable()

template<typename ImplFactory , typename T >
constexpr auto LC::Util::oral::detail::AdaptCreateTable ( )
noexcept

Definition at line 1787 of file oral.h.

◆ AdaptCreateTableNamed()

template<auto Name, typename ImplFactory , typename T >
constexpr auto LC::Util::oral::detail::AdaptCreateTableNamed ( )
noexcept

Definition at line 1764 of file oral.h.

References LC::Util::JoinTup(), and LC::Util::ZipWith().

+ Here is the call graph for this function:

◆ AsLeafData()

template<typename T >
constexpr auto LC::Util::oral::detail::AsLeafData ( const T &  node)
noexcept

Definition at line 789 of file oral.h.

Referenced by MakeExprTree(), and LC::Util::oral::detail::ExprTree< ExprType::LeafStaticPlaceholder, MemberPtrs< Ptr >, void >::operator=().

+ Here is the caller graph for this function:

◆ BindAtIndex()

template<size_t Ix, typename Seq >
void LC::Util::oral::detail::BindAtIndex ( const Seq &  seq,
QSqlQuery &  query,
bool  bindPrimaryKey 
)

Definition at line 305 of file oral.h.

References IsPKey, LC::Util::ToString(), and ToVariantF().

+ Here is the call graph for this function:

◆ BindExprTree()

template<CtString BindPrefix, typename Seq , typename Tree >
void LC::Util::oral::detail::BindExprTree ( const Tree &  tree,
QSqlQuery &  query 
)

Definition at line 1014 of file oral.h.

Referenced by LC::Util::oral::detail::DeleteByFieldsWrapper< T >::operator()(), and LC::Util::oral::detail::AdaptUpdate< T >::operator()().

+ Here is the caller graph for this function:

◆ BindLimitOffset()

template<typename L , typename O >
void LC::Util::oral::detail::BindLimitOffset ( QSqlQuery &  query,
limit,
offset 
)
noexcept

Definition at line 1295 of file oral.h.

◆ Combine() [1/4]

template<typename... LArgs, typename... RArgs>
auto LC::Util::oral::detail::Combine ( std::tuple< LArgs... > &&  left,
std::tuple< RArgs... > &&  right 
)
noexcept

Definition at line 1210 of file oral.h.

Referenced by LC::Util::oral::detail::HandleSelector< T, SelectorUnion< L, R > >::Initializer().

+ Here is the caller graph for this function:

◆ Combine() [2/4]

template<typename... LArgs, typename R >
auto LC::Util::oral::detail::Combine ( std::tuple< LArgs... > &&  left,
const R &  right 
)
noexcept

Definition at line 1216 of file oral.h.

References LC::Util::oral::sph::tuple.

◆ Combine() [3/4]

template<typename L , typename... RArgs>
auto LC::Util::oral::detail::Combine ( const L &  left,
std::tuple< RArgs... > &&  right 
)
noexcept

Definition at line 1222 of file oral.h.

References LC::Util::oral::sph::tuple.

◆ Combine() [4/4]

template<typename L , typename R >
auto LC::Util::oral::detail::Combine ( const L &  left,
const R &  right 
)
noexcept

Definition at line 1228 of file oral.h.

References LC::Util::oral::sph::tuple.

◆ CombineBehaviour()

constexpr auto LC::Util::oral::detail::CombineBehaviour ( ResultBehaviour  l,
ResultBehaviour  r 
)
noexcept

Definition at line 1390 of file oral.h.

References All, and First.

◆ CreateIndex()

template<typename Seq , auto... Ptrs>
constexpr auto LC::Util::oral::detail::CreateIndex ( const QSqlDatabase &  db,
Index< Ptrs... >   
)

Definition at line 1720 of file oral.h.

References LC::Util::Join(), and LC::Util::RunTextQuery().

+ Here is the call graph for this function:

◆ DoInsert()

template<typename Seq >
auto LC::Util::oral::detail::DoInsert ( const Seq &  seq,
QSqlQuery &  insertQuery,
bool  bindPrimaryKey 
)

Definition at line 312 of file oral.h.

References LC::Util::DBLock::DumpError().

Referenced by LC::Util::oral::detail::AdaptUpdate< T >::operator()().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ExprTreeToSql()

template<CtString BindPrefix, typename Seq , typename Tree >
constexpr auto LC::Util::oral::detail::ExprTreeToSql ( )
noexcept

Definition at line 1008 of file oral.h.

Referenced by LC::Util::oral::detail::DeleteByFieldsWrapper< T >::operator()(), and LC::Util::oral::detail::AdaptUpdate< T >::operator()().

+ Here is the caller graph for this function:

◆ ExtractConstraintFields() [1/2]

template<auto... Ptrs>
constexpr auto LC::Util::oral::detail::ExtractConstraintFields ( UniqueSubset< Ptrs... >  )

Definition at line 1737 of file oral.h.

References LC::Util::Join().

Referenced by GetConstraintsStrings().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ExtractConstraintFields() [2/2]

template<auto... Ptrs>
constexpr auto LC::Util::oral::detail::ExtractConstraintFields ( PrimaryKey< Ptrs... >  )

Definition at line 1743 of file oral.h.

References LC::Util::Join().

+ Here is the call graph for this function:

◆ ExtractReplaceFields() [1/2]

template<typename Seq >
constexpr auto LC::Util::oral::detail::ExtractReplaceFields ( InsertAction::Replace::WholeType  )

Definition at line 363 of file oral.h.

References LC::Util::oral::sph::tuple.

◆ ExtractReplaceFields() [2/2]

template<typename Seq , auto... Ptrs>
constexpr auto LC::Util::oral::detail::ExtractReplaceFields ( InsertAction::Replace::FieldsType< Ptrs... >  )

Definition at line 377 of file oral.h.

References LC::Util::oral::sph::tuple.

◆ Get() [1/2]

template<size_t Idx, typename Seq >
decltype(auto) constexpr LC::Util::oral::detail::Get ( const Seq &  seq)

Definition at line 91 of file oral.h.

References LC::Util::oral::sph::fields.

◆ Get() [2/2]

template<size_t Idx, typename Seq >
decltype(auto) constexpr LC::Util::oral::detail::Get ( Seq &  seq)

Definition at line 98 of file oral.h.

References LC::Util::oral::sph::fields.

◆ GetConstraintsStrings()

template<typename T >
constexpr auto LC::Util::oral::detail::GetConstraintsStrings ( )
noexcept

Definition at line 1749 of file oral.h.

References ExtractConstraintFields(), MapTy(), LC::Util::oral::requires(), and LC::Util::oral::sph::tuple.

+ Here is the call graph for this function:

◆ GetFieldName()

template<typename Seq , int Idx>
consteval auto LC::Util::oral::detail::GetFieldName ( )

◆ GetFullSize()

template<typename Seq >
constexpr auto LC::Util::oral::detail::GetFullSize ( const Seq &  seq)

Definition at line 105 of file oral.h.

References LC::Util::oral::sph::fields.

◆ GetReplaceTupleElem()

template<size_t RepIdx, size_t TupIdx, typename Tuple , typename NewType >
decltype(auto) constexpr LC::Util::oral::detail::GetReplaceTupleElem ( Tuple &&  tuple,
NewType &&  arg 
)
noexcept

Definition at line 1166 of file oral.h.

References LC::Util::oral::sph::tuple.

◆ GetTypes()

template<typename ImplFactory , typename T , size_t... Indices>
constexpr auto LC::Util::oral::detail::GetTypes ( std::index_sequence< Indices... >  )
noexcept

Definition at line 1758 of file oral.h.

References LC::Util::oral::sph::tuple.

◆ HandleResultBehaviour()

template<ResultBehaviour ResultBehaviour, typename ResList >
decltype(auto) LC::Util::oral::detail::HandleResultBehaviour ( ResList &&  list)
noexcept

Definition at line 1240 of file oral.h.

References All, and First.

◆ HasAutogenPKey()

template<typename Seq >
constexpr auto LC::Util::oral::detail::HasAutogenPKey ( )
noexcept

Definition at line 354 of file oral.h.

◆ InitializeFromQuery()

template<typename T , size_t... Indices>
T LC::Util::oral::detail::InitializeFromQuery ( const QSqlQuery &  q,
std::index_sequence< Indices... >  ,
int  startIdx 
)
noexcept

Definition at line 512 of file oral.h.

References LC::Util::oral::Convert, and LC::Util::oral::requires().

+ Here is the call graph for this function:

◆ IsRelational()

constexpr bool LC::Util::oral::detail::IsRelational ( ExprType  type)
noexcept

Definition at line 570 of file oral.h.

References Equal, Geq, Greater, ILike, Leq, Less, Like, and Neq.

Referenced by Typecheck().

+ Here is the caller graph for this function:

◆ LimitOffsetToString()

template<typename L , typename O >
constexpr auto LC::Util::oral::detail::LimitOffsetToString ( )
noexcept

Definition at line 1276 of file oral.h.

◆ MakeExprTree()

template<ExprType Type, typename L , typename R >
auto LC::Util::oral::detail::MakeExprTree ( const L &  left,
const R &  right 
)
noexcept

Definition at line 911 of file oral.h.

References AsLeafData().

+ Here is the call graph for this function:

◆ MakeIndexedQueryHandler() [1/2]

template<auto Ptr>
auto LC::Util::oral::detail::MakeIndexedQueryHandler ( const QSqlQuery &  q,
int  startIdx = 0 
)
noexcept

Definition at line 1141 of file oral.h.

Referenced by LC::Util::oral::detail::HandleSelector< T, MemberPtrs< Ptrs... > >::Initializer(), and MakeIndexedQueryHandler().

+ Here is the caller graph for this function:

◆ MakeIndexedQueryHandler() [2/2]

template<auto... Ptrs>
auto LC::Util::oral::detail::MakeIndexedQueryHandler ( MemberPtrs< Ptrs... >  ,
const QSqlQuery &  q,
int  startIdx 
)
noexcept

Definition at line 1147 of file oral.h.

References MakeIndexedQueryHandler(), and LC::Util::oral::sph::tuple.

+ Here is the call graph for this function:

◆ MapTy()

template<template< typename... > typename Tgt = std::tuple, template< typename... > typename Src, typename... Vals>
constexpr auto LC::Util::oral::detail::MapTy ( Src< Vals... >  ,
auto  f 
)

Definition at line 1714 of file oral.h.

References LC::Util::oral::sph::f.

Referenced by AdaptCreateIndices(), and GetConstraintsStrings().

+ Here is the caller graph for this function:

◆ MatchesSchema()

bool LC::Util::oral::detail::MatchesSchema ( const QString &  baseName,
const QString &  schema,
QSqlDatabase &  db 
)

Definition at line 18 of file migrate.h.

References LC::Util::RunTextQuery().

Referenced by LC::Util::oral::Migrate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MemberFromVariant()

template<auto Ptr>
auto LC::Util::oral::detail::MemberFromVariant ( const QVariant &  var)
noexcept

Definition at line 1135 of file oral.h.

◆ MorphFieldName()

template<typename T , CtString str>
consteval auto LC::Util::oral::detail::MorphFieldName ( )

Definition at line 115 of file oral.h.

References LC::Util::oral::requires().

+ Here is the call graph for this function:

◆ operator &&()

template<typename L , typename R >
requires EitherIsExprTree<L, R> auto LC::Util::oral::detail::operator&& ( const L &  left,
const R &  right 
)
noexcept

Definition at line 995 of file oral.h.

◆ operator!=()

template<typename L , typename R >
requires EitherIsExprTree<L, R> auto LC::Util::oral::detail::operator!= ( const L &  left,
const R &  right 
)
noexcept

Definition at line 958 of file oral.h.

◆ operator+()

template<typename L , typename R >
requires IsSelector<L>&& IsSelector<R> SelectorUnion<L, R> LC::Util::oral::detail::operator+ ( ,
 
)
noexcept

Definition at line 1074 of file oral.h.

◆ operator<()

template<typename L , typename R >
requires EitherIsExprTree<L, R> auto LC::Util::oral::detail::operator< ( const L &  left,
const R &  right 
)
noexcept

Definition at line 930 of file oral.h.

◆ operator<=()

template<typename L , typename R >
requires EitherIsExprTree<L, R> auto LC::Util::oral::detail::operator<= ( const L &  left,
const R &  right 
)
noexcept

Definition at line 937 of file oral.h.

◆ operator==()

template<typename L , typename R >
requires EitherIsExprTree<L, R> auto LC::Util::oral::detail::operator== ( const L &  left,
const R &  right 
)
noexcept

Definition at line 923 of file oral.h.

◆ operator>()

template<typename L , typename R >
requires EitherIsExprTree<L, R> auto LC::Util::oral::detail::operator> ( const L &  left,
const R &  right 
)
noexcept

Definition at line 944 of file oral.h.

◆ operator>=()

template<typename L , typename R >
requires EitherIsExprTree<L, R> auto LC::Util::oral::detail::operator>= ( const L &  left,
const R &  right 
)
noexcept

Definition at line 951 of file oral.h.

◆ operator|() [1/2]

template<typename L , ExprType Op>
auto LC::Util::oral::detail::operator| ( const L &  left,
InfixBinary< Op >   
)
noexcept

Definition at line 982 of file oral.h.

◆ operator|() [2/2]

template<typename L , ExprType Op, typename R >
auto LC::Util::oral::detail::operator| ( const InfixBinaryProxy< L, Op > &  left,
const R &  right 
)
noexcept

Definition at line 988 of file oral.h.

◆ operator||()

template<typename L , typename R >
requires EitherIsExprTree<L, R> auto LC::Util::oral::detail::operator|| ( const L &  left,
const R &  right 
)
noexcept

Definition at line 1002 of file oral.h.

◆ PKeyIndex()

template<typename Seq >
consteval int LC::Util::oral::detail::PKeyIndex ( )

Definition at line 340 of file oral.h.

◆ PKeyIndexUnsafe()

template<typename Seq >
consteval int LC::Util::oral::detail::PKeyIndexUnsafe ( )

Definition at line 328 of file oral.h.

◆ ReplaceTupleElem()

template<size_t RepIdx, typename NewType , typename... TupleArgs>
constexpr auto LC::Util::oral::detail::ReplaceTupleElem ( std::tuple< TupleArgs... > &&  tuple,
NewType &&  arg 
)
noexcept

Definition at line 1184 of file oral.h.

References LC::Util::oral::sph::tuple.

◆ ReplaceTupleElemImpl()

template<size_t RepIdx, typename NewType , typename Tuple , size_t... TupIdxs>
constexpr auto LC::Util::oral::detail::ReplaceTupleElemImpl ( Tuple &&  tuple,
NewType &&  arg,
std::index_sequence< TupIdxs... >   
)
noexcept

Definition at line 1175 of file oral.h.

References LC::Util::oral::sph::tuple.

◆ ToVariantF()

template<typename T >
QVariant LC::Util::oral::detail::ToVariantF ( const T &  t)
noexcept

◆ Typecheck()

template<ExprType Type, typename Seq , typename L , typename R >
constexpr bool LC::Util::oral::detail::Typecheck ( )

Definition at line 603 of file oral.h.

References IsRelational(), and LC::Util::oral::requires().

+ Here is the call graph for this function:

◆ TypeToSql()

template<ExprType Type>
constexpr auto LC::Util::oral::detail::TypeToSql ( )
noexcept

Definition at line 546 of file oral.h.

References And, Equal, Geq, Greater, ILike, Leq, Less, Like, Neq, and Or.

◆ WrapSubexpr()

template<ExprType Type>
constexpr auto LC::Util::oral::detail::WrapSubexpr ( auto  subexpr)

Definition at line 583 of file oral.h.

References ILike.

Variable Documentation

◆ BaseTypeCustomized

template<typename T >
concept LC::Util::oral::detail::BaseTypeCustomized = requires { typename T::BaseType; }

Definition at line 163 of file oral.h.

◆ BoundFieldNames

template<typename S >
constexpr auto LC::Util::oral::detail::BoundFieldNames
Initial value:
= []<size_t... Ix> (std::index_sequence<Ix...>) constexpr
{
return std::tuple { (":" + GetFieldName<S, Ix> ())... };
} (SeqIndices<S>)
constexpr detail::ExprTree< detail::ExprType::LeafStaticPlaceholder, detail::MemberPtrs< Ptrs... > > tuple
Definition: oral.h:1086

Definition at line 142 of file oral.h.

◆ ConstTrueTree_v

◆ EitherIsExprTree

template<typename L , typename R >
concept LC::Util::oral::detail::EitherIsExprTree = IsExprTree<L> || IsExprTree<R>

Definition at line 919 of file oral.h.

◆ FieldNameByPtr

template<auto Ptr>
constexpr auto LC::Util::oral::detail::FieldNameByPtr = MorphFieldName<MemberPtrStruct_t<Ptr>, MemberNameByPtr<Ptr>> ()

Definition at line 154 of file oral.h.

◆ FieldNames

template<typename S >
constexpr auto LC::Util::oral::detail::FieldNames
Initial value:
= []<size_t... Ix> (std::index_sequence<Ix...>) constexpr
{
return std::tuple { GetFieldName<S, Ix> ()... };
} (SeqIndices<S>)
constexpr detail::ExprTree< detail::ExprType::LeafStaticPlaceholder, detail::MemberPtrs< Ptrs... > > tuple
Definition: oral.h:1086

Definition at line 136 of file oral.h.

◆ FullSize

template<typename Seq >
constexpr auto LC::Util::oral::detail::FullSize = decltype (GetFullSize (std::declval<Seq> ()))::value

Definition at line 112 of file oral.h.

◆ HasPKey

template<typename Seq >
concept LC::Util::oral::detail::HasPKey = PKeyIndexUnsafe<Seq> () >= 0

Definition at line 351 of file oral.h.

◆ IsExprTree

template<typename T >
constexpr bool LC::Util::oral::detail::IsExprTree = false

◆ IsExprTree< ExprTree< Type, L, R > >

template<ExprType Type, typename L , typename R >
constexpr bool LC::Util::oral::detail::IsExprTree< ExprTree< Type, L, R > > = true

Definition at line 622 of file oral.h.

◆ IsPKey

template<typename T >
constexpr bool LC::Util::oral::detail::IsPKey = false

Definition at line 293 of file oral.h.

Referenced by BindAtIndex().

◆ IsPKey< PKey< U, Tags... > >

template<typename U , typename... Tags>
constexpr bool LC::Util::oral::detail::IsPKey< PKey< U, Tags... > > = true

Definition at line 296 of file oral.h.

◆ IsSelector

template<typename T >
constexpr bool LC::Util::oral::detail::IsSelector = false

Definition at line 1052 of file oral.h.

◆ IsSelector< AggregateType< Fun, Ptr > >

template<AggregateFunction Fun, auto Ptr>
constexpr bool LC::Util::oral::detail::IsSelector< AggregateType< Fun, Ptr > > = true

Definition at line 1058 of file oral.h.

◆ IsSelector< CustomFunctionType< FunRetType, Fun, Ptr > >

template<typename FunRetType , CtString Fun, auto Ptr>
constexpr bool LC::Util::oral::detail::IsSelector< CustomFunctionType< FunRetType, Fun, Ptr > > = true

Definition at line 1061 of file oral.h.

◆ IsSelector< MemberPtrs< Ptrs... > >

template<auto... Ptrs>
constexpr bool LC::Util::oral::detail::IsSelector< MemberPtrs< Ptrs... > > = true

Definition at line 1064 of file oral.h.

◆ IsSelector< SelectDistinct< T > >

template<typename T >
constexpr bool LC::Util::oral::detail::IsSelector< SelectDistinct< T > > = true

Definition at line 1070 of file oral.h.

◆ IsSelector< SelectorUnion< L, R > >

template<typename L , typename R >
constexpr bool LC::Util::oral::detail::IsSelector< SelectorUnion< L, R > > = true

Definition at line 1067 of file oral.h.

◆ IsSelector< SelectWhole >

template<>
constexpr bool LC::Util::oral::detail::IsSelector< SelectWhole > = true
inline

Definition at line 1055 of file oral.h.

◆ PKeyIndex_v

template<typename Seq >
constexpr int LC::Util::oral::detail::PKeyIndex_v = PKeyIndex<Seq> ()

Definition at line 348 of file oral.h.

◆ QualifiedFieldNameByPtr

template<auto Ptr>
constexpr auto LC::Util::oral::detail::QualifiedFieldNameByPtr = MemberPtrStruct_t<Ptr>::ClassName + "." + FieldNameByPtr<Ptr>

Definition at line 157 of file oral.h.

◆ QualifiedFieldNames

template<typename S >
constexpr auto LC::Util::oral::detail::QualifiedFieldNames
Initial value:
= []<size_t... Ix> (std::index_sequence<Ix...>) constexpr
{
return std::tuple { (S::ClassName + "." + GetFieldName<S, Ix> ())... };
} (SeqIndices<S>)
constexpr detail::ExprTree< detail::ExprType::LeafStaticPlaceholder, detail::MemberPtrs< Ptrs... > > tuple
Definition: oral.h:1086

Definition at line 148 of file oral.h.

◆ SeqIndices

template<typename S >
constexpr auto LC::Util::oral::detail::SeqIndices = std::make_index_sequence<SeqSize<S>> {}

Definition at line 133 of file oral.h.

◆ TypeNameCustomizedMember

template<typename T >
concept LC::Util::oral::detail::TypeNameCustomizedMember = requires { typename T::TypeName; }

Definition at line 160 of file oral.h.