Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qsymbolsresolveutils_p.h File Reference

(e75fb7dba6c7202558e8f24d43a51a3388a2b1c9)

#include <QtCore/qlibrary.h>
#include <QtMultimedia/qtmultimediaexports.h>
#include <tuple>
#include <memory>
#include <string_view>
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)
#define INIT_OPT_FUNC(F)
#define END_INIT_FUNCS()
#define EXPORT_FUNC
#define DEFINE_FUNC_IMPL(F, Vars, TypesWithVars, ReturnFunc)
#define VAR(I)
#define VARS0()
#define VARS1()
#define VARS2()
#define VARS3()
#define VARS4()
#define VARS5()
#define VARS6()
#define VARS7()
#define VARS8()
#define VARS9()
#define VARS10()
#define VARS11()
#define TYPE_WITH_VAR(F, I)
#define TYPES_WITH_VARS0(F)
#define TYPES_WITH_VARS1(F)
#define TYPES_WITH_VARS2(F)
#define TYPES_WITH_VARS3(F)
#define TYPES_WITH_VARS4(F)
#define TYPES_WITH_VARS5(F)
#define TYPES_WITH_VARS6(F)
#define TYPES_WITH_VARS7(F)
#define TYPES_WITH_VARS8(F)
#define TYPES_WITH_VARS9(F)
#define TYPES_WITH_VARS10(F)
#define TYPES_WITH_VARS11(F)
#define RET(F, ...)
#define DEFINE_FUNC(F, ArgsCount, ...)
#define DEFINE_IS_LOADED_CHECKER(FuncName)
#define DECLARE_IS_LOADED_CHECKER(FuncName)

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 : public SymbolsResolver { \
public: \
SymbolsResolverImpl() : SymbolsResolver(__VA_ARGS__) \
{ checkLibrariesLoaded(&symbolsBegin, &symbolsEnd); } \
static const SymbolsResolverImpl& instance() \
{ static const SymbolsResolverImpl instance; return instance; } \
SymbolsMarker symbolsBegin;
void checkLibrariesLoaded(SymbolsMarker *begin, SymbolsMarker *end)

Definition at line 105 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 101 of file qsymbolsresolveutils_p.h.

◆ DECLARE_IS_LOADED_CHECKER

#define DECLARE_IS_LOADED_CHECKER ( FuncName)
Value:
QT_BEGIN_NAMESPACE \
bool FuncName(); \

Definition at line 181 of file qsymbolsresolveutils_p.h.

◆ DEFINE_FUNC

#define DEFINE_FUNC ( F,
ArgsCount,
... )
Value:
DEFINE_FUNC_IMPL(F, VARS##ArgsCount, TYPES_WITH_VARS##ArgsCount, RET(F, __VA_ARGS__));
#define F(x, y, z)
#define RET(F,...)
#define DEFINE_FUNC_IMPL(F, Vars, TypesWithVars, ReturnFunc)

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
[26]
#define EXPORT_FUNC

Definition at line 133 of file qsymbolsresolveutils_p.h.

◆ DEFINE_IS_LOADED_CHECKER

#define DEFINE_IS_LOADED_CHECKER ( FuncName)
Value:
QT_BEGIN_NAMESPACE \
bool FuncName() { return SymbolsResolverImpl::instance().isLoaded(); } \

Definition at line 176 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; \
}

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)
Value:
QFunctionPointer F = initFunction(#F);

Definition at line 116 of file qsymbolsresolveutils_p.h.

◆ INIT_OPT_FUNC

#define INIT_OPT_FUNC ( F)
Value:
QFunctionPointer F = initOptionalFunction(#F);

Definition at line 117 of file qsymbolsresolveutils_p.h.

◆ RET

#define RET ( F,
... )
Value:

Definition at line 171 of file qsymbolsresolveutils_p.h.

◆ TYPE_WITH_VAR

#define TYPE_WITH_VAR ( F,
I )
Value:
std::tuple_element_t<I, FuncInfo<decltype(F)>::Args> VAR(I)
#define 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)
Value:
#define TYPE_WITH_VAR(F, I)

Definition at line 158 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS10

#define TYPES_WITH_VARS10 ( F)
Value:

Definition at line 167 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS11

#define TYPES_WITH_VARS11 ( F)
Value:

Definition at line 168 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS2

#define TYPES_WITH_VARS2 ( F)
Value:

Definition at line 159 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS3

#define TYPES_WITH_VARS3 ( F)
Value:

Definition at line 160 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS4

#define TYPES_WITH_VARS4 ( F)
Value:

Definition at line 161 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS5

#define TYPES_WITH_VARS5 ( F)
Value:

Definition at line 162 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS6

#define TYPES_WITH_VARS6 ( F)
Value:

Definition at line 163 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS7

#define TYPES_WITH_VARS7 ( F)
Value:

Definition at line 164 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS8

#define TYPES_WITH_VARS8 ( F)
Value:

Definition at line 165 of file qsymbolsresolveutils_p.h.

◆ TYPES_WITH_VARS9

#define TYPES_WITH_VARS9 ( F)
Value:

Definition at line 166 of file qsymbolsresolveutils_p.h.

◆ VAR

#define VAR ( I)
Value:
a##I
GLboolean GLboolean GLboolean GLboolean a

Definition at line 142 of file qsymbolsresolveutils_p.h.

◆ VARS0

#define VARS0 ( )

Definition at line 143 of file qsymbolsresolveutils_p.h.

◆ VARS1

#define VARS1 ( )
Value:
VAR(0)

Definition at line 144 of file qsymbolsresolveutils_p.h.

◆ VARS10

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

Definition at line 153 of file qsymbolsresolveutils_p.h.

◆ VARS11

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

Definition at line 154 of file qsymbolsresolveutils_p.h.

◆ VARS2

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

Definition at line 145 of file qsymbolsresolveutils_p.h.

◆ VARS3

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

Definition at line 146 of file qsymbolsresolveutils_p.h.

◆ VARS4

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

Definition at line 147 of file qsymbolsresolveutils_p.h.

◆ VARS5

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

Definition at line 148 of file qsymbolsresolveutils_p.h.

◆ VARS6

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

Definition at line 149 of file qsymbolsresolveutils_p.h.

◆ VARS7

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

Definition at line 150 of file qsymbolsresolveutils_p.h.

◆ VARS8

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

Definition at line 151 of file qsymbolsresolveutils_p.h.

◆ VARS9

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

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 26 of file qsymbolsresolveutils_p.h.

◆ areVersionsEqual() [2/2]

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

Definition at line 31 of file qsymbolsresolveutils_p.h.