Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qsymbolsresolveutils_p.h File Reference

(0b6aa8edc9941beb34fb9ababbfaf0dae0fa6837)

#include <QtCore/qlibrary.h>
#include <QtMultimedia/qtmultimediaexports.h>
#include <tuple>
#include <memory>
+ Include dependency graph for qsymbolsresolveutils_p.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  DefaultReturn< T >
 
struct  DefaultReturn< void >
 
struct  FuncInfo< R(A...)>
 
class  SymbolsResolver
 
struct  SymbolsResolver::SymbolsMarker
 

Macros

#define CHECK_VERSIONS(Name, NeededSoversion, DetectedVersion)
 
#define BEGIN_INIT_FUNCS(...)
 
#define INIT_FUNC(F)   QFunctionPointer F = initFunction(#F);
 
#define END_INIT_FUNCS()
 
#define EXPORT_FUNC
 
#define DEFINE_FUNC_IMPL(F, Vars, TypesWithVars, ReturnFunc)
 
#define VAR(I)   a##I
 
#define VARS0()
 
#define VARS1()   VAR(0)
 
#define VARS2()   VARS1(), VAR(1)
 
#define VARS3()   VARS2(), VAR(2)
 
#define VARS4()   VARS3(), VAR(3)
 
#define VARS5()   VARS4(), VAR(4)
 
#define VARS6()   VARS5(), VAR(5)
 
#define VARS7()   VARS6(), VAR(6)
 
#define VARS8()   VARS7(), VAR(7)
 
#define VARS9()   VARS8(), VAR(8)
 
#define VARS10()   VARS9(), VAR(9)
 
#define VARS11()   VARS10(), VAR(10)
 
#define TYPE_WITH_VAR(F, I)   std::tuple_element_t<I, FuncInfo<decltype(F)>::Args> VAR(I)
 
#define TYPES_WITH_VARS0(F)
 
#define TYPES_WITH_VARS1(F)   TYPE_WITH_VAR(F, 0)
 
#define TYPES_WITH_VARS2(F)   TYPES_WITH_VARS1(F), TYPE_WITH_VAR(F, 1)
 
#define TYPES_WITH_VARS3(F)   TYPES_WITH_VARS2(F), TYPE_WITH_VAR(F, 2)
 
#define TYPES_WITH_VARS4(F)   TYPES_WITH_VARS3(F), TYPE_WITH_VAR(F, 3)
 
#define TYPES_WITH_VARS5(F)   TYPES_WITH_VARS4(F), TYPE_WITH_VAR(F, 4)
 
#define TYPES_WITH_VARS6(F)   TYPES_WITH_VARS5(F), TYPE_WITH_VAR(F, 5)
 
#define TYPES_WITH_VARS7(F)   TYPES_WITH_VARS6(F), TYPE_WITH_VAR(F, 6)
 
#define TYPES_WITH_VARS8(F)   TYPES_WITH_VARS7(F), TYPE_WITH_VAR(F, 7)
 
#define TYPES_WITH_VARS9(F)   TYPES_WITH_VARS8(F), TYPE_WITH_VAR(F, 8)
 
#define TYPES_WITH_VARS10(F)   TYPES_WITH_VARS9(F), TYPE_WITH_VAR(F, 9)
 
#define TYPES_WITH_VARS11(F)   TYPES_WITH_VARS10(F), TYPE_WITH_VAR(F, 10)
 
#define RET(F, ...)   DefaultReturn<FuncInfo<decltype(F)>::Return>{__VA_ARGS__}
 
#define DEFINE_FUNC(F, ArgsCount, ...)    DEFINE_FUNC_IMPL(F, VARS##ArgsCount, TYPES_WITH_VARS##ArgsCount, RET(F, __VA_ARGS__));
 

Functions

QT_BEGIN_NAMESPACE constexpr bool areVersionsEqual (const char lhs[], const char rhs[])
 
constexpr bool areVersionsEqual (const char lhs[], int rhsInt)
 

Macro Definition Documentation

◆ BEGIN_INIT_FUNCS

#define BEGIN_INIT_FUNCS ( ...)
Value:
QT_USE_NAMESPACE \
namespace { \
class SymbolsResolverImpl : SymbolsResolver { \
public: \
SymbolsResolverImpl() : SymbolsResolver(__VA_ARGS__) \
{ checkLibrariesLoaded(&symbolsBegin, &symbolsEnd); } \
static const SymbolsResolverImpl& instance() \
{ static const SymbolsResolverImpl instance; return instance; } \
SymbolsMarker symbolsBegin;

Definition at line 106 of file qsymbolsresolveutils_p.h.

◆ CHECK_VERSIONS

#define CHECK_VERSIONS ( Name,
NeededSoversion,
DetectedVersion )
Value:
static_assert(areVersionsEqual(NeededSoversion, DetectedVersion), \
"Configuartion error: misleading " Name " versions!")
std::list< QString >::iterator Name
Definition lalr.h:28
QT_BEGIN_NAMESPACE constexpr bool areVersionsEqual(const char lhs[], const char rhs[])

Definition at line 102 of file qsymbolsresolveutils_p.h.

◆ DEFINE_FUNC

#define DEFINE_FUNC ( F,
ArgsCount,
... )    DEFINE_FUNC_IMPL(F, VARS##ArgsCount, TYPES_WITH_VARS##ArgsCount, RET(F, __VA_ARGS__));

Definition at line 173 of file qsymbolsresolveutils_p.h.

◆ DEFINE_FUNC_IMPL

#define DEFINE_FUNC_IMPL ( F,
Vars,
TypesWithVars,
ReturnFunc )
Value:
using F##_ReturnType = FuncInfo<decltype(F)>::Return; \
extern "C" EXPORT_FUNC [[maybe_unused]] F##_ReturnType F(TypesWithVars(F)) { \
using F##_Type = F##_ReturnType (*)(TypesWithVars(F)); \
const auto f = SymbolsResolverImpl::instance().F; \
return f ? (reinterpret_cast<F##_Type>(f))(Vars()) : ReturnFunc(); \
}
@ Return
GLfloat GLfloat f
#define EXPORT_FUNC

Definition at line 133 of file qsymbolsresolveutils_p.h.

◆ END_INIT_FUNCS

#define END_INIT_FUNCS ( )
Value:
SymbolsMarker symbolsEnd; \
}; \
[[maybe_unused]] static const auto *instantResolver = \
SymbolsResolver::isLazyLoadEnabled() ? &SymbolsResolverImpl::instance() : nullptr; \
}
QObject::connect nullptr

Definition at line 119 of file qsymbolsresolveutils_p.h.

◆ EXPORT_FUNC

#define EXPORT_FUNC

Definition at line 130 of file qsymbolsresolveutils_p.h.

◆ INIT_FUNC

#define INIT_FUNC ( F)    QFunctionPointer F = initFunction(#F);

Definition at line 117 of file qsymbolsresolveutils_p.h.

◆ RET

#define RET ( F,
... )   DefaultReturn<FuncInfo<decltype(F)>::Return>{__VA_ARGS__}

Definition at line 171 of file qsymbolsresolveutils_p.h.

◆ TYPE_WITH_VAR

#define TYPE_WITH_VAR ( F,
I )   std::tuple_element_t<I, FuncInfo<decltype(F)>::Args> VAR(I)

Definition at line 156 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS0

#define TYPES_WITH_VARS0 ( F)

Definition at line 157 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS1

#define TYPES_WITH_VARS1 ( F)    TYPE_WITH_VAR(F, 0)

Definition at line 158 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS10

#define TYPES_WITH_VARS10 ( F)    TYPES_WITH_VARS9(F), TYPE_WITH_VAR(F, 9)

Definition at line 167 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS11

#define TYPES_WITH_VARS11 ( F)    TYPES_WITH_VARS10(F), TYPE_WITH_VAR(F, 10)

Definition at line 168 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS2

#define TYPES_WITH_VARS2 ( F)    TYPES_WITH_VARS1(F), TYPE_WITH_VAR(F, 1)

Definition at line 159 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS3

#define TYPES_WITH_VARS3 ( F)    TYPES_WITH_VARS2(F), TYPE_WITH_VAR(F, 2)

Definition at line 160 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS4

#define TYPES_WITH_VARS4 ( F)    TYPES_WITH_VARS3(F), TYPE_WITH_VAR(F, 3)

Definition at line 161 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS5

#define TYPES_WITH_VARS5 ( F)    TYPES_WITH_VARS4(F), TYPE_WITH_VAR(F, 4)

Definition at line 162 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS6

#define TYPES_WITH_VARS6 ( F)    TYPES_WITH_VARS5(F), TYPE_WITH_VAR(F, 5)

Definition at line 163 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS7

#define TYPES_WITH_VARS7 ( F)    TYPES_WITH_VARS6(F), TYPE_WITH_VAR(F, 6)

Definition at line 164 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS8

#define TYPES_WITH_VARS8 ( F)    TYPES_WITH_VARS7(F), TYPE_WITH_VAR(F, 7)

Definition at line 165 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS9

#define TYPES_WITH_VARS9 ( F)    TYPES_WITH_VARS8(F), TYPE_WITH_VAR(F, 8)

Definition at line 166 of file qsymbolsresolveutils_p.h.

◆ VAR

#define VAR ( I)    a##I

Definition at line 142 of file qsymbolsresolveutils_p.h.

◆ VARS0

#define VARS0 ( )

Definition at line 143 of file qsymbolsresolveutils_p.h.

◆ VARS1

#define VARS1 ( )    VAR(0)

Definition at line 144 of file qsymbolsresolveutils_p.h.

◆ VARS10

#define VARS10 ( )    VARS9(), VAR(9)

Definition at line 153 of file qsymbolsresolveutils_p.h.

◆ VARS11

#define VARS11 ( )    VARS10(), VAR(10)

Definition at line 154 of file qsymbolsresolveutils_p.h.

◆ VARS2

#define VARS2 ( )    VARS1(), VAR(1)

Definition at line 145 of file qsymbolsresolveutils_p.h.

◆ VARS3

#define VARS3 ( )    VARS2(), VAR(2)

Definition at line 146 of file qsymbolsresolveutils_p.h.

◆ VARS4

#define VARS4 ( )    VARS3(), VAR(3)

Definition at line 147 of file qsymbolsresolveutils_p.h.

◆ VARS5

#define VARS5 ( )    VARS4(), VAR(4)

Definition at line 148 of file qsymbolsresolveutils_p.h.

◆ VARS6

#define VARS6 ( )    VARS5(), VAR(5)

Definition at line 149 of file qsymbolsresolveutils_p.h.

◆ VARS7

#define VARS7 ( )    VARS6(), VAR(6)

Definition at line 150 of file qsymbolsresolveutils_p.h.

◆ VARS8

#define VARS8 ( )    VARS7(), VAR(7)

Definition at line 151 of file qsymbolsresolveutils_p.h.

◆ VARS9

#define VARS9 ( )    VARS8(), VAR(8)

Definition at line 152 of file qsymbolsresolveutils_p.h.

Function Documentation

◆ areVersionsEqual() [1/2]

QT_BEGIN_NAMESPACE constexpr bool areVersionsEqual ( const char lhs[],
const char rhs[] )
constexpr

Definition at line 25 of file qsymbolsresolveutils_p.h.

References i.

◆ areVersionsEqual() [2/2]

constexpr bool areVersionsEqual ( const char lhs[],
int rhsInt )
constexpr

Definition at line 34 of file qsymbolsresolveutils_p.h.

References i.