From 37ae41aa26bee8ec42ea6f5b54520d3f2e283ec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Capelle?= Date: Mon, 8 Jul 2024 21:26:49 +0200 Subject: [PATCH 01/16] Move to VCPKG. * Remove SConscript related files. * Update for libbsarch. * Force-load translations from uibase and gamebryo/creation. * Set option to use deprecated uibase include paths. * Bring githubpp here and add a standalone preset. * Full standalone build. --- .github/workflows/build.yml | 46 +- .hgignore | 46 - CMakeLists.txt | 21 +- CMakePresets.json | 59 + SConstruct | 713 ---------- appveyor.yml | 77 -- mappings.imp | 30 - qt5_4.imp | 2478 ----------------------------------- scons_configure_template.py | 33 - src/CMakeLists.txt | 111 +- src/ModOrganizer.pro | 60 - src/SConscript | 179 --- src/archivefiletree.h | 4 +- src/github.cpp | 204 +++ src/github.h | 108 ++ src/installationmanager.h | 12 +- src/mainwindow.cpp | 18 +- src/mainwindow.h | 15 +- src/organizercore.cpp | 16 +- src/pluginlist.cpp | 37 +- src/selfupdater.h | 5 +- src/settings.h | 6 +- src/shared/directoryentry.h | 3 +- src/shared/util.cpp | 6 +- src/spawn.cpp | 11 +- src/usvfsconnector.cpp | 2 +- src/usvfsconnector.h | 8 +- vcpkg-configuration.json | 21 + vcpkg.json | 32 + win.imp | 91 -- 30 files changed, 642 insertions(+), 3810 deletions(-) delete mode 100644 .hgignore create mode 100644 CMakePresets.json delete mode 100644 SConstruct delete mode 100644 appveyor.yml delete mode 100644 mappings.imp delete mode 100644 qt5_4.imp delete mode 100644 scons_configure_template.py delete mode 100644 src/ModOrganizer.pro delete mode 100644 src/SConscript create mode 100644 src/github.cpp create mode 100644 src/github.h create mode 100644 vcpkg-configuration.json create mode 100644 vcpkg.json delete mode 100644 win.imp diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c58575748..4c538a949 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,15 +6,47 @@ on: pull_request: types: [opened, synchronize, reopened] +env: + VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" + jobs: build: runs-on: windows-2022 steps: - - name: Build ModOrganizer 2 - uses: ModOrganizer2/build-with-mob-action@master + # https://learn.microsoft.com/en-us/vcpkg/consume/binary-caching-github-actions-cache + - name: Export GitHub Actions cache environment variables + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + + - name: Install Qt + uses: jurplel/install-qt-action@v3 + with: + version: 6.7.0 + modules: + cache: true + + - uses: actions/checkout@v4 + + - name: "Set environmental variables" + shell: bash + run: | + echo "VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT" >> $GITHUB_ENV + + - name: Configure ModOrganizer + shell: pwsh + run: | + cmake --preset vs2022-windows-standalone ` + "-DCMAKE_PREFIX_PATH=${env:QT_ROOT_DIR}\msvc2019_64" ` + "-DCMAKE_INSTALL_PREFIX=install" + + - name: Build ModOrganizer + run: cmake --build vsbuild --config RelWithDebInfo --target INSTALL + + - name: Package ModOrganizer + uses: actions/upload-artifact@master with: - qt-modules: qtpositioning qtwebchannel qtwebengine qtwebsockets - mo2-third-parties: - 7z zlib gtest libbsarch libloot openssl bzip2 python lz4 spdlog - boost boost-di sip pyqt pybind11 ss licenses explorerpp DirectXTex - mo2-dependencies: usvfs cmake_common uibase githubpp bsatk esptk archive lootcli game_gamebryo + name: modorganizer + path: ./install diff --git a/.hgignore b/.hgignore deleted file mode 100644 index f67264ff5..000000000 --- a/.hgignore +++ /dev/null @@ -1,46 +0,0 @@ -syntax: glob -scons_configure.py -scons-ModOrganizer-* -ModOrganizer-build-desktop* -outputd/* -output/* -build-ModOrganizer-* -source/NCC/*/bin -source/NCC/*/obj -source/NCC/bin -*.orig -source/plugins/proxyPython/build -staging/* -source - Copy/* -ModOrganizer-build-* -pdbs/* -source/NCC/BossDummy.x/* -*.ts -staging_prepare/* -staging_trans/* -tools/python_zip/* -Makefile -html -*.vcxproj -*.pdb -*.dll -*.exp -*.tlog -*.user -*.obj -*.suo -*.sln -*.log -*.filters -*.lib -source/organizer/resources/contents/icons -source/plugins/build-* -*/GeneratedFiles/* -translations/* -source/LocalPaths.pri -source/*/Win32/Debug/* -source/plugins/*/Win32/Debug/* -*~ -syntax: regexp -Makefile\.(Debug|Release) -source/.*/debug/.* diff --git a/CMakeLists.txt b/CMakeLists.txt index c1c1cf9b9..85ba23f05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,16 +1,21 @@ cmake_minimum_required(VERSION 3.16) -# TODO: move these to cmake_common? -set(OPENSSL_USE_STATIC_LIBS FALSE CACHE STRING "" FORCE) -set(MySQL_INCLUDE_DIRS CACHE STRING "" FORCE) +# TODO: clean include directives +set(MO2_CMAKE_DEPRECATED_UIBASE_INCLUDE ON) -if(DEFINED DEPENDENCIES_DIR) - include(${DEPENDENCIES_DIR}/modorganizer_super/cmake_common/mo2.cmake) +project(organizer) + +# if MO2_INSTALL_IS_BIN is set, this means that we should install directly into the +# installation prefix, without the bin/ subfolder, typically for a standalone build +# to update an existing install +if (MO2_INSTALL_IS_BIN) + set(_bin ".") else() - include(${CMAKE_CURRENT_LIST_DIR}/../cmake_common/mo2.cmake) + set(_bin bin) endif() -project(organizer) add_subdirectory(src) -install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dump_running_process.bat DESTINATION bin) +set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT organizer) + +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dump_running_process.bat DESTINATION ${_bin}) diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 000000000..eeeaaacd0 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,59 @@ +{ + "configurePresets": [ + { + "errors": { + "deprecated": true + }, + "hidden": true, + "name": "cmake-dev", + "warnings": { + "deprecated": true, + "dev": true + } + }, + { + "cacheVariables": { + "VCPKG_MANIFEST_NO_DEFAULT_FEATURES": { + "type": "BOOL", + "value": "ON" + } + }, + "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", + "hidden": true, + "name": "vcpkg" + }, + { + "binaryDir": "${sourceDir}/vsbuild", + "architecture": { + "strategy": "set", + "value": "x64" + }, + "cacheVariables": { + "CMAKE_CXX_FLAGS": "/EHsc /MP /W4", + "VCPKG_TARGET_TRIPLET": { + "type": "STRING", + "value": "x64-windows-static-md" + } + }, + "generator": "Visual Studio 17 2022", + "inherits": ["cmake-dev", "vcpkg"], + "name": "vs2022-windows", + "toolset": "v143" + }, + { + "cacheVariables": { + "VCPKG_MANIFEST_FEATURES": { + "type": "STRING", + "value": "standalone" + }, + "MO2_INSTALL_IS_BIN": { + "type": "BOOL", + "value": "ON" + } + }, + "inherits": "vs2022-windows", + "name": "vs2022-windows-standalone" + } + ], + "version": 4 +} diff --git a/SConstruct b/SConstruct deleted file mode 100644 index d0528b954..000000000 --- a/SConstruct +++ /dev/null @@ -1,713 +0,0 @@ -import distutils.sysconfig -import os -import re -import sys - -def setup_config_variables(): - """ Set up defaults values and load the configuration settings """ - # Take a sensible default for pythonpath - must_be_specified = 'Must be specified ***' - - boostpath = must_be_specified - if 'BOOSTPATH' in os.environ: - boostpath = os.environ['BOOSTPATH'] - - lootpath = must_be_specified - if 'LOOTPATH' in os.environ: - lootpath = os.environ['LOOTPATH'] - - pythonpath = must_be_specified - if 'PYTHONPATH' in os.environ: - pythonpath = os.environ['PYTHONPATH'] - else: - pythonpath = distutils.sysconfig.EXEC_PREFIX - - # Take qtdir from the os environment if set - qtdir = must_be_specified - if 'QTDIR' in os.environ: - qtdir = os.environ['QTDIR'] - elif 'QT4DIR' in os.environ: - qtdir = os.environ['QT4DIR'] - - sevenzippath = must_be_specified - if 'SEVENZIPPATH' in os.environ: - sevenzippath = os.environ['SEVENZIPPATH'] - - zlibpath = must_be_specified - if 'ZLIBPATH' in os.environ: - zlibpath = os.environ['ZLIBPATH'] - - git = 'git' - if 'GIT' in os.environ: - git = os.environ['GIT'] - - mercurial = 'hg' - if 'MERCURIAL' in os.environ: - hg = os.environ['HG'] - - vars = Variables('scons_configure.py') - vars.AddVariables( - PathVariable('BOOSTPATH', 'Set to point to your boost directory', - boostpath, PathVariable.PathIsDir), - PathVariable('LOOTPATH', 'Set to point to your LOOT API directory', - lootpath, PathVariable.PathIsDir), - ('MSVC_VERSION', 'Version of msvc, defaults to latest installed'), - PathVariable('PYTHONPATH', 'Path to python install', pythonpath, - PathVariable.PathIsDir), - PathVariable('QTDIR', 'Path to the version of QT to use', qtdir, - PathVariable.PathIsDir), - PathVariable('SEVENZIPPATH', 'Path to 7zip sources', sevenzippath, - PathVariable.PathIsDir), - PathVariable('ZLIBPATH', 'Path to zlib install', zlibpath, - PathVariable.PathIsDir), - PathVariable('GIT', 'Path to git executable', git, - PathVariable.PathIsFile), - PathVariable('MERCURIAL', 'Path to hg executable', mercurial, - PathVariable.PathIsFile), - PathVariable('IWYU', 'Path to include-what-you-use executable', None, - PathVariable.PathIsFile) - ) - - return vars - -def add_moc_files(self, files): - """ - The QT4 tool only sets up moc for .cpp files. If there's a header file - with no corresponding source we have to do it ourselves. This makes it - easier. - Note: I could just supress the scanning and moc all the HEADER files... - """ - targets = [] - for file in self.Flatten([files]): - contents = file.get_contents() - target = str(file)[:-1] + 'cpp' - if not os.path.exists(target): - if 'Q_OBJECT' in file.get_contents(): - header = file.name - target = self['QT5_XMOCHPREFIX'] + header[:-2] + \ - self['QT5_XMOCHSUFFIX'] - targets.append(self.ExplicitMoc5(target, header)) - return targets - -def link_emitter_wrapper(target, source, env): - # This could be better written! - if '/DEBUG' in env['LINKFLAGS']: - name = str(target[0])[:-3] + 'pdb' - target.append(name) - return (target, source) - -def shlib_emitter_wrapper(target, source, env): - if 'WINDOWS_EMBED_MANIFEST' in env: - env.AppendUnique(LINKFLAGS = '/MANIFEST') - return link_emitter_wrapper(target, source, env) - -def fixup_qt4(): - import SCons.Tool - oldpath = sys.path - sys.path = SCons.Tool.DefaultToolpath + sys.path - import qt4 - def my_qrc_path(head, prefix, tail, suffix): - return "%s%s%s" % (prefix, tail, suffix) - qt4.__qrc_path = my_qrc_path - sys.path = oldpath - -metadata = re.compile(r'Q_PLUGIN_METADATA\(IID *".*" *FILE *"(.*)"\)') - -def json_emitter(target, source, env): - depends = [] - for s in source: - match = metadata.search(s.get_contents()) - if match: - depends += [ match.group(1) ] - env.Depends(target, depends) - return target, source - -def fixup_qt5(): - import SCons.Tool - oldpath = sys.path - sys.path = SCons.Tool.DefaultToolpath + sys.path - import qt5 - def my_qrc_path(head, prefix, tail, suffix): - return "%s%s%s" % (prefix, tail, suffix) - qt5.__qrc_path = my_qrc_path - sys.path = oldpath - - qt_env['BUILDERS']['Moc5'].builder.emitter = json_emitter - -moduleDefines = { - '3Support' : [ 'QT_QT3SUPPORT_LIB', 'QT3_SUPPORT' ], - 'Core' : [ 'QT_CORE_LIB' ], - 'Declarative' : [ 'QT_DECLARATIVE_LIB' ], - 'Gui' : [ 'QT_GUI_LIB' ], - 'Network' : [ 'QT_NETWORK_LIB' ], - 'OpenGL' : [ 'QT_OPENGL_LIB' ], - 'Script' : [ 'QT_SCRIPT_LIB' ], - 'Sql' : [ 'QT_SQL_LIB' ], - 'Svg' : [ 'QT_SVG_LIB' ], - 'WebKit' : [ 'QT_WEBKIT_LIB' ], - 'Xml' : [ 'QT_XML_LIB' ], - 'XmlPatterns' : [ 'QT_XMLPATTERNS_LIB' ], -# qt5 - 'Qml' : [ 'QT_QML_LIB' ], - 'QuickWidgets' : [ 'QT_QUICKWIDGETS_LIB', 'QT_WIDGETS_LIB', 'QT_QUICK_LIB' ], - 'Widgets' : [ 'QT_WIDGETS_LIB' ], - 'WebKitWidgets' : [ 'QT_WEBKITWIDGETS_LIB' ], - 'WinExtras' : [ 'QT_WINEXTRAS_LIB' ] -} - -staticModules = [ - 'UiTools', -] - -def get_qt_lib_info(env): - " Deal with the various QT naming conventions. sigh " - - # For QT4, the libraries are QTlibname{,d}4 - # For QT5, they are QT5libname{,d} - - prefix = 'QT' - suffix = 'd' if env['CONFIG'] == 'debug' else '' - - _suffix = suffix # Because they can't be consistent within a version, - # let alone between - version = env['QT_MAJOR_VERSION'] - if version <= 4: - suffix += str(version) - else: - prefix += str(version) - return prefix, suffix, _suffix - -def EnableQtModules(self, *modules): - """ Enable the specified QT modules, mainly by adding defines - and libraries - """ - self.AppendUnique(QT_USED_MODULES = modules) - for module in modules: - try: - self.AppendUnique(CPPDEFINES = moduleDefines[module]) - if self['CONFIG'] == 'debug': - if module == 'Declarative': - self.AppendUnique(CPPDEFINES = 'QT_DECLARATIVE_DEBUG') - elif module == 'Qml': - self.AppendUnique(CPPDEFINES = 'QT_QML_DEBUG') - except: - print 'module', module, 'has no -D' - pass - - if "Assistant" in modules: - self.AppendUnique(CPPPATH = [ - os.path.join('$QTDIR', 'include', 'QtAssistant') - ]) - modules.remove('Assistant') - modules.append('AssistantClient') - - prefix, suffix, _suffix = get_qt_lib_info(self) - self.AppendUnique(LIBS = [ - prefix + lib + suffix for lib in modules if lib not in staticModules - ]) - - self.PrependUnique(LIBS = [ - lib + _suffix for lib in modules if lib in staticModules - ]) - - if 'OpenGL' in modules: - self.AppendUnique(LIBS = [ 'opengl32' ]) - - self.AppendUnique(CPPPATH = [ - os.path.join('$QTDIR', 'include', 'QT' + module) for module in modules - ]) - -def DisableQtModules(self, *modules): - """ Disable the specified QT modules similar to enabling them """ - for module in modules: - try: - self['QT_USED_MODULES'].remove(module) - self['CPPDEFINES'].remove(moduleDefines[module]) - if self['CONFIG'] == 'debug' and module == 'Declarative': - self['CPPDEFINES'].remove('QT_DECLARATIVE_DEBUG') - except: - pass - - - if "Assistant" in modules: - self['CPPPATH'].remove(os.path.join('$QTDIR', 'include', 'QtAssistant')) - modules.remove('Assistant') - modules.append('AssistantClient') - - prefix, suffix, _suffix = get_qt_lib_info(self) - - for lib in modules: - self['LIBS'].remove(prefix + lib + suffix) - - if 'OpenGL' in modules: - self['LIBS'].remove('opengl32') - - for module in modules: - self['CPPPATH'].remove(os.path.join('$QTDIR', 'include', 'QT' + module)) - -def setup_IWYU(env): - import SCons.Defaults - import SCons.Builder - original_shared = SCons.Defaults.SharedObjectEmitter - original_static = SCons.Defaults.StaticObjectEmitter - - def DoIWYU(env, source, target): - for i in range(len(source)): - s = source[i] - dir, name = os.path.split(str(s)) # I'm sure theres a way of getting this from scons - # Don't bother looking at moc files and 7zip source - if not name.startswith('moc_') and \ - not dir.startswith(env['SEVENZIPPATH']): - # Put the .iwyu in the same place as the .obj - targ = os.path.splitext(str(target[i]))[0] - env.Depends(env.IWYU(targ + '.iwyu', s), target[i]) - - def shared_emitter(target, source, env): - DoIWYU(env, source, target) - return original_shared(target, source, env) - - def static_emitter(target, source, env): - DoIWYU(env, source, target) - return original_static(target, source, env) - - SCons.Defaults.SharedObjectEmitter = shared_emitter - SCons.Defaults.StaticObjectEmitter = static_emitter - - def emitter(target, source, env): - env.Depends(target, env['IWYU_MAPPING_FILE']) - env.Depends(target, env['IWYU_MASSAGE']) - return target, source - - def _concat_list(prefixes, list, suffixes, env, f=lambda x: x, target=None, source=None): - """ Creates a new list from 'list' by first interpolating each element - in the list using the 'env' dictionary and then calling f on the - list, and concatenate the 'prefix' and 'suffix' LISTS onto each element of the list. - A trailing space on the last element of 'prefix' or leading space on the - first element of 'suffix' will cause them to be put into separate list - elements rather than being concatenated. - """ - - if not list: - return list - - l = f(SCons.PathList.PathList(list).subst_path(env, target, source)) - if l is not None: - list = l - - # This bit replaces current concat_ixes - - result = [] - - def process_stringlist(s): - return [ str(env.subst(p, SCons.Subst.SUBST_RAW)) - for p in Flatten([s]) if p != '' ] - - # ensure that prefix and suffix are strings - prefixes = process_stringlist(prefixes) - prefix = '' - if len(prefixes) != 0: - if prefixes[-1][-1] != ' ': - prefix = prefixes.pop() - - suffixes = process_stringlist(suffixes) - suffix = '' - if len(suffixes) != 0: - if suffixes[-1][0] != ' ': - suffix = suffixes.pop(0) - - for x in list: - if isinstance(x, SCons.Node.FS.File): - result.append(x) - continue - x = str(x) - if x: - result.append(prefixes) - if prefix: - if x[:len(prefix)] != prefix: - x = prefix + x - result.append(x) - if suffix: - if x[-len(suffix):] != suffix: - result[-1] = result[-1] + suffix - result.append(suffixes) - return result - - env['_concat_list'] = _concat_list - # Note to self: command 2>&1 | other command appears to work as I would hope - # except it eats errors - iwyu = SCons.Builder.Builder( - action=[ - '$IWYU_MASSAGE $TARGET $IWYU $IWYU_FLAGS $IWYU_MAPPINGS $IWYU_COMCOM $SOURCE' - ], - emitter=emitter, - suffix='.iwyu', - src_suffix='.cpp') - - env.Append(BUILDERS={'IWYU': iwyu}) - - # Sigh - IWYU is a right bum as it doesn't recognise /I so I have to - # duplicate most of the usual stuff - - env['IWYU_FLAGS'] = [ - # This might turn down the output a bit. I hope - '-Xiwyu', '--transitive_includes_only', - # Seem to be needed for a windows build - '-D_MT', '-D_DLL', '-m32', - # This is something to do with clang, windows and boost headers - '-DBOOST_USE_WINDOWS_H', - # There's a lot of this, disabled for now - '-Wno-inconsistent-missing-override', - # Mark boost and Qt headers as system headers to disable a lot of noise. - # I'm sure there has to be a better way than saying 'prefix=Q' - '--system-header-prefix=Q', - '--system-header-prefix=boost/', - # Should be able to get this info from our setup really - '-fmsc-version=1800', '-D_MSC_VER=1800', - # clang and qt don't agree about these because clang says its gcc 4.2 - # and QT doesn't realise it's clang - '-DQ_COMPILER_INITIALIZER_LISTS', - '-DQ_COMPILER_DECLTYPE', - '-DQ_COMPILER_VARIADIC_TEMPLATES', - ] - if env['CONFIG'] == 'debug': - env['IWYU_FLAGS'] += [ '-D_DEBUG' ] - - env['IWYU_DEFPREFIX'] = '-D' - env['IWYU_DEFSUFFIX'] = '' - env['IWYU_CPPDEFFLAGS'] = '${_defines(IWYU_DEFPREFIX, CPPDEFINES, IWYU_DEFSUFFIX, __env__)}' - - env['IWYU_INCPREFIX'] = '-I' - env['IWYU_INCSUFFIX'] = '' - env['IWYU_CPPINCFLAGS'] = '$( ${_concat(IWYU_INCPREFIX, CPPPATH, IWYU_INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)' - - env['IWYU_PCH_PREFIX'] = '-include' # Amazingly this works without a space - env['IWYU_PCH_SUFFIX'] = '' - env['IWYU_PCHFILES'] = '$( ${_concat(IWYU_PCH_PREFIX, PCHSTOP, IWYU_PCH_SUFFIX, __env__, target=TARGET, source=SOURCE)} $)' - - env['IWYU_COMCOM'] = '$IWYU_CPPDEFFLAGS $IWYU_CPPINCFLAGS $IWYU_PCHFILES $CCPDBFLAGS' - env['IWYU_MAPPING_PREFIX'] = ['-Xiwyu', '--mapping_file='] - env['IWYU_MAPPING_SUFFIX'] = '' - env['IWYU_MAPPINGS'] = '$( ${_concat_list(IWYU_MAPPING_PREFIX, IWYU_MAPPING_FILE, IWYU_MAPPING_SUFFIX, __env__, f=lambda l: [ str(x) for x in l], target=TARGET, source=SOURCE)} $)' - - env['IWYU_MAPPING_FILE'] = [ - env.File('#/modorganizer/qt5_4.imp'), - env.File('#/modorganizer/win.imp'), - env.File('#/modorganizer/mappings.imp') - ] - - env['IWYU_MASSAGE'] = env.File('#/modorganizer/massage_messages.py') - -# Create base environment -vars = setup_config_variables() -env = Environment(variables = vars, TARGET_ARCH = 'x86') - -# I'd really like to validate for unexpected settings in 'variables', but scons -# appears to throw them away -#ok = True -#for key, value in vars.UnknownVariables(): -# print "unknown variable in scons_configure.py: %s=%s" % (key, value) -# ok = False -#if not ok: -# sys.exit(1) - -# Patch scons to realise it's generating PDB files if /DEBUG is set -env.AppendUnique(PROGEMITTER = [ link_emitter_wrapper ]) -# Ditto + windows_embed_manifest doesn't generate a manifest file -env.AppendUnique(SHLIBEMITTER = [ shlib_emitter_wrapper ]) - -# Work out where to find boost libraries -libdir = os.path.join(env['BOOSTPATH'], 'lib32-msvc-' + env['MSVC_VERSION']) -if not os.path.exists(libdir): - libdir = os.path.join(env['BOOSTPATH'], 'stage', 'lib') -env.AppendUnique(LIBPATH = libdir) - -# Process command line to find out what/where we're building -config = ARGUMENTS.get('CONFIG', 'debug') -env['CONFIG'] = config - -# I think this is a bug in scons. It returns 12.0 for studio 13 -# This needs to match the QT specified version or bad things will happen! -msvs_version = int(env['MSVS_VERSION'].split('.')[0]) + 2000 -if msvs_version > 2010: - msvs_version += 1 - -# Read the QT version info -with open(os.path.join(env['QTDIR'], 'mkspecs', 'qconfig.pri')) as qtinfo: - for line in qtinfo: - info = re.split(r'\s*=\s*', line.rstrip()) - if info[0] == 'QT_VERSION': - env[info[0]] = info[1] - elif '_VERSION' in info[0]: - env[info[0]] = int(info[1]) - -build_dir = 'scons-ModOrganizer-QT_%s_%sfor_MSVS%d_32bit-%s' % ( - env['QT_VERSION'].replace('.', '_'), - 'OpenGL_' if 'opengl' in env['QTDIR'] else '', - msvs_version, - config.title()) - -# Put the sconsign file somewhere sane -env.SConsignFile(os.path.join(build_dir, '.sconsign.dblite')) -env.CacheDir(os.path.join(build_dir, '.cache')) - -#this doesn't seem to work -#env.VariantDir('build/$CONFIG', 'source') -#env.VariantDir('build/$CONFIG', 'source', duplicate = 0) - -# Ripped off from qmake.conf - -# Compiler defines. Note that scons uses the same variables for C and C++ -# defines and include paths so be careful if you mix languages. - -# A note: QT puts _MSC_VER into the compile line, but I can see no earthly -# reason for this. - -env.AppendUnique(CPPDEFINES = [ - 'UNICODE', - 'WIN32', - 'NOMINMAX' # Nukes boost all over the place -]) - -# Default warning level. -env['WARNING_LEVEL'] = 3 - -# C compiler flags -env.AppendUnique(CPPFLAGS = [ - '/Zm200', - #'/Zc:wchar_t-', # 4 v 5 - '/Zc:wchar_t', - '/W$WARNING_LEVEL' -]) - -# C++ compiler flags -env.AppendUnique(CXXFLAGS = [ - '/w34100', - '/w34189', - '/EHsc', # STL on - '/GR' # RTTI on -]) - -""" -# qmake.conf -#QMAKE_CFLAGS_RELEASE = -O2 -MD -#QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi -#QMAKE_CFLAGS_LTCG = -GL -#QMAKE_CFLAGS_MP = -MP - -QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO -QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF -QMAKE_LFLAGS_LTCG = /LTCG - -# project -""" - -env['WINDOWS_EMBED_MANIFEST'] = True - - -# Seriously, the linker doesn't apply these by default? -env.AppendUnique(LINKFLAGS = [ - '/DYNAMICBASE', - '/NXCOMPAT' -]) - -# Display full path in messages. Sadly even this isn't good enough for Creator -# env.AppendUnique(CPPFLAGS = [ '/FC' ]) - -if env['CONFIG'] == 'debug': - env.AppendUnique(CPPFLAGS = [ '/MDd', '/Z7' ]) - env.AppendUnique(LINKFLAGS = [ '/DEBUG' ]) #, '/OPT:REF']) -else: - env.AppendUnique(CPPFLAGS = [ '/O2', '/MD' ]) - env.AppendUnique(LINKFLAGS = [ '/OPT:REF', '/OPT:ICF' ]) - -# Set up include what you use. Add this as an extra compile step. Note it -# doesn't currently generate an output file (use the output instead!). -if 'IWYU' in env: - setup_IWYU(env) - -# /OPT:REF removes unreferenced code -# for release, use /OPT:ICF (comdat folding: coalesce identical blocks of code) - -# We have to make the install path absolute. *sigh*. But it appears to have to -# be in build_dir... -env['INSTALL_PATH'] = os.path.join(os.getcwd(), build_dir, '_ModOrganizer') - -# Create the environment for QT -qt_env = env.Clone() - -# If you don't do this for the release build, QT gets very upset... -if qt_env['CONFIG'] != 'debug': - qt_env.AppendUnique(CPPDEFINES = [ 'QT_NO_DEBUG' ]) - -qt_env.Tool('qt%d' % qt_env['QT_MAJOR_VERSION']) - -# FIXME See if I can work out how to get official scons qt to work. Appears -# to only work with QT5 -fixup_qt5() - -qt_env.AddMethod(add_moc_files, 'AddExtraMoc') - -# A very strange rune which QT sets -qt_env['EXE_MANIFEST_DEPENDENCY'] =\ - '/MANIFESTDEPENDENCY:"' + ' '.join(("type='win32'", - "name='Microsoft.Windows.Common-Controls'", - "version='6.0.0.0'", - "publicKeyToken='6595b64144ccf1df'", - "language='*'", - "processorArchitecture='*'")) + '"' - -# Not sure how necessary this is. Moreover it says msvc but seems to expect -# the msvs number -qt_env.AppendUnique(CPPPATH = [ - os.path.join(env['QTDIR'], 'mkspecs', 'win32-msvc%d' % msvs_version) -]) - -qt_env.AddMethod(EnableQtModules) -qt_env.AddMethod(DisableQtModules) - -# This is a hack. we should redirect uic to uic4/uic5 and fix the scripts -def Uicc5(self, *args, **kwargs): - return self.Uic5(*args, **kwargs) - -qt_env.AddMethod(Uicc5, 'Uic') - -# Enable the base libraries. -qt_env.EnableQt5Modules([], debug = qt_env['CONFIG'] == 'debug') - -# Causes too many problems if you don't do this -qt_env['QT%d_MOCCPPPATH' % qt_env['QT_MAJOR_VERSION']] = '$CPPPATH' -# Yechhh. Note: the the _VER depends on ms compiler version (and could -# be dragged from the qmake conf file or preferrably from ms compiler) -qt_env['QT%d_MOCDEFINES' % qt_env['QT_MAJOR_VERSION']] =\ - '${_defines(QT5_MOCDEFPREFIX, MOCDEFINES+CPPDEFINES, QT5_MOCDEFSUFFIX, __env__)}' -qt_env['MOCDEFINES'] = [ - '_MSC_VER=1800', -] -# QTCreator appears to add these automatically. Some of these look moderately -# dangerous if you're attempting to cross-compile -# only for qt4? -if qt_env['QT_MAJOR_VERSION'] <= 4: - qt_env.AppendUnique(CPPDEFINES = [ - 'QT_DLL', - 'QT_HAVE_MMX', - 'QT_HAVE_3DNOW', - 'QT_HAVE_SSE', - 'QT_HAVE_MMXEXT', - 'QT_HAVE_SSE2', - 'QT_THREAD_SUPPORT' - ]) - -# It also adds this to the end of the include path. -# -I"c:\Apps\Qt\4.8.6\include\ActiveQt" - -# Export environment. Rename it first to encourage instant Clone() calls -Export('env qt_env') - -# And away we go -libs_to_install = env.SConscript('source/SConscript', - variant_dir = build_dir, - duplicate = 0) -libs_to_install = sorted(set(filter(lambda x: x is not None, - env.Flatten(libs_to_install)))) -# There are some odd implicit dependencies -if qt_env['QT_MAJOR_VERSION'] > 4: - libs_to_install += [ - 'Multimedia', - 'MultimediaWidgets', - 'OpenGL', - 'Positioning', - 'PrintSupport', - 'Quick', - 'Sensors', - 'WebChannel', - ] - -# Finally, set up rules to install the DLLs. -# use windeployqt.exe to install all required libraries -#SET(windeploy_parameters --no-translations --no-plugins --libdir dlls --release-with-debug-info --no-compiler-runtime) -#INSTALL( -# CODE -# "EXECUTE_PROCESS( -# COMMAND -# ${qt5bin}/windeployqt.exe ModOrganizer.exe ${windeploy_parameters} -# COMMAND -# ${qt5bin}/windeployqt.exe uibase.dll ${windeploy_parameters} -# WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin -# )" -#) -# this should probably be a rule though it seems to produce an awful lot of -# Stuff(TM). or a postaction - -dll_path = os.path.join('$INSTALL_PATH', 'DLLs') - -prefix, suffix, suffix_ = get_qt_lib_info(qt_env) - -dlls_to_install = [] -dlls_to_install = [ - os.path.join(env['QTDIR'], 'bin', prefix + lib + suffix + '.dll') - for lib in libs_to_install -] - -if env['CONFIG'] == 'debug': - dlls_to_install += [ - os.path.join(env['QTDIR'], 'bin', prefix + lib + suffix + '.pdb') - for lib in libs_to_install - ] - -# There is something wrong with webkit4 and/or this build as it seems -# to need to live in the same directory as mod organiser. -if 'WebKit' in libs_to_install and qt_env['QT_MAJOR_VERSION'] == 4: - libname = prefix + 'WebKit' + suffix - env.Install(env['INSTALL_PATH'], - os.path.join(env['QTDIR'], 'bin', libname + '.dll')) - if env['CONFIG'] == 'debug': - env.Install(env['INSTALL_PATH'], - os.path.join(env['QTDIR'], 'bin', libname + '.pdb')) - -if qt_env['QT_MAJOR_VERSION'] > 4: - # Guesswork a bit. - dlls_to_install += [ - os.path.join(env['QTDIR'], - 'bin', - 'icu%s%d%d.dll' % (lib, - qt_env['QT_MAJOR_VERSION'], - qt_env['QT_MINOR_VERSION'] - 1)) - for lib in ('dt','in', 'uc') - ] - - platform_dlls = [] - if env['CONFIG'] == 'debug': - platform_dlls += [ 'qwindowsd.dll', 'qwindowsd.pdb' ] - else: - platform_dlls += [ 'qwindows.dll' ] - - # Note: Appears to work fine in DLLs or at the top level, but I'm all for - # keeping the top directory a bit clean - env.Install(os.path.join(dll_path, 'platforms'), - [ os.path.join(env['QTDIR'], 'plugins', 'platforms', dll) - for dll in platform_dlls ]) - - image_dlls = [] - for image in ('dds', 'gif', 'jpeg', 'tga'): - if env['CONFIG'] == 'debug': - image_dlls += [ 'q' + image + 'd.dll', 'q' + image + 'd.pdb' ] - else: - image_dlls += [ 'q' + image + '.dll' ] - env.Install(os.path.join(dll_path, 'imageformats'), - [ os.path.join(env['QTDIR'], 'plugins', 'imageformats', dll) - for dll in image_dlls ]) - -# Build your own? -dlls_to_install += [ - os.path.join('tools', 'static_data', 'dlls', '7z.dll') -] - -env.Install(dll_path, dlls_to_install) - -# And loot which goes somewhere else (maybe this should be done in loot_cli?) -env.Install(os.path.join('${INSTALL_PATH}', 'loot'), - os.path.join('${LOOTPATH}', 'loot32.dll')) - -# also pythondll and zip, boost python dll (all for python proxy!) -# the dll we can drag from the python install -# the zip i'm not sure about. diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 854e3aaa4..000000000 --- a/appveyor.yml +++ /dev/null @@ -1,77 +0,0 @@ -version: dev-appveyor{build} -skip_branch_with_pr: true -image: Visual Studio 2019 -init: -- ps: >- - # define build version depending on nightly or normal build - - if($env:APPVEYOR_SCHEDULED_BUILD -eq 'True'){ - $timestamp= Get-Date -Format "ddMMyyyy-HHmm" - Update-AppveyorBuild -Version "$($env:MO_VERSION)$($env:VER_STUB_NIGHTLY)$timestamp" - } else { - Update-AppveyorBuild -Version "$($env:MO_VERSION)$($env:VER_STUB_NORMAL)$($env:APPVEYOR_BUILD_NUMBER)" - } - - Write-Host Build version set to: $env:APPVEYOR_BUILD_VERSION -environment: - WEBHOOK_URL: - secure: gOKbXaZM9ImtMD5XrYITvdyZUW/az082G9OIN1EC1VaKiI9iefpxhBavJ6Al6CzIZvQ+3pxnLqjmNgA7cDc22wcj2kB4hSG5qhbTI8wGa8jLQ5L65nuRZ3vrIqghBz9G3GLglgZkg6eqH9r3Kqc6UzcpCGzxxPOqm550nRcIiUU= - MO_VERSION: 2.4.0 - VER_STUB_NORMAL: dev-appveyor- - VER_STUB_NIGHTLY: dev-nightly- -build_script: -- pwsh: >- - # Maintenance comments: - - # APPVEYOR_BUILD_FOLDER= "c:\projects\modorganizer-slug" - - # -Need to update py3 version used to invoke unimake.py once in a while. - - # -Need update MO_VERSION env variable after each release. - - # -Always clones umbrella master - - # -Will checkout all the branches matching the one that triggered the build on the main repo. - - # End comments. - - $ErrorActionPreference = 'Stop' - - git clone --depth=1 --no-single-branch https://github.com/ModOrganizer2/modorganizer-umbrella.git c:\projects\modorganizer-umbrella - - New-Item -ItemType Directory -Path ${env:APPVEYOR_BUILD_FOLDER}\modorganizer-build - - cd c:\projects\modorganizer-umbrella - - ($env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH -eq $null) ? ($branch = $env:APPVEYOR_REPO_BRANCH) : ($branch = $env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH) - - git checkout $(git show-ref --verify --quiet refs/remotes/origin/${branch} || echo '-b') ${branch} - - C:\Python38-x64\python.exe unimake.py -d ${env:APPVEYOR_BUILD_FOLDER}\modorganizer-build -s Appveyor_Build=True -s Feature_Branch=${env:APPVEYOR_REPO_BRANCH} -s override_build_version=${env:APPVEYOR_BUILD_VERSION} - - if($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode ) } -test: off -artifacts: -- path: '\modorganizer-build\install\bin\ModOrganizer.exe' - name: Mod.Organizer-$(APPVEYOR_BUILD_VERSION) -- path: '\modorganizer-build\install\pdb\ModOrganizer.pdb' - name: PDB-Mod.Organizer-$(APPVEYOR_BUILD_VERSION) -deploy: off -on_success: -- ps: >- - Set-Location -Path $env:APPVEYOR_BUILD_FOLDER - - Invoke-RestMethod https://raw.githubusercontent.com/DiscordHooks/appveyor-discord-webhook/master/send.ps1 -o send.ps1 - - if($env:APPVEYOR_SCHEDULED_BUILD -ne 'True'){ - ./send.ps1 success $env:WEBHOOK_URL - } -on_failure: -- ps: >- - Set-Location -Path $env:APPVEYOR_BUILD_FOLDER - - Invoke-RestMethod https://raw.githubusercontent.com/DiscordHooks/appveyor-discord-webhook/master/send.ps1 -o send.ps1 - - if($env:APPVEYOR_SCHEDULED_BUILD -ne 'True'){ - ./send.ps1 failure $env:WEBHOOK_URL - } diff --git a/mappings.imp b/mappings.imp deleted file mode 100644 index 6af65e3c6..000000000 --- a/mappings.imp +++ /dev/null @@ -1,30 +0,0 @@ -[ - -# for boost??? -# These are probably correct but might need a revisit as if you look at the boost documentation pages, it -# can give you huge lists of alternate includes... - { symbol: [ "BOOST_FOREACH", "private", "", "public" ] }, - - { include: [ "@\"boost/bind/.*\"", "private", "", "public" ] }, - { include: [ "@\"boost/algorithm/string/.*\"", "private", "", "public" ] }, - { include: [ "@\"boost/assign/.*\"", "private", "", "public" ] }, - { include: [ "@\"boost/filesystem/.*\"", "private", "", "public" ] }, - { include: [ "@\"boost/format/.*\"", "private", "", "public" ] }, - { include: [ "@\"boost/function/.*\"", "private", "", "public" ] }, - { include: [ "@\"boost/local/.*\"", "private", "", "public" ] }, - { include: [ "@\"boost/python/.*\"", "private", "", "public" ] }, - { include: [ "@\"boost/signals2/.*\"", "private", "", "public" ] }, - { include: [ "\"boost/smart_ptr/scoped_array.hpp\"", "private", "", "public" ] }, - { include: [ "\"boost/smart_ptr/shared_ptr.hpp\"", "private", "", "public" ] }, - # this appears to be excessive - #{ include: [ "@\"boost/thread/.*\"", "private", "", "public" ] }, - -# And this is specific to us - { include: [ "\"appconfig.inc\"", "private", "\"appconfig.h\"", "public" ] }, - -] - -# Ones I don't yet know how to deal with -#include "boost/fusion/container/vector/vector10_fwd.hpp" // for fusion -#include "boost/iterator/iterator_facade.hpp" // for operator!= -#include "boost/iterator/iterator_facade.hpp" diff --git a/qt5_4.imp b/qt5_4.imp deleted file mode 100644 index 5f919085d..000000000 --- a/qt5_4.imp +++ /dev/null @@ -1,2478 +0,0 @@ -[ - -# Per le documentation, each class lives in it's own header file. These are the -# official header files (as far as I can determine, from a scan of the QT includes -# directory) -# It'd be nice if IWYU could be told to recognise X::y as coming from the same header as X - - { symbol: [ "ActiveQt", "private", "", "public" ] }, - { symbol: [ "ActiveQtDepends", "private", "", "public" ] }, - { symbol: [ "ActiveQtVersion", "private", "", "public" ] }, - { symbol: [ "Enginio", "private", "", "public" ] }, - { symbol: [ "EnginioDepends", "private", "", "public" ] }, - { symbol: [ "EnginioVersion", "private", "", "public" ] }, - { symbol: [ "QAbstractAnimation", "private", "", "public" ] }, - { symbol: [ "QAbstractAudioDeviceInfo", "private", "", "public" ] }, - { symbol: [ "QAbstractAudioInput", "private", "", "public" ] }, - { symbol: [ "QAbstractAudioOutput", "private", "", "public" ] }, - { symbol: [ "QAbstractButton", "private", "", "public" ] }, - { symbol: [ "QAbstractEventDispatcher", "private", "", "public" ] }, - { symbol: [ "QAbstractExtensionFactory", "private", "", "public" ] }, - { symbol: [ "QAbstractExtensionManager", "private", "", "public" ] }, - { symbol: [ "QAbstractFormBuilder", "private", "", "public" ] }, - { symbol: [ "QAbstractGraphicsShapeItem", "private", "", "public" ] }, - { symbol: [ "QAbstractItemDelegate", "private", "", "public" ] }, - { symbol: [ "QAbstractItemModel", "private", "", "public" ] }, - { symbol: [ "QAbstractItemView", "private", "", "public" ] }, - { symbol: [ "QAbstractListModel", "private", "", "public" ] }, - { symbol: [ "QAbstractMessageHandler", "private", "", "public" ] }, - { symbol: [ "QAbstractNativeEventFilter", "private", "", "public" ] }, - { symbol: [ "QAbstractNetworkCache", "private", "", "public" ] }, - { symbol: [ "QAbstractPlanarVideoBuffer", "private", "", "public" ] }, - { symbol: [ "QAbstractPrintDialog", "private", "", "public" ] }, - { symbol: [ "QAbstractProxyModel", "private", "", "public" ] }, - { symbol: [ "QAbstractScrollArea", "private", "", "public" ] }, - { symbol: [ "QAbstractSlider", "private", "", "public" ] }, - { symbol: [ "QAbstractSocket", "private", "", "public" ] }, - { symbol: [ "QAbstractSpinBox", "private", "", "public" ] }, - { symbol: [ "QAbstractState", "private", "", "public" ] }, - { symbol: [ "QAbstractTableModel", "private", "", "public" ] }, - { symbol: [ "QAbstractTextDocumentLayout", "private", "", "public" ] }, - { symbol: [ "QAbstractTransition", "private", "", "public" ] }, - { symbol: [ "QAbstractUndoItem", "private", "", "public" ] }, - { symbol: [ "QAbstractUriResolver", "private", "", "public" ] }, - { symbol: [ "QAbstractVideoBuffer", "private", "", "public" ] }, - { symbol: [ "QAbstractVideoSurface", "private", "", "public" ] }, - { symbol: [ "QAbstractXmlNodeModel", "private", "", "public" ] }, - { symbol: [ "QAbstractXmlReceiver", "private", "", "public" ] }, - { symbol: [ "QAccelerometer", "private", "", "public" ] }, - { symbol: [ "QAccelerometerFilter", "private", "", "public" ] }, - { symbol: [ "QAccelerometerReading", "private", "", "public" ] }, - { symbol: [ "QAccessible", "private", "", "public" ] }, - { symbol: [ "QAccessibleAbstractScrollArea", "private", "", "public" ] }, - { symbol: [ "QAccessibleAbstractSlider", "private", "", "public" ] }, - { symbol: [ "QAccessibleAbstractSpinBox", "private", "", "public" ] }, - { symbol: [ "QAccessibleActionInterface", "private", "", "public" ] }, - { symbol: [ "QAccessibleApplication", "private", "", "public" ] }, - { symbol: [ "QAccessibleBridge", "private", "", "public" ] }, - { symbol: [ "QAccessibleBridgePlugin", "private", "", "public" ] }, - { symbol: [ "QAccessibleButton", "private", "", "public" ] }, - { symbol: [ "QAccessibleCalendarWidget", "private", "", "public" ] }, - { symbol: [ "QAccessibleComboBox", "private", "", "public" ] }, - { symbol: [ "QAccessibleDial", "private", "", "public" ] }, - { symbol: [ "QAccessibleDialogButtonBox", "private", "", "public" ] }, - { symbol: [ "QAccessibleDisplay", "private", "", "public" ] }, - { symbol: [ "QAccessibleDockWidget", "private", "", "public" ] }, - { symbol: [ "QAccessibleDoubleSpinBox", "private", "", "public" ] }, - { symbol: [ "QAccessibleEditableTextInterface", "private", "", "public" ] }, - { symbol: [ "QAccessibleEvent", "private", "", "public" ] }, - { symbol: [ "QAccessibleGroupBox", "private", "", "public" ] }, - { symbol: [ "QAccessibleImageInterface", "private", "", "public" ] }, - { symbol: [ "QAccessibleInterface", "private", "", "public" ] }, - { symbol: [ "QAccessibleLineEdit", "private", "", "public" ] }, - { symbol: [ "QAccessibleMainWindow", "private", "", "public" ] }, - { symbol: [ "QAccessibleMdiArea", "private", "", "public" ] }, - { symbol: [ "QAccessibleMdiSubWindow", "private", "", "public" ] }, - { symbol: [ "QAccessibleMenu", "private", "", "public" ] }, - { symbol: [ "QAccessibleMenuBar", "private", "", "public" ] }, - { symbol: [ "QAccessibleMenuItem", "private", "", "public" ] }, - { symbol: [ "QAccessibleObject", "private", "", "public" ] }, - { symbol: [ "QAccessiblePlainTextEdit", "private", "", "public" ] }, - { symbol: [ "QAccessiblePlugin", "private", "", "public" ] }, - { symbol: [ "QAccessibleProgressBar", "private", "", "public" ] }, - { symbol: [ "QAccessibleScrollArea", "private", "", "public" ] }, - { symbol: [ "QAccessibleScrollBar", "private", "", "public" ] }, - { symbol: [ "QAccessibleSlider", "private", "", "public" ] }, - { symbol: [ "QAccessibleSpinBox", "private", "", "public" ] }, - { symbol: [ "QAccessibleStackedWidget", "private", "", "public" ] }, - { symbol: [ "QAccessibleStateChangeEvent", "private", "", "public" ] }, - { symbol: [ "QAccessibleTabBar", "private", "", "public" ] }, - { symbol: [ "QAccessibleTable", "private", "", "public" ] }, - { symbol: [ "QAccessibleTableCell", "private", "", "public" ] }, - { symbol: [ "QAccessibleTableCellInterface", "private", "", "public" ] }, - { symbol: [ "QAccessibleTableCornerButton", "private", "", "public" ] }, - { symbol: [ "QAccessibleTableHeaderCell", "private", "", "public" ] }, - { symbol: [ "QAccessibleTableInterface", "private", "", "public" ] }, - { symbol: [ "QAccessibleTableModelChangeEvent", "private", "", "public" ] }, - { symbol: [ "QAccessibleTextBrowser", "private", "", "public" ] }, - { symbol: [ "QAccessibleTextCursorEvent", "private", "", "public" ] }, - { symbol: [ "QAccessibleTextEdit", "private", "", "public" ] }, - { symbol: [ "QAccessibleTextInsertEvent", "private", "", "public" ] }, - { symbol: [ "QAccessibleTextInterface", "private", "", "public" ] }, - { symbol: [ "QAccessibleTextRemoveEvent", "private", "", "public" ] }, - { symbol: [ "QAccessibleTextSelectionEvent", "private", "", "public" ] }, - { symbol: [ "QAccessibleTextUpdateEvent", "private", "", "public" ] }, - { symbol: [ "QAccessibleTextWidget", "private", "", "public" ] }, - { symbol: [ "QAccessibleToolBox", "private", "", "public" ] }, - { symbol: [ "QAccessibleToolButton", "private", "", "public" ] }, - { symbol: [ "QAccessibleTree", "private", "", "public" ] }, - { symbol: [ "QAccessibleValueChangeEvent", "private", "", "public" ] }, - { symbol: [ "QAccessibleValueInterface", "private", "", "public" ] }, - { symbol: [ "QAccessibleWidget", "private", "", "public" ] }, - { symbol: [ "QAccessibleWindowContainer", "private", "", "public" ] }, - { symbol: [ "QAction", "private", "", "public" ] }, - { symbol: [ "QActionEvent", "private", "", "public" ] }, - { symbol: [ "QActionGroup", "private", "", "public" ] }, - { symbol: [ "QAltimeter", "private", "", "public" ] }, - { symbol: [ "QAltimeterFilter", "private", "", "public" ] }, - { symbol: [ "QAltimeterReading", "private", "", "public" ] }, - { symbol: [ "QAmbientLightFilter", "private", "", "public" ] }, - { symbol: [ "QAmbientLightReading", "private", "", "public" ] }, - { symbol: [ "QAmbientLightSensor", "private", "", "public" ] }, - { symbol: [ "QAmbientTemperatureFilter", "private", "", "public" ] }, - { symbol: [ "QAmbientTemperatureReading", "private", "", "public" ] }, - { symbol: [ "QAmbientTemperatureSensor", "private", "", "public" ] }, - { symbol: [ "QAnimationDriver", "private", "", "public" ] }, - { symbol: [ "QAnimationGroup", "private", "", "public" ] }, - { symbol: [ "QApplication", "private", "", "public" ] }, - { symbol: [ "QApplicationStateChangeEvent", "private", "", "public" ] }, - { symbol: [ "QArgument", "private", "", "public" ] }, - { symbol: [ "QArrayData", "private", "", "public" ] }, - { symbol: [ "QArrayDataPointer", "private", "", "public" ] }, - { symbol: [ "QArrayDataPointerRef", "private", "", "public" ] }, - { symbol: [ "QAssociativeIterable", "private", "", "public" ] }, - { symbol: [ "QAtomicInt", "private", "", "public" ] }, - { symbol: [ "QAtomicInteger", "private", "", "public" ] }, - { symbol: [ "QAtomicPointer", "private", "", "public" ] }, - { symbol: [ "QAudio", "private", "", "public" ] }, - { symbol: [ "QAudioBuffer", "private", "", "public" ] }, - { symbol: [ "QAudioDecoder", "private", "", "public" ] }, - { symbol: [ "QAudioDecoderControl", "private", "", "public" ] }, - { symbol: [ "QAudioDeviceInfo", "private", "", "public" ] }, - { symbol: [ "QAudioEncoderSettings", "private", "", "public" ] }, - { symbol: [ "QAudioEncoderSettingsControl", "private", "", "public" ] }, - { symbol: [ "QAudioFormat", "private", "", "public" ] }, - { symbol: [ "QAudioInput", "private", "", "public" ] }, - { symbol: [ "QAudioInputSelectorControl", "private", "", "public" ] }, - { symbol: [ "QAudioOutput", "private", "", "public" ] }, - { symbol: [ "QAudioOutputSelectorControl", "private", "", "public" ] }, - { symbol: [ "QAudioProbe", "private", "", "public" ] }, - { symbol: [ "QAudioRecorder", "private", "", "public" ] }, - { symbol: [ "QAudioSystemFactoryInterface", "private", "", "public" ] }, - { symbol: [ "QAudioSystemPlugin", "private", "", "public" ] }, - { symbol: [ "QAuthenticator", "private", "", "public" ] }, - { symbol: [ "QAxAggregated", "private", "", "public" ] }, - { symbol: [ "QAxBase", "private", "", "public" ] }, - { symbol: [ "QAxBindable", "private", "", "public" ] }, - { symbol: [ "QAxFactory", "private", "", "public" ] }, - { symbol: [ "QAxObject", "private", "", "public" ] }, - { symbol: [ "QAxScript", "private", "", "public" ] }, - { symbol: [ "QAxScriptEngine", "private", "", "public" ] }, - { symbol: [ "QAxScriptManager", "private", "", "public" ] }, - { symbol: [ "QAxSelect", "private", "", "public" ] }, - { symbol: [ "QAxWidget", "private", "", "public" ] }, - { symbol: [ "QBBSystemLocaleData", "private", "", "public" ] }, - { symbol: [ "QBackingStore", "private", "", "public" ] }, - { symbol: [ "QBasicMutex", "private", "", "public" ] }, - { symbol: [ "QBasicTimer", "private", "", "public" ] }, - { symbol: [ "QBitArray", "private", "", "public" ] }, - { symbol: [ "QBitRef", "private", "", "public" ] }, - { symbol: [ "QBitmap", "private", "", "public" ] }, - { symbol: [ "QBluetoothAddress", "private", "", "public" ] }, - { symbol: [ "QBluetoothDeviceDiscoveryAgent", "private", "", "public" ] }, - { symbol: [ "QBluetoothDeviceInfo", "private", "", "public" ] }, - { symbol: [ "QBluetoothHostInfo", "private", "", "public" ] }, - { symbol: [ "QBluetoothLocalDevice", "private", "", "public" ] }, - { symbol: [ "QBluetoothServer", "private", "", "public" ] }, - { symbol: [ "QBluetoothServiceDiscoveryAgent", "private", "", "public" ] }, - { symbol: [ "QBluetoothServiceInfo", "private", "", "public" ] }, - { symbol: [ "QBluetoothSocket", "private", "", "public" ] }, - { symbol: [ "QBluetoothTransferManager", "private", "", "public" ] }, - { symbol: [ "QBluetoothTransferReply", "private", "", "public" ] }, - { symbol: [ "QBluetoothTransferRequest", "private", "", "public" ] }, - { symbol: [ "QBluetoothUuid", "private", "", "public" ] }, - { symbol: [ "QBoxLayout", "private", "", "public" ] }, - { symbol: [ "QBrush", "private", "", "public" ] }, - { symbol: [ "QBrushData", "private", "", "public" ] }, - { symbol: [ "QBuffer", "private", "", "public" ] }, - { symbol: [ "QButtonGroup", "private", "", "public" ] }, - { symbol: [ "QByteArray", "private", "", "public" ] }, - { symbol: [ "QByteArrayData", "private", "", "public" ] }, - { symbol: [ "QByteArrayDataPtr", "private", "", "public" ] }, - { symbol: [ "QByteArrayList", "private", "", "public" ] }, - { symbol: [ "QByteArrayListIterator", "private", "", "public" ] }, - { symbol: [ "QByteArrayMatcher", "private", "", "public" ] }, - { symbol: [ "QByteRef", "private", "", "public" ] }, - { symbol: [ "QCache", "private", "", "public" ] }, - { symbol: [ "QCalendarWidget", "private", "", "public" ] }, - { symbol: [ "QCamera", "private", "", "public" ] }, - { symbol: [ "QCameraCaptureBufferFormatControl", "private", "", "public" ] }, - { symbol: [ "QCameraCaptureDestinationControl", "private", "", "public" ] }, - { symbol: [ "QCameraControl", "private", "", "public" ] }, - { symbol: [ "QCameraExposure", "private", "", "public" ] }, - { symbol: [ "QCameraExposureControl", "private", "", "public" ] }, - { symbol: [ "QCameraFeedbackControl", "private", "", "public" ] }, - { symbol: [ "QCameraFlashControl", "private", "", "public" ] }, - { symbol: [ "QCameraFocus", "private", "", "public" ] }, - { symbol: [ "QCameraFocusControl", "private", "", "public" ] }, - { symbol: [ "QCameraFocusZone", "private", "", "public" ] }, - { symbol: [ "QCameraFocusZoneList", "private", "", "public" ] }, - { symbol: [ "QCameraImageCapture", "private", "", "public" ] }, - { symbol: [ "QCameraImageCaptureControl", "private", "", "public" ] }, - { symbol: [ "QCameraImageProcessing", "private", "", "public" ] }, - { symbol: [ "QCameraImageProcessingControl", "private", "", "public" ] }, - { symbol: [ "QCameraInfo", "private", "", "public" ] }, - { symbol: [ "QCameraInfoControl", "private", "", "public" ] }, - { symbol: [ "QCameraLocksControl", "private", "", "public" ] }, - { symbol: [ "QCameraViewfinder", "private", "", "public" ] }, - { symbol: [ "QCameraViewfinderSettingsControl", "private", "", "public" ] }, - { symbol: [ "QCameraZoomControl", "private", "", "public" ] }, - { symbol: [ "QChar", "private", "", "public" ] }, - { symbol: [ "QCharRef", "private", "", "public" ] }, - { symbol: [ "QCheckBox", "private", "", "public" ] }, - { symbol: [ "QChildEvent", "private", "", "public" ] }, - { symbol: [ "QClipboard", "private", "", "public" ] }, - { symbol: [ "QCloseEvent", "private", "", "public" ] }, - { symbol: [ "QCocoaNativeContext", "private", "", "public" ] }, - { symbol: [ "QCollator", "private", "", "public" ] }, - { symbol: [ "QCollatorSortKey", "private", "", "public" ] }, - { symbol: [ "QColor", "private", "", "public" ] }, - { symbol: [ "QColorDialog", "private", "", "public" ] }, - { symbol: [ "QColormap", "private", "", "public" ] }, - { symbol: [ "QColumnView", "private", "", "public" ] }, - { symbol: [ "QComboBox", "private", "", "public" ] }, - { symbol: [ "QCommandLineOption", "private", "", "public" ] }, - { symbol: [ "QCommandLineParser", "private", "", "public" ] }, - { symbol: [ "QCommandLinkButton", "private", "", "public" ] }, - { symbol: [ "QCommonStyle", "private", "", "public" ] }, - { symbol: [ "QCompass", "private", "", "public" ] }, - { symbol: [ "QCompassFilter", "private", "", "public" ] }, - { symbol: [ "QCompassReading", "private", "", "public" ] }, - { symbol: [ "QCompleter", "private", "", "public" ] }, - { symbol: [ "QConicalGradient", "private", "", "public" ] }, - { symbol: [ "QContextMenuEvent", "private", "", "public" ] }, - { symbol: [ "QContiguousCache", "private", "", "public" ] }, - { symbol: [ "QContiguousCacheData", "private", "", "public" ] }, - { symbol: [ "QContiguousCacheTypedData", "private", "", "public" ] }, - { symbol: [ "QCoreApplication", "private", "", "public" ] }, - { symbol: [ "QCryptographicHash", "private", "", "public" ] }, - { symbol: [ "QCursor", "private", "", "public" ] }, - { symbol: [ "QDBusAbstractAdaptor", "private", "", "public" ] }, - { symbol: [ "QDBusAbstractInterface", "private", "", "public" ] }, - { symbol: [ "QDBusAbstractInterfaceBase", "private", "", "public" ] }, - { symbol: [ "QDBusArgument", "private", "", "public" ] }, - { symbol: [ "QDBusConnection", "private", "", "public" ] }, - { symbol: [ "QDBusConnectionInterface", "private", "", "public" ] }, - { symbol: [ "QDBusContext", "private", "", "public" ] }, - { symbol: [ "QDBusError", "private", "", "public" ] }, - { symbol: [ "QDBusInterface", "private", "", "public" ] }, - { symbol: [ "QDBusMessage", "private", "", "public" ] }, - { symbol: [ "QDBusMetaType", "private", "", "public" ] }, - { symbol: [ "QDBusObjectPath", "private", "", "public" ] }, - { symbol: [ "QDBusPendingCall", "private", "", "public" ] }, - { symbol: [ "QDBusPendingCallWatcher", "private", "", "public" ] }, - { symbol: [ "QDBusPendingReply", "private", "", "public" ] }, - { symbol: [ "QDBusPendingReplyData", "private", "", "public" ] }, - { symbol: [ "QDBusReply", "private", "", "public" ] }, - { symbol: [ "QDBusServer", "private", "", "public" ] }, - { symbol: [ "QDBusServiceWatcher", "private", "", "public" ] }, - { symbol: [ "QDBusSignature", "private", "", "public" ] }, - { symbol: [ "QDBusUnixFileDescriptor", "private", "", "public" ] }, - { symbol: [ "QDBusVariant", "private", "", "public" ] }, - { symbol: [ "QDBusVirtualObject", "private", "", "public" ] }, - { symbol: [ "QDataStream", "private", "", "public" ] }, - { symbol: [ "QDataWidgetMapper", "private", "", "public" ] }, - { symbol: [ "QDate", "private", "", "public" ] }, - { symbol: [ "QDateEdit", "private", "", "public" ] }, - { symbol: [ "QDateTime", "private", "", "public" ] }, - { symbol: [ "QDateTimeEdit", "private", "", "public" ] }, - { symbol: [ "QDebug", "private", "", "public" ] }, - { symbol: [ "QDebugStateSaver", "private", "", "public" ] }, - { symbol: [ "QDeclarativeAttachedPropertiesFunc", "private", "", "public" ] }, - { symbol: [ "QDeclarativeComponent", "private", "", "public" ] }, - { symbol: [ "QDeclarativeContext", "private", "", "public" ] }, - { symbol: [ "QDeclarativeDebuggingEnabler", "private", "", "public" ] }, - { symbol: [ "QDeclarativeEngine", "private", "", "public" ] }, - { symbol: [ "QDeclarativeError", "private", "", "public" ] }, - { symbol: [ "QDeclarativeExpression", "private", "", "public" ] }, - { symbol: [ "QDeclarativeExtensionInterface", "private", "", "public" ] }, - { symbol: [ "QDeclarativeExtensionPlugin", "private", "", "public" ] }, - { symbol: [ "QDeclarativeImageProvider", "private", "", "public" ] }, - { symbol: [ "QDeclarativeInfo", "private", "", "public" ] }, - { symbol: [ "QDeclarativeItem", "private", "", "public" ] }, - { symbol: [ "QDeclarativeListProperty", "private", "", "public" ] }, - { symbol: [ "QDeclarativeListReference", "private", "", "public" ] }, - { symbol: [ "QDeclarativeNetworkAccessManagerFactory", "private", "", "public" ] }, - { symbol: [ "QDeclarativeParserStatus", "private", "", "public" ] }, - { symbol: [ "QDeclarativeProperties", "private", "", "public" ] }, - { symbol: [ "QDeclarativeProperty", "private", "", "public" ] }, - { symbol: [ "QDeclarativePropertyMap", "private", "", "public" ] }, - { symbol: [ "QDeclarativePropertyValueInterceptor", "private", "", "public" ] }, - { symbol: [ "QDeclarativePropertyValueSource", "private", "", "public" ] }, - { symbol: [ "QDeclarativeScriptString", "private", "", "public" ] }, - { symbol: [ "QDeclarativeTypeInfo", "private", "", "public" ] }, - { symbol: [ "QDeclarativeView", "private", "", "public" ] }, - { symbol: [ "QDeferredDeleteEvent", "private", "", "public" ] }, - { symbol: [ "QDesignerActionEditorInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerComponents", "private", "", "public" ] }, - { symbol: [ "QDesignerContainerExtension", "private", "", "public" ] }, - { symbol: [ "QDesignerCustomWidgetCollectionInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerCustomWidgetInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerDnDItemInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerDynamicPropertySheetExtension", "private", "", "public" ] }, - { symbol: [ "QDesignerExportWidget", "private", "", "public" ] }, - { symbol: [ "QDesignerExtraInfoExtension", "private", "", "public" ] }, - { symbol: [ "QDesignerFormEditorInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerFormEditorPluginInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerFormWindowCursorInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerFormWindowInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerFormWindowManagerInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerFormWindowToolInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerIntegration", "private", "", "public" ] }, - { symbol: [ "QDesignerIntegrationInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerLanguageExtension", "private", "", "public" ] }, - { symbol: [ "QDesignerLayoutDecorationExtension", "private", "", "public" ] }, - { symbol: [ "QDesignerMemberSheetExtension", "private", "", "public" ] }, - { symbol: [ "QDesignerMetaDataBaseInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerMetaDataBaseItemInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerNewFormWidgetInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerObjectInspectorInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerOptionsPageInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerPromotionInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerPropertyEditorInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerPropertySheetExtension", "private", "", "public" ] }, - { symbol: [ "QDesignerResourceBrowserInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerSettingsInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerTaskMenuExtension", "private", "", "public" ] }, - { symbol: [ "QDesignerWidgetBoxInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerWidgetDataBaseInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerWidgetDataBaseItemInterface", "private", "", "public" ] }, - { symbol: [ "QDesignerWidgetFactoryInterface", "private", "", "public" ] }, - { symbol: [ "QDesktopServices", "private", "", "public" ] }, - { symbol: [ "QDesktopWidget", "private", "", "public" ] }, - { symbol: [ "QDial", "private", "", "public" ] }, - { symbol: [ "QDialog", "private", "", "public" ] }, - { symbol: [ "QDialogButtonBox", "private", "", "public" ] }, - { symbol: [ "QDir", "private", "", "public" ] }, - { symbol: [ "QDirIterator", "private", "", "public" ] }, - { symbol: [ "QDirModel", "private", "", "public" ] }, - { symbol: [ "QDistanceFilter", "private", "", "public" ] }, - { symbol: [ "QDistanceReading", "private", "", "public" ] }, - { symbol: [ "QDistanceSensor", "private", "", "public" ] }, - { symbol: [ "QDnsDomainNameRecord", "private", "", "public" ] }, - { symbol: [ "QDnsHostAddressRecord", "private", "", "public" ] }, - { symbol: [ "QDnsLookup", "private", "", "public" ] }, - { symbol: [ "QDnsMailExchangeRecord", "private", "", "public" ] }, - { symbol: [ "QDnsServiceRecord", "private", "", "public" ] }, - { symbol: [ "QDnsTextRecord", "private", "", "public" ] }, - { symbol: [ "QDockWidget", "private", "", "public" ] }, - { symbol: [ "QDomAttr", "private", "", "public" ] }, - { symbol: [ "QDomCDATASection", "private", "", "public" ] }, - { symbol: [ "QDomCharacterData", "private", "", "public" ] }, - { symbol: [ "QDomComment", "private", "", "public" ] }, - { symbol: [ "QDomDocument", "private", "", "public" ] }, - { symbol: [ "QDomDocumentFragment", "private", "", "public" ] }, - { symbol: [ "QDomDocumentType", "private", "", "public" ] }, - { symbol: [ "QDomElement", "private", "", "public" ] }, - { symbol: [ "QDomEntity", "private", "", "public" ] }, - { symbol: [ "QDomEntityReference", "private", "", "public" ] }, - { symbol: [ "QDomImplementation", "private", "", "public" ] }, - { symbol: [ "QDomNamedNodeMap", "private", "", "public" ] }, - { symbol: [ "QDomNode", "private", "", "public" ] }, - { symbol: [ "QDomNodeList", "private", "", "public" ] }, - { symbol: [ "QDomNotation", "private", "", "public" ] }, - { symbol: [ "QDomProcessingInstruction", "private", "", "public" ] }, - { symbol: [ "QDomText", "private", "", "public" ] }, - { symbol: [ "QDoubleSpinBox", "private", "", "public" ] }, - { symbol: [ "QDoubleValidator", "private", "", "public" ] }, - { symbol: [ "QDrag", "private", "", "public" ] }, - { symbol: [ "QDragEnterEvent", "private", "", "public" ] }, - { symbol: [ "QDragLeaveEvent", "private", "", "public" ] }, - { symbol: [ "QDragMoveEvent", "private", "", "public" ] }, - { symbol: [ "QDropEvent", "private", "", "public" ] }, - { symbol: [ "QDynamicPropertyChangeEvent", "private", "", "public" ] }, - { symbol: [ "QEGLNativeContext", "private", "", "public" ] }, - { symbol: [ "QEasingCurve", "private", "", "public" ] }, - { symbol: [ "QEglFSFunctions", "private", "", "public" ] }, - { symbol: [ "QElapsedTimer", "private", "", "public" ] }, - { symbol: [ "QEnableSharedFromThis", "private", "", "public" ] }, - { symbol: [ "QEnterEvent", "private", "", "public" ] }, - { symbol: [ "QErrorMessage", "private", "", "public" ] }, - { symbol: [ "QEvent", "private", "", "public" ] }, - { symbol: [ "QEventLoop", "private", "", "public" ] }, - { symbol: [ "QEventLoopLocker", "private", "", "public" ] }, - { symbol: [ "QEventSizeOfChecker", "private", "", "public" ] }, - { symbol: [ "QEventTransition", "private", "", "public" ] }, - { symbol: [ "QException", "private", "", "public" ] }, - { symbol: [ "QExplicitlySharedDataPointer", "private", "", "public" ] }, - { symbol: [ "QExposeEvent", "private", "", "public" ] }, - { symbol: [ "QExtensionFactory", "private", "", "public" ] }, - { symbol: [ "QExtensionManager", "private", "", "public" ] }, - { symbol: [ "QFactoryInterface", "private", "", "public" ] }, - { symbol: [ "QFile", "private", "", "public" ] }, - { symbol: [ "QFileDevice", "private", "", "public" ] }, - { symbol: [ "QFileDialog", "private", "", "public" ] }, - { symbol: [ "QFileIconProvider", "private", "", "public" ] }, - { symbol: [ "QFileInfo", "private", "", "public" ] }, - { symbol: [ "QFileInfoList", "private", "", "public" ] }, - { symbol: [ "QFileOpenEvent", "private", "", "public" ] }, - { symbol: [ "QFileSelector", "private", "", "public" ] }, - { symbol: [ "QFileSystemModel", "private", "", "public" ] }, - { symbol: [ "QFileSystemWatcher", "private", "", "public" ] }, - { symbol: [ "QFinalState", "private", "", "public" ] }, - { symbol: [ "QFlag", "private", "", "public" ] }, - { symbol: [ "QFlags", "private", "", "public" ] }, - { symbol: [ "QFocusEvent", "private", "", "public" ] }, - { symbol: [ "QFocusFrame", "private", "", "public" ] }, - { symbol: [ "QFont", "private", "", "public" ] }, - { symbol: [ "QFontComboBox", "private", "", "public" ] }, - { symbol: [ "QFontDatabase", "private", "", "public" ] }, - { symbol: [ "QFontDialog", "private", "", "public" ] }, - { symbol: [ "QFontInfo", "private", "", "public" ] }, - { symbol: [ "QFontMetrics", "private", "", "public" ] }, - { symbol: [ "QFontMetricsF", "private", "", "public" ] }, - { symbol: [ "QForeachContainer", "private", "", "public" ] }, - { symbol: [ "QFormBuilder", "private", "", "public" ] }, - { symbol: [ "QFormLayout", "private", "", "public" ] }, - { symbol: [ "QFrame", "private", "", "public" ] }, - { symbol: [ "QFunctionPointer", "private", "", "public" ] }, - { symbol: [ "QFuture", "private", "", "public" ] }, - { symbol: [ "QFutureInterface", "private", "", "public" ] }, - { symbol: [ "QFutureInterfaceBase", "private", "", "public" ] }, - { symbol: [ "QFutureIterator", "private", "", "public" ] }, - { symbol: [ "QFutureSynchronizer", "private", "", "public" ] }, - { symbol: [ "QFutureWatcher", "private", "", "public" ] }, - { symbol: [ "QFutureWatcherBase", "private", "", "public" ] }, - { symbol: [ "QGL", "private", "", "public" ] }, - { symbol: [ "QGLBuffer", "private", "", "public" ] }, - { symbol: [ "QGLColormap", "private", "", "public" ] }, - { symbol: [ "QGLContext", "private", "", "public" ] }, - { symbol: [ "QGLFormat", "private", "", "public" ] }, - { symbol: [ "QGLFramebufferObject", "private", "", "public" ] }, - { symbol: [ "QGLFramebufferObjectFormat", "private", "", "public" ] }, - { symbol: [ "QGLFunctions", "private", "", "public" ] }, - { symbol: [ "QGLFunctionsPrivate", "private", "", "public" ] }, - { symbol: [ "QGLPixelBuffer", "private", "", "public" ] }, - { symbol: [ "QGLShader", "private", "", "public" ] }, - { symbol: [ "QGLShaderProgram", "private", "", "public" ] }, - { symbol: [ "QGLWidget", "private", "", "public" ] }, - { symbol: [ "QGLXNativeContext", "private", "", "public" ] }, - { symbol: [ "QGenericArgument", "private", "", "public" ] }, - { symbol: [ "QGenericMatrix", "private", "", "public" ] }, - { symbol: [ "QGenericPlugin", "private", "", "public" ] }, - { symbol: [ "QGenericPluginFactory", "private", "", "public" ] }, - { symbol: [ "QGenericReturnArgument", "private", "", "public" ] }, - { symbol: [ "QGeoAddress", "private", "", "public" ] }, - { symbol: [ "QGeoAreaMonitorInfo", "private", "", "public" ] }, - { symbol: [ "QGeoAreaMonitorSource", "private", "", "public" ] }, - { symbol: [ "QGeoCircle", "private", "", "public" ] }, - { symbol: [ "QGeoCodeReply", "private", "", "public" ] }, - { symbol: [ "QGeoCodingManager", "private", "", "public" ] }, - { symbol: [ "QGeoCodingManagerEngine", "private", "", "public" ] }, - { symbol: [ "QGeoCoordinate", "private", "", "public" ] }, - { symbol: [ "QGeoLocation", "private", "", "public" ] }, - { symbol: [ "QGeoManeuver", "private", "", "public" ] }, - { symbol: [ "QGeoPositionInfo", "private", "", "public" ] }, - { symbol: [ "QGeoPositionInfoSource", "private", "", "public" ] }, - { symbol: [ "QGeoPositionInfoSourceFactory", "private", "", "public" ] }, - { symbol: [ "QGeoRectangle", "private", "", "public" ] }, - { symbol: [ "QGeoRoute", "private", "", "public" ] }, - { symbol: [ "QGeoRouteReply", "private", "", "public" ] }, - { symbol: [ "QGeoRouteRequest", "private", "", "public" ] }, - { symbol: [ "QGeoRouteSegment", "private", "", "public" ] }, - { symbol: [ "QGeoRoutingManager", "private", "", "public" ] }, - { symbol: [ "QGeoRoutingManagerEngine", "private", "", "public" ] }, - { symbol: [ "QGeoSatelliteInfo", "private", "", "public" ] }, - { symbol: [ "QGeoSatelliteInfoSource", "private", "", "public" ] }, - { symbol: [ "QGeoServiceProvider", "private", "", "public" ] }, - { symbol: [ "QGeoServiceProviderFactory", "private", "", "public" ] }, - { symbol: [ "QGeoShape", "private", "", "public" ] }, - { symbol: [ "QGesture", "private", "", "public" ] }, - { symbol: [ "QGestureEvent", "private", "", "public" ] }, - { symbol: [ "QGestureRecognizer", "private", "", "public" ] }, - { symbol: [ "QGlobalStatic", "private", "", "public" ] }, - { symbol: [ "QGlyphRun", "private", "", "public" ] }, - { symbol: [ "QGradient", "private", "", "public" ] }, - { symbol: [ "QGradientStop", "private", "", "public" ] }, - { symbol: [ "QGradientStops", "private", "", "public" ] }, - { symbol: [ "QGraphicsAnchor", "private", "", "public" ] }, - { symbol: [ "QGraphicsAnchorLayout", "private", "", "public" ] }, - { symbol: [ "QGraphicsBlurEffect", "private", "", "public" ] }, - { symbol: [ "QGraphicsColorizeEffect", "private", "", "public" ] }, - { symbol: [ "QGraphicsDropShadowEffect", "private", "", "public" ] }, - { symbol: [ "QGraphicsEffect", "private", "", "public" ] }, - { symbol: [ "QGraphicsEllipseItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsGridLayout", "private", "", "public" ] }, - { symbol: [ "QGraphicsItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsItemAnimation", "private", "", "public" ] }, - { symbol: [ "QGraphicsItemGroup", "private", "", "public" ] }, - { symbol: [ "QGraphicsLayout", "private", "", "public" ] }, - { symbol: [ "QGraphicsLayoutItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsLineItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsLinearLayout", "private", "", "public" ] }, - { symbol: [ "QGraphicsObject", "private", "", "public" ] }, - { symbol: [ "QGraphicsOpacityEffect", "private", "", "public" ] }, - { symbol: [ "QGraphicsPathItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsPixmapItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsPolygonItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsProxyWidget", "private", "", "public" ] }, - { symbol: [ "QGraphicsRectItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsRotation", "private", "", "public" ] }, - { symbol: [ "QGraphicsScale", "private", "", "public" ] }, - { symbol: [ "QGraphicsScene", "private", "", "public" ] }, - { symbol: [ "QGraphicsSceneContextMenuEvent", "private", "", "public" ] }, - { symbol: [ "QGraphicsSceneDragDropEvent", "private", "", "public" ] }, - { symbol: [ "QGraphicsSceneEvent", "private", "", "public" ] }, - { symbol: [ "QGraphicsSceneHelpEvent", "private", "", "public" ] }, - { symbol: [ "QGraphicsSceneHoverEvent", "private", "", "public" ] }, - { symbol: [ "QGraphicsSceneMouseEvent", "private", "", "public" ] }, - { symbol: [ "QGraphicsSceneMoveEvent", "private", "", "public" ] }, - { symbol: [ "QGraphicsSceneResizeEvent", "private", "", "public" ] }, - { symbol: [ "QGraphicsSceneWheelEvent", "private", "", "public" ] }, - { symbol: [ "QGraphicsSimpleTextItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsSvgItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsTextItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsTransform", "private", "", "public" ] }, - { symbol: [ "QGraphicsVideoItem", "private", "", "public" ] }, - { symbol: [ "QGraphicsView", "private", "", "public" ] }, - { symbol: [ "QGraphicsWebView", "private", "", "public" ] }, - { symbol: [ "QGraphicsWidget", "private", "", "public" ] }, - { symbol: [ "QGridLayout", "private", "", "public" ] }, - { symbol: [ "QGroupBox", "private", "", "public" ] }, - { symbol: [ "QGuiApplication", "private", "", "public" ] }, - { symbol: [ "QGyroscope", "private", "", "public" ] }, - { symbol: [ "QGyroscopeFilter", "private", "", "public" ] }, - { symbol: [ "QGyroscopeReading", "private", "", "public" ] }, - { symbol: [ "QHBoxLayout", "private", "", "public" ] }, - { symbol: [ "QHash", "private", "", "public" ] }, - { symbol: [ "QHashData", "private", "", "public" ] }, - { symbol: [ "QHashDummyValue", "private", "", "public" ] }, - { symbol: [ "QHashIterator", "private", "", "public" ] }, - { symbol: [ "QHashNode", "private", "", "public" ] }, - { symbol: [ "QHeaderView", "private", "", "public" ] }, - { symbol: [ "QHelpContentItem", "private", "", "public" ] }, - { symbol: [ "QHelpContentModel", "private", "", "public" ] }, - { symbol: [ "QHelpContentWidget", "private", "", "public" ] }, - { symbol: [ "QHelpEngine", "private", "", "public" ] }, - { symbol: [ "QHelpEngineCore", "private", "", "public" ] }, - { symbol: [ "QHelpEvent", "private", "", "public" ] }, - { symbol: [ "QHelpGlobal", "private", "", "public" ] }, - { symbol: [ "QHelpIndexModel", "private", "", "public" ] }, - { symbol: [ "QHelpIndexWidget", "private", "", "public" ] }, - { symbol: [ "QHelpSearchEngine", "private", "", "public" ] }, - { symbol: [ "QHelpSearchQuery", "private", "", "public" ] }, - { symbol: [ "QHelpSearchQueryWidget", "private", "", "public" ] }, - { symbol: [ "QHelpSearchResultWidget", "private", "", "public" ] }, - { symbol: [ "QHideEvent", "private", "", "public" ] }, - { symbol: [ "QHistoryState", "private", "", "public" ] }, - { symbol: [ "QHolsterFilter", "private", "", "public" ] }, - { symbol: [ "QHolsterReading", "private", "", "public" ] }, - { symbol: [ "QHolsterSensor", "private", "", "public" ] }, - { symbol: [ "QHostAddress", "private", "", "public" ] }, - { symbol: [ "QHostInfo", "private", "", "public" ] }, - { symbol: [ "QHoverEvent", "private", "", "public" ] }, - { symbol: [ "QHttpMultiPart", "private", "", "public" ] }, - { symbol: [ "QHttpPart", "private", "", "public" ] }, - { symbol: [ "QIODevice", "private", "", "public" ] }, - { symbol: [ "QIPv6Address", "private", "", "public" ] }, - { symbol: [ "QIRProximityFilter", "private", "", "public" ] }, - { symbol: [ "QIRProximityReading", "private", "", "public" ] }, - { symbol: [ "QIRProximitySensor", "private", "", "public" ] }, - { symbol: [ "QIcon", "private", "", "public" ] }, - { symbol: [ "QIconDragEvent", "private", "", "public" ] }, - { symbol: [ "QIconEngine", "private", "", "public" ] }, - { symbol: [ "QIconEnginePlugin", "private", "", "public" ] }, - { symbol: [ "QIconEngineV2", "private", "", "public" ] }, - { symbol: [ "QIdentityProxyModel", "private", "", "public" ] }, - { symbol: [ "QImage", "private", "", "public" ] }, - { symbol: [ "QImageCleanupFunction", "private", "", "public" ] }, - { symbol: [ "QImageEncoderControl", "private", "", "public" ] }, - { symbol: [ "QImageEncoderSettings", "private", "", "public" ] }, - { symbol: [ "QImageIOHandler", "private", "", "public" ] }, - { symbol: [ "QImageIOPlugin", "private", "", "public" ] }, - { symbol: [ "QImageReader", "private", "", "public" ] }, - { symbol: [ "QImageTextKeyLang", "private", "", "public" ] }, - { symbol: [ "QImageWriter", "private", "", "public" ] }, - { symbol: [ "QIncompatibleFlag", "private", "", "public" ] }, - { symbol: [ "QInputDialog", "private", "", "public" ] }, - { symbol: [ "QInputEvent", "private", "", "public" ] }, - { symbol: [ "QInputMethod", "private", "", "public" ] }, - { symbol: [ "QInputMethodEvent", "private", "", "public" ] }, - { symbol: [ "QInputMethodQueryEvent", "private", "", "public" ] }, - { symbol: [ "QIntValidator", "private", "", "public" ] }, - { symbol: [ "QIntegerForSize", "private", "", "public" ] }, - { symbol: [ "QInternal", "private", "", "public" ] }, - { symbol: [ "QItemDelegate", "private", "", "public" ] }, - { symbol: [ "QItemEditorCreator", "private", "", "public" ] }, - { symbol: [ "QItemEditorCreatorBase", "private", "", "public" ] }, - { symbol: [ "QItemEditorFactory", "private", "", "public" ] }, - { symbol: [ "QItemSelection", "private", "", "public" ] }, - { symbol: [ "QItemSelectionModel", "private", "", "public" ] }, - { symbol: [ "QItemSelectionRange", "private", "", "public" ] }, - { symbol: [ "QJSEngine", "private", "", "public" ] }, - { symbol: [ "QJSValue", "private", "", "public" ] }, - { symbol: [ "QJSValueIterator", "private", "", "public" ] }, - { symbol: [ "QJSValueList", "private", "", "public" ] }, - { symbol: [ "QJsonArray", "private", "", "public" ] }, - { symbol: [ "QJsonDocument", "private", "", "public" ] }, - { symbol: [ "QJsonObject", "private", "", "public" ] }, - { symbol: [ "QJsonParseError", "private", "", "public" ] }, - { symbol: [ "QJsonValue", "private", "", "public" ] }, - { symbol: [ "QJsonValuePtr", "private", "", "public" ] }, - { symbol: [ "QJsonValueRef", "private", "", "public" ] }, - { symbol: [ "QJsonValueRefPtr", "private", "", "public" ] }, - { symbol: [ "QKeyEvent", "private", "", "public" ] }, - { symbol: [ "QKeyEventTransition", "private", "", "public" ] }, - { symbol: [ "QKeySequence", "private", "", "public" ] }, - { symbol: [ "QKeySequenceEdit", "private", "", "public" ] }, - { symbol: [ "QLCDNumber", "private", "", "public" ] }, - { symbol: [ "QLabel", "private", "", "public" ] }, - { symbol: [ "QLatin1Char", "private", "", "public" ] }, - { symbol: [ "QLatin1Literal", "private", "", "public" ] }, - { symbol: [ "QLatin1String", "private", "", "public" ] }, - { symbol: [ "QLayout", "private", "", "public" ] }, - { symbol: [ "QLayoutItem", "private", "", "public" ] }, - { symbol: [ "QLibrary", "private", "", "public" ] }, - { symbol: [ "QLibraryInfo", "private", "", "public" ] }, - { symbol: [ "QLightFilter", "private", "", "public" ] }, - { symbol: [ "QLightReading", "private", "", "public" ] }, - { symbol: [ "QLightSensor", "private", "", "public" ] }, - { symbol: [ "QLine", "private", "", "public" ] }, - { symbol: [ "QLineEdit", "private", "", "public" ] }, - { symbol: [ "QLineF", "private", "", "public" ] }, - { symbol: [ "QLinearGradient", "private", "", "public" ] }, - { symbol: [ "QLinkedList", "private", "", "public" ] }, - { symbol: [ "QLinkedListData", "private", "", "public" ] }, - { symbol: [ "QLinkedListIterator", "private", "", "public" ] }, - { symbol: [ "QLinkedListNode", "private", "", "public" ] }, - { symbol: [ "QList", "private", "", "public" ] }, - { symbol: [ "QListData", "private", "", "public" ] }, - { symbol: [ "QListIterator", "private", "", "public" ] }, - { symbol: [ "QListSpecialMethods", "private", "", "public" ] }, - { symbol: [ "QListView", "private", "", "public" ] }, - { symbol: [ "QListWidget", "private", "", "public" ] }, - { symbol: [ "QListWidgetItem", "private", "", "public" ] }, - { symbol: [ "QLocalServer", "private", "", "public" ] }, - { symbol: [ "QLocalSocket", "private", "", "public" ] }, - { symbol: [ "QLocale", "private", "", "public" ] }, - { symbol: [ "QLocation", "private", "", "public" ] }, - { symbol: [ "QLockFile", "private", "", "public" ] }, - { symbol: [ "QLockFile", "private", "", "public" ] }, - { symbol: [ "QLoggingCategory", "private", "", "public" ] }, - { symbol: [ "QLowEnergyCharacteristic", "private", "", "public" ] }, - { symbol: [ "QLowEnergyController", "private", "", "public" ] }, - { symbol: [ "QLowEnergyDescriptor", "private", "", "public" ] }, - { symbol: [ "QLowEnergyHandle", "private", "", "public" ] }, - { symbol: [ "QLowEnergyService", "private", "", "public" ] }, - { symbol: [ "QMacCocoaViewContainer", "private", "", "public" ] }, - { symbol: [ "QMacNativeWidget", "private", "", "public" ] }, - { symbol: [ "QMagnetometer", "private", "", "public" ] }, - { symbol: [ "QMagnetometerFilter", "private", "", "public" ] }, - { symbol: [ "QMagnetometerReading", "private", "", "public" ] }, - { symbol: [ "QMainWindow", "private", "", "public" ] }, - { symbol: [ "QMap", "private", "", "public" ] }, - { symbol: [ "QMapData", "private", "", "public" ] }, - { symbol: [ "QMapDataBase", "private", "", "public" ] }, - { symbol: [ "QMapIterator", "private", "", "public" ] }, - { symbol: [ "QMapNode", "private", "", "public" ] }, - { symbol: [ "QMapNodeBase", "private", "", "public" ] }, - { symbol: [ "QMargins", "private", "", "public" ] }, - { symbol: [ "QMarginsF", "private", "", "public" ] }, - { symbol: [ "QMaskGenerator", "private", "", "public" ] }, - { symbol: [ "QMatrix", "private", "", "public" ] }, - { symbol: [ "QMatrix2x2", "private", "", "public" ] }, - { symbol: [ "QMatrix2x3", "private", "", "public" ] }, - { symbol: [ "QMatrix2x4", "private", "", "public" ] }, - { symbol: [ "QMatrix3x2", "private", "", "public" ] }, - { symbol: [ "QMatrix3x3", "private", "", "public" ] }, - { symbol: [ "QMatrix3x4", "private", "", "public" ] }, - { symbol: [ "QMatrix4x2", "private", "", "public" ] }, - { symbol: [ "QMatrix4x3", "private", "", "public" ] }, - { symbol: [ "QMatrix4x4", "private", "", "public" ] }, - { symbol: [ "QMdiArea", "private", "", "public" ] }, - { symbol: [ "QMdiSubWindow", "private", "", "public" ] }, - { symbol: [ "QMediaAudioProbeControl", "private", "", "public" ] }, - { symbol: [ "QMediaAvailabilityControl", "private", "", "public" ] }, - { symbol: [ "QMediaBindableInterface", "private", "", "public" ] }, - { symbol: [ "QMediaContainerControl", "private", "", "public" ] }, - { symbol: [ "QMediaContent", "private", "", "public" ] }, - { symbol: [ "QMediaControl", "private", "", "public" ] }, - { symbol: [ "QMediaGaplessPlaybackControl", "private", "", "public" ] }, - { symbol: [ "QMediaMetaData", "private", "", "public" ] }, - { symbol: [ "QMediaNetworkAccessControl", "private", "", "public" ] }, - { symbol: [ "QMediaObject", "private", "", "public" ] }, - { symbol: [ "QMediaPlayer", "private", "", "public" ] }, - { symbol: [ "QMediaPlayerControl", "private", "", "public" ] }, - { symbol: [ "QMediaPlaylist", "private", "", "public" ] }, - { symbol: [ "QMediaRecorder", "private", "", "public" ] }, - { symbol: [ "QMediaRecorderControl", "private", "", "public" ] }, - { symbol: [ "QMediaResource", "private", "", "public" ] }, - { symbol: [ "QMediaResourceList", "private", "", "public" ] }, - { symbol: [ "QMediaService", "private", "", "public" ] }, - { symbol: [ "QMediaServiceCameraInfoInterface", "private", "", "public" ] }, - { symbol: [ "QMediaServiceDefaultDeviceInterface", "private", "", "public" ] }, - { symbol: [ "QMediaServiceFeaturesInterface", "private", "", "public" ] }, - { symbol: [ "QMediaServiceProviderFactoryInterface", "private", "", "public" ] }, - { symbol: [ "QMediaServiceProviderHint", "private", "", "public" ] }, - { symbol: [ "QMediaServiceProviderPlugin", "private", "", "public" ] }, - { symbol: [ "QMediaServiceSupportedDevicesInterface", "private", "", "public" ] }, - { symbol: [ "QMediaServiceSupportedFormatsInterface", "private", "", "public" ] }, - { symbol: [ "QMediaStreamsControl", "private", "", "public" ] }, - { symbol: [ "QMediaTimeInterval", "private", "", "public" ] }, - { symbol: [ "QMediaTimeRange", "private", "", "public" ] }, - { symbol: [ "QMediaVideoProbeControl", "private", "", "public" ] }, - { symbol: [ "QMenu", "private", "", "public" ] }, - { symbol: [ "QMenuBar", "private", "", "public" ] }, - { symbol: [ "QMessageAuthenticationCode", "private", "", "public" ] }, - { symbol: [ "QMessageBox", "private", "", "public" ] }, - { symbol: [ "QMessageLogContext", "private", "", "public" ] }, - { symbol: [ "QMessageLogger", "private", "", "public" ] }, - { symbol: [ "QMetaClassInfo", "private", "", "public" ] }, - { symbol: [ "QMetaDataReaderControl", "private", "", "public" ] }, - { symbol: [ "QMetaDataWriterControl", "private", "", "public" ] }, - { symbol: [ "QMetaEnum", "private", "", "public" ] }, - { symbol: [ "QMetaMethod", "private", "", "public" ] }, - { symbol: [ "QMetaObject", "private", "", "public" ] }, - { symbol: [ "QMetaProperty", "private", "", "public" ] }, - { symbol: [ "QMetaType", "private", "", "public" ] }, - { symbol: [ "QMetaTypeId", "private", "", "public" ] }, - { symbol: [ "QMetaTypeId2", "private", "", "public" ] }, - { symbol: [ "QMetaTypeIdQObject", "private", "", "public" ] }, - { symbol: [ "QMimeData", "private", "", "public" ] }, - { symbol: [ "QMimeDatabase", "private", "", "public" ] }, - { symbol: [ "QMimeType", "private", "", "public" ] }, - { symbol: [ "QModelIndex", "private", "", "public" ] }, - { symbol: [ "QModelIndexList", "private", "", "public" ] }, - { symbol: [ "QMouseEvent", "private", "", "public" ] }, - { symbol: [ "QMouseEventTransition", "private", "", "public" ] }, - { symbol: [ "QMoveEvent", "private", "", "public" ] }, - { symbol: [ "QMovie", "private", "", "public" ] }, - { symbol: [ "QMultiHash", "private", "", "public" ] }, - { symbol: [ "QMultiMap", "private", "", "public" ] }, - { symbol: [ "QMultimedia", "private", "", "public" ] }, - { symbol: [ "QMutableByteArrayListIterator", "private", "", "public" ] }, - { symbol: [ "QMutableFutureIterator", "private", "", "public" ] }, - { symbol: [ "QMutableHashIterator", "private", "", "public" ] }, - { symbol: [ "QMutableLinkedListIterator", "private", "", "public" ] }, - { symbol: [ "QMutableListIterator", "private", "", "public" ] }, - { symbol: [ "QMutableMapIterator", "private", "", "public" ] }, - { symbol: [ "QMutableSetIterator", "private", "", "public" ] }, - { symbol: [ "QMutableStringListIterator", "private", "", "public" ] }, - { symbol: [ "QMutableVectorIterator", "private", "", "public" ] }, - { symbol: [ "QMutex", "private", "", "public" ] }, - { symbol: [ "QMutexLocker", "private", "", "public" ] }, - { symbol: [ "QNativeGestureEvent", "private", "", "public" ] }, - { symbol: [ "QNdefFilter", "private", "", "public" ] }, - { symbol: [ "QNdefMessage", "private", "", "public" ] }, - { symbol: [ "QNdefNfcIconRecord", "private", "", "public" ] }, - { symbol: [ "QNdefNfcSmartPosterRecord", "private", "", "public" ] }, - { symbol: [ "QNdefNfcTextRecord", "private", "", "public" ] }, - { symbol: [ "QNdefNfcUriRecord", "private", "", "public" ] }, - { symbol: [ "QNdefRecord", "private", "", "public" ] }, - { symbol: [ "QNearFieldManager", "private", "", "public" ] }, - { symbol: [ "QNearFieldShareManager", "private", "", "public" ] }, - { symbol: [ "QNearFieldShareTarget", "private", "", "public" ] }, - { symbol: [ "QNearFieldTarget", "private", "", "public" ] }, - { symbol: [ "QNetworkAccessManager", "private", "", "public" ] }, - { symbol: [ "QNetworkAddressEntry", "private", "", "public" ] }, - { symbol: [ "QNetworkCacheMetaData", "private", "", "public" ] }, - { symbol: [ "QNetworkConfiguration", "private", "", "public" ] }, - { symbol: [ "QNetworkConfigurationManager", "private", "", "public" ] }, - { symbol: [ "QNetworkCookie", "private", "", "public" ] }, - { symbol: [ "QNetworkCookieJar", "private", "", "public" ] }, - { symbol: [ "QNetworkDiskCache", "private", "", "public" ] }, - { symbol: [ "QNetworkInterface", "private", "", "public" ] }, - { symbol: [ "QNetworkProxy", "private", "", "public" ] }, - { symbol: [ "QNetworkProxyFactory", "private", "", "public" ] }, - { symbol: [ "QNetworkProxyQuery", "private", "", "public" ] }, - { symbol: [ "QNetworkReply", "private", "", "public" ] }, - { symbol: [ "QNetworkRequest", "private", "", "public" ] }, - { symbol: [ "QNetworkSession", "private", "", "public" ] }, - { symbol: [ "QNmeaPositionInfoSource", "private", "", "public" ] }, - { symbol: [ "QNoDebug", "private", "", "public" ] }, - { symbol: [ "QObject", "private", "", "public" ] }, - { symbol: [ "QObjectCleanupHandler", "private", "", "public" ] }, - { symbol: [ "QObjectData", "private", "", "public" ] }, - { symbol: [ "QObjectList", "private", "", "public" ] }, - { symbol: [ "QObjectUserData", "private", "", "public" ] }, - { symbol: [ "QOffscreenSurface", "private", "", "public" ] }, - { symbol: [ "QOpenGLBuffer", "private", "", "public" ] }, - { symbol: [ "QOpenGLContext", "private", "", "public" ] }, - { symbol: [ "QOpenGLContextGroup", "private", "", "public" ] }, - { symbol: [ "QOpenGLDebugLogger", "private", "", "public" ] }, - { symbol: [ "QOpenGLDebugMessage", "private", "", "public" ] }, - { symbol: [ "QOpenGLExtensions", "private", "", "public" ] }, - { symbol: [ "QOpenGLFramebufferObject", "private", "", "public" ] }, - { symbol: [ "QOpenGLFramebufferObjectFormat", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctionsPrivate", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_1_0", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_1_1", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_1_2", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_1_3", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_1_4", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_1_5", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_2_0", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_2_1", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_3_0", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_3_1", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_3_2_Compatibility", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_3_2_Core", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_3_3_Compatibility", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_3_3_Core", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_4_0_Compatibility", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_4_0_Core", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_4_1_Compatibility", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_4_1_Core", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_4_2_Compatibility", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_4_2_Core", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_4_3_Compatibility", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_4_3_Core", "private", "", "public" ] }, - { symbol: [ "QOpenGLFunctions_ES2", "private", "", "public" ] }, - { symbol: [ "QOpenGLPaintDevice", "private", "", "public" ] }, - { symbol: [ "QOpenGLPixelTransferOptions", "private", "", "public" ] }, - { symbol: [ "QOpenGLShader", "private", "", "public" ] }, - { symbol: [ "QOpenGLShaderProgram", "private", "", "public" ] }, - { symbol: [ "QOpenGLTexture", "private", "", "public" ] }, - { symbol: [ "QOpenGLTimeMonitor", "private", "", "public" ] }, - { symbol: [ "QOpenGLTimerQuery", "private", "", "public" ] }, - { symbol: [ "QOpenGLVersionFunctions", "private", "", "public" ] }, - { symbol: [ "QOpenGLVersionProfile", "private", "", "public" ] }, - { symbol: [ "QOpenGLVertexArrayObject", "private", "", "public" ] }, - { symbol: [ "QOpenGLWidget", "private", "", "public" ] }, - { symbol: [ "QOpenGLWindow", "private", "", "public" ] }, - { symbol: [ "QOrientationFilter", "private", "", "public" ] }, - { symbol: [ "QOrientationReading", "private", "", "public" ] }, - { symbol: [ "QOrientationSensor", "private", "", "public" ] }, - { symbol: [ "QPageLayout", "private", "", "public" ] }, - { symbol: [ "QPageSetupDialog", "private", "", "public" ] }, - { symbol: [ "QPageSize", "private", "", "public" ] }, - { symbol: [ "QPagedPaintDevice", "private", "", "public" ] }, - { symbol: [ "QPaintDevice", "private", "", "public" ] }, - { symbol: [ "QPaintDeviceWindow", "private", "", "public" ] }, - { symbol: [ "QPaintEngine", "private", "", "public" ] }, - { symbol: [ "QPaintEngineState", "private", "", "public" ] }, - { symbol: [ "QPaintEvent", "private", "", "public" ] }, - { symbol: [ "QPainter", "private", "", "public" ] }, - { symbol: [ "QPainterPath", "private", "", "public" ] }, - { symbol: [ "QPainterPathStroker", "private", "", "public" ] }, - { symbol: [ "QPair", "private", "", "public" ] }, - { symbol: [ "QPalette", "private", "", "public" ] }, - { symbol: [ "QPanGesture", "private", "", "public" ] }, - { symbol: [ "QParallelAnimationGroup", "private", "", "public" ] }, - { symbol: [ "QPauseAnimation", "private", "", "public" ] }, - { symbol: [ "QPdfWriter", "private", "", "public" ] }, - { symbol: [ "QPen", "private", "", "public" ] }, - { symbol: [ "QPersistentModelIndex", "private", "", "public" ] }, - { symbol: [ "QPicture", "private", "", "public" ] }, - { symbol: [ "QPictureFormatPlugin", "private", "", "public" ] }, - { symbol: [ "QPictureIO", "private", "", "public" ] }, - { symbol: [ "QPinchGesture", "private", "", "public" ] }, - { symbol: [ "QPixelFormat", "private", "", "public" ] }, - { symbol: [ "QPixmap", "private", "", "public" ] }, - { symbol: [ "QPixmapCache", "private", "", "public" ] }, - { symbol: [ "QPlace", "private", "", "public" ] }, - { symbol: [ "QPlaceAttribute", "private", "", "public" ] }, - { symbol: [ "QPlaceCategory", "private", "", "public" ] }, - { symbol: [ "QPlaceContactDetail", "private", "", "public" ] }, - { symbol: [ "QPlaceContent", "private", "", "public" ] }, - { symbol: [ "QPlaceContentReply", "private", "", "public" ] }, - { symbol: [ "QPlaceContentRequest", "private", "", "public" ] }, - { symbol: [ "QPlaceDetailsReply", "private", "", "public" ] }, - { symbol: [ "QPlaceEditorial", "private", "", "public" ] }, - { symbol: [ "QPlaceIcon", "private", "", "public" ] }, - { symbol: [ "QPlaceIdReply", "private", "", "public" ] }, - { symbol: [ "QPlaceImage", "private", "", "public" ] }, - { symbol: [ "QPlaceManager", "private", "", "public" ] }, - { symbol: [ "QPlaceManagerEngine", "private", "", "public" ] }, - { symbol: [ "QPlaceMatchReply", "private", "", "public" ] }, - { symbol: [ "QPlaceMatchRequest", "private", "", "public" ] }, - { symbol: [ "QPlaceProposedSearchResult", "private", "", "public" ] }, - { symbol: [ "QPlaceRatings", "private", "", "public" ] }, - { symbol: [ "QPlaceReply", "private", "", "public" ] }, - { symbol: [ "QPlaceResult", "private", "", "public" ] }, - { symbol: [ "QPlaceReview", "private", "", "public" ] }, - { symbol: [ "QPlaceSearchReply", "private", "", "public" ] }, - { symbol: [ "QPlaceSearchRequest", "private", "", "public" ] }, - { symbol: [ "QPlaceSearchResult", "private", "", "public" ] }, - { symbol: [ "QPlaceSearchSuggestionReply", "private", "", "public" ] }, - { symbol: [ "QPlaceSupplier", "private", "", "public" ] }, - { symbol: [ "QPlaceUser", "private", "", "public" ] }, - { symbol: [ "QPlainTextDocumentLayout", "private", "", "public" ] }, - { symbol: [ "QPlainTextEdit", "private", "", "public" ] }, - { symbol: [ "QPluginLoader", "private", "", "public" ] }, - { symbol: [ "QPoint", "private", "", "public" ] }, - { symbol: [ "QPointF", "private", "", "public" ] }, - { symbol: [ "QPointer", "private", "", "public" ] }, - { symbol: [ "QPolygon", "private", "", "public" ] }, - { symbol: [ "QPolygonF", "private", "", "public" ] }, - { symbol: [ "QPressureFilter", "private", "", "public" ] }, - { symbol: [ "QPressureReading", "private", "", "public" ] }, - { symbol: [ "QPressureSensor", "private", "", "public" ] }, - { symbol: [ "QPrintDialog", "private", "", "public" ] }, - { symbol: [ "QPrintEngine", "private", "", "public" ] }, - { symbol: [ "QPrintPreviewDialog", "private", "", "public" ] }, - { symbol: [ "QPrintPreviewWidget", "private", "", "public" ] }, - { symbol: [ "QPrinter", "private", "", "public" ] }, - { symbol: [ "QPrinterInfo", "private", "", "public" ] }, - { symbol: [ "QProcess", "private", "", "public" ] }, - { symbol: [ "QProcessEnvironment", "private", "", "public" ] }, - { symbol: [ "QProgressBar", "private", "", "public" ] }, - { symbol: [ "QProgressDialog", "private", "", "public" ] }, - { symbol: [ "QPropertyAnimation", "private", "", "public" ] }, - { symbol: [ "QProximityFilter", "private", "", "public" ] }, - { symbol: [ "QProximityReading", "private", "", "public" ] }, - { symbol: [ "QProximitySensor", "private", "", "public" ] }, - { symbol: [ "QProxyStyle", "private", "", "public" ] }, - { symbol: [ "QPushButton", "private", "", "public" ] }, - { symbol: [ "QQmlAbstractUrlInterceptor", "private", "", "public" ] }, - { symbol: [ "QQmlApplicationEngine", "private", "", "public" ] }, - { symbol: [ "QQmlAttachedPropertiesFunc", "private", "", "public" ] }, - { symbol: [ "QQmlComponent", "private", "", "public" ] }, - { symbol: [ "QQmlContext", "private", "", "public" ] }, - { symbol: [ "QQmlDebuggingEnabler", "private", "", "public" ] }, - { symbol: [ "QQmlEngine", "private", "", "public" ] }, - { symbol: [ "QQmlError", "private", "", "public" ] }, - { symbol: [ "QQmlExpression", "private", "", "public" ] }, - { symbol: [ "QQmlExtensionInterface", "private", "", "public" ] }, - { symbol: [ "QQmlExtensionPlugin", "private", "", "public" ] }, - { symbol: [ "QQmlFile", "private", "", "public" ] }, - { symbol: [ "QQmlFileSelector", "private", "", "public" ] }, - { symbol: [ "QQmlImageProviderBase", "private", "", "public" ] }, - { symbol: [ "QQmlIncubationController", "private", "", "public" ] }, - { symbol: [ "QQmlIncubator", "private", "", "public" ] }, - { symbol: [ "QQmlInfo", "private", "", "public" ] }, - { symbol: [ "QQmlListProperty", "private", "", "public" ] }, - { symbol: [ "QQmlListReference", "private", "", "public" ] }, - { symbol: [ "QQmlNdefRecord", "private", "", "public" ] }, - { symbol: [ "QQmlNetworkAccessManagerFactory", "private", "", "public" ] }, - { symbol: [ "QQmlParserStatus", "private", "", "public" ] }, - { symbol: [ "QQmlProperties", "private", "", "public" ] }, - { symbol: [ "QQmlProperty", "private", "", "public" ] }, - { symbol: [ "QQmlPropertyMap", "private", "", "public" ] }, - { symbol: [ "QQmlPropertyValueSource", "private", "", "public" ] }, - { symbol: [ "QQmlScriptString", "private", "", "public" ] }, - { symbol: [ "QQmlTypeInfo", "private", "", "public" ] }, - { symbol: [ "QQmlTypesExtensionInterface", "private", "", "public" ] }, - { symbol: [ "QQmlWebChannel", "private", "", "public" ] }, - { symbol: [ "QQuaternion", "private", "", "public" ] }, - { symbol: [ "QQueue", "private", "", "public" ] }, - { symbol: [ "QQuickFramebufferObject", "private", "", "public" ] }, - { symbol: [ "QQuickImageProvider", "private", "", "public" ] }, - { symbol: [ "QQuickItem", "private", "", "public" ] }, - { symbol: [ "QQuickItemGrabResult", "private", "", "public" ] }, - { symbol: [ "QQuickPaintedItem", "private", "", "public" ] }, - { symbol: [ "QQuickRenderControl", "private", "", "public" ] }, - { symbol: [ "QQuickTextDocument", "private", "", "public" ] }, - { symbol: [ "QQuickTextureFactory", "private", "", "public" ] }, - { symbol: [ "QQuickTransform", "private", "", "public" ] }, - { symbol: [ "QQuickView", "private", "", "public" ] }, - { symbol: [ "QQuickWidget", "private", "", "public" ] }, - { symbol: [ "QQuickWindow", "private", "", "public" ] }, - { symbol: [ "QRadialGradient", "private", "", "public" ] }, - { symbol: [ "QRadioButton", "private", "", "public" ] }, - { symbol: [ "QRadioData", "private", "", "public" ] }, - { symbol: [ "QRadioDataControl", "private", "", "public" ] }, - { symbol: [ "QRadioTuner", "private", "", "public" ] }, - { symbol: [ "QRadioTunerControl", "private", "", "public" ] }, - { symbol: [ "QRasterWindow", "private", "", "public" ] }, - { symbol: [ "QRawFont", "private", "", "public" ] }, - { symbol: [ "QReadLocker", "private", "", "public" ] }, - { symbol: [ "QReadWriteLock", "private", "", "public" ] }, - { symbol: [ "QRect", "private", "", "public" ] }, - { symbol: [ "QRectF", "private", "", "public" ] }, - { symbol: [ "QRegExp", "private", "", "public" ] }, - { symbol: [ "QRegExpValidator", "private", "", "public" ] }, - { symbol: [ "QRegion", "private", "", "public" ] }, - { symbol: [ "QRegularExpression", "private", "", "public" ] }, - { symbol: [ "QRegularExpressionMatch", "private", "", "public" ] }, - { symbol: [ "QRegularExpressionMatchIterator", "private", "", "public" ] }, - { symbol: [ "QRegularExpressionValidator", "private", "", "public" ] }, - { symbol: [ "QResizeEvent", "private", "", "public" ] }, - { symbol: [ "QResource", "private", "", "public" ] }, - { symbol: [ "QReturnArgument", "private", "", "public" ] }, - { symbol: [ "QRgb", "private", "", "public" ] }, - { symbol: [ "QRotationFilter", "private", "", "public" ] }, - { symbol: [ "QRotationReading", "private", "", "public" ] }, - { symbol: [ "QRotationSensor", "private", "", "public" ] }, - { symbol: [ "QRubberBand", "private", "", "public" ] }, - { symbol: [ "QRunnable", "private", "", "public" ] }, - { symbol: [ "QSGAbstractRenderer", "private", "", "public" ] }, - { symbol: [ "QSGBasicGeometryNode", "private", "", "public" ] }, - { symbol: [ "QSGClipNode", "private", "", "public" ] }, - { symbol: [ "QSGDynamicTexture", "private", "", "public" ] }, - { symbol: [ "QSGEngine", "private", "", "public" ] }, - { symbol: [ "QSGFlatColorMaterial", "private", "", "public" ] }, - { symbol: [ "QSGGeometry", "private", "", "public" ] }, - { symbol: [ "QSGGeometryNode", "private", "", "public" ] }, - { symbol: [ "QSGMaterial", "private", "", "public" ] }, - { symbol: [ "QSGMaterialShader", "private", "", "public" ] }, - { symbol: [ "QSGMaterialType", "private", "", "public" ] }, - { symbol: [ "QSGNode", "private", "", "public" ] }, - { symbol: [ "QSGNodeVisitor", "private", "", "public" ] }, - { symbol: [ "QSGOpacityNode", "private", "", "public" ] }, - { symbol: [ "QSGOpaqueTextureMaterial", "private", "", "public" ] }, - { symbol: [ "QSGRootNode", "private", "", "public" ] }, - { symbol: [ "QSGSimpleMaterial", "private", "", "public" ] }, - { symbol: [ "QSGSimpleMaterialComparableMaterial", "private", "", "public" ] }, - { symbol: [ "QSGSimpleMaterialShader", "private", "", "public" ] }, - { symbol: [ "QSGSimpleRectNode", "private", "", "public" ] }, - { symbol: [ "QSGSimpleTextureNode", "private", "", "public" ] }, - { symbol: [ "QSGTexture", "private", "", "public" ] }, - { symbol: [ "QSGTextureMaterial", "private", "", "public" ] }, - { symbol: [ "QSGTextureProvider", "private", "", "public" ] }, - { symbol: [ "QSGTransformNode", "private", "", "public" ] }, - { symbol: [ "QSGVertexColorMaterial", "private", "", "public" ] }, - { symbol: [ "QSGVideoNodeFactory_I420", "private", "", "public" ] }, - { symbol: [ "QSGVideoNodeFactory_RGB", "private", "", "public" ] }, - { symbol: [ "QSGVideoNodeFactory_Texture", "private", "", "public" ] }, - { symbol: [ "QSGVideoNode_I420", "private", "", "public" ] }, - { symbol: [ "QSGVideoNode_RGB", "private", "", "public" ] }, - { symbol: [ "QSGVideoNode_Texture", "private", "", "public" ] }, - { symbol: [ "QSaveFile", "private", "", "public" ] }, - { symbol: [ "QScopedArrayPointer", "private", "", "public" ] }, - { symbol: [ "QScopedPointer", "private", "", "public" ] }, - { symbol: [ "QScopedPointerArrayDeleter", "private", "", "public" ] }, - { symbol: [ "QScopedPointerDeleteLater", "private", "", "public" ] }, - { symbol: [ "QScopedPointerDeleter", "private", "", "public" ] }, - { symbol: [ "QScopedPointerObjectDeleteLater", "private", "", "public" ] }, - { symbol: [ "QScopedPointerPodDeleter", "private", "", "public" ] }, - { symbol: [ "QScopedValueRollback", "private", "", "public" ] }, - { symbol: [ "QScreen", "private", "", "public" ] }, - { symbol: [ "QScreenOrientationChangeEvent", "private", "", "public" ] }, - { symbol: [ "QScriptClass", "private", "", "public" ] }, - { symbol: [ "QScriptClassPropertyIterator", "private", "", "public" ] }, - { symbol: [ "QScriptContext", "private", "", "public" ] }, - { symbol: [ "QScriptContextInfo", "private", "", "public" ] }, - { symbol: [ "QScriptContextInfoList", "private", "", "public" ] }, - { symbol: [ "QScriptEngine", "private", "", "public" ] }, - { symbol: [ "QScriptEngineAgent", "private", "", "public" ] }, - { symbol: [ "QScriptEngineDebugger", "private", "", "public" ] }, - { symbol: [ "QScriptExtensionInterface", "private", "", "public" ] }, - { symbol: [ "QScriptExtensionPlugin", "private", "", "public" ] }, - { symbol: [ "QScriptProgram", "private", "", "public" ] }, - { symbol: [ "QScriptString", "private", "", "public" ] }, - { symbol: [ "QScriptSyntaxCheckResult", "private", "", "public" ] }, - { symbol: [ "QScriptValue", "private", "", "public" ] }, - { symbol: [ "QScriptValueIterator", "private", "", "public" ] }, - { symbol: [ "QScriptValueList", "private", "", "public" ] }, - { symbol: [ "QScriptable", "private", "", "public" ] }, - { symbol: [ "QScrollArea", "private", "", "public" ] }, - { symbol: [ "QScrollBar", "private", "", "public" ] }, - { symbol: [ "QScrollEvent", "private", "", "public" ] }, - { symbol: [ "QScrollPrepareEvent", "private", "", "public" ] }, - { symbol: [ "QScroller", "private", "", "public" ] }, - { symbol: [ "QScrollerProperties", "private", "", "public" ] }, - { symbol: [ "QSemaphore", "private", "", "public" ] }, - { symbol: [ "QSensor", "private", "", "public" ] }, - { symbol: [ "QSensorBackend", "private", "", "public" ] }, - { symbol: [ "QSensorBackendFactory", "private", "", "public" ] }, - { symbol: [ "QSensorChangesInterface", "private", "", "public" ] }, - { symbol: [ "QSensorFilter", "private", "", "public" ] }, - { symbol: [ "QSensorGesture", "private", "", "public" ] }, - { symbol: [ "QSensorGestureManager", "private", "", "public" ] }, - { symbol: [ "QSensorGesturePluginInterface", "private", "", "public" ] }, - { symbol: [ "QSensorGestureRecognizer", "private", "", "public" ] }, - { symbol: [ "QSensorManager", "private", "", "public" ] }, - { symbol: [ "QSensorPluginInterface", "private", "", "public" ] }, - { symbol: [ "QSensorReading", "private", "", "public" ] }, - { symbol: [ "QSequentialAnimationGroup", "private", "", "public" ] }, - { symbol: [ "QSequentialIterable", "private", "", "public" ] }, - { symbol: [ "QSerialPort", "private", "", "public" ] }, - { symbol: [ "QSerialPortInfo", "private", "", "public" ] }, - { symbol: [ "QSessionManager", "private", "", "public" ] }, - { symbol: [ "QSet", "private", "", "public" ] }, - { symbol: [ "QSetIterator", "private", "", "public" ] }, - { symbol: [ "QSettings", "private", "", "public" ] }, - { symbol: [ "QSharedData", "private", "", "public" ] }, - { symbol: [ "QSharedDataPointer", "private", "", "public" ] }, - { symbol: [ "QSharedMemory", "private", "", "public" ] }, - { symbol: [ "QSharedPointer", "private", "", "public" ] }, - { symbol: [ "QShortcut", "private", "", "public" ] }, - { symbol: [ "QShortcutEvent", "private", "", "public" ] }, - { symbol: [ "QShowEvent", "private", "", "public" ] }, - { symbol: [ "QSignalBlocker", "private", "", "public" ] }, - { symbol: [ "QSignalMapper", "private", "", "public" ] }, - { symbol: [ "QSignalSpy", "private", "", "public" ] }, - { symbol: [ "QSignalTransition", "private", "", "public" ] }, - { symbol: [ "QSimpleXmlNodeModel", "private", "", "public" ] }, - { symbol: [ "QSize", "private", "", "public" ] }, - { symbol: [ "QSizeF", "private", "", "public" ] }, - { symbol: [ "QSizeGrip", "private", "", "public" ] }, - { symbol: [ "QSizePolicy", "private", "", "public" ] }, - { symbol: [ "QSlider", "private", "", "public" ] }, - { symbol: [ "QSocketNotifier", "private", "", "public" ] }, - { symbol: [ "QSortFilterProxyModel", "private", "", "public" ] }, - { symbol: [ "QSound", "private", "", "public" ] }, - { symbol: [ "QSoundEffect", "private", "", "public" ] }, - { symbol: [ "QSourceLocation", "private", "", "public" ] }, - { symbol: [ "QSpacerItem", "private", "", "public" ] }, - { symbol: [ "QSpinBox", "private", "", "public" ] }, - { symbol: [ "QSplashScreen", "private", "", "public" ] }, - { symbol: [ "QSplitter", "private", "", "public" ] }, - { symbol: [ "QSplitterHandle", "private", "", "public" ] }, - { symbol: [ "QSpontaneKeyEvent", "private", "", "public" ] }, - { symbol: [ "QSql", "private", "", "public" ] }, - { symbol: [ "QSqlDatabase", "private", "", "public" ] }, - { symbol: [ "QSqlDriver", "private", "", "public" ] }, - { symbol: [ "QSqlDriverCreator", "private", "", "public" ] }, - { symbol: [ "QSqlDriverCreatorBase", "private", "", "public" ] }, - { symbol: [ "QSqlDriverPlugin", "private", "", "public" ] }, - { symbol: [ "QSqlError", "private", "", "public" ] }, - { symbol: [ "QSqlField", "private", "", "public" ] }, - { symbol: [ "QSqlIndex", "private", "", "public" ] }, - { symbol: [ "QSqlQuery", "private", "", "public" ] }, - { symbol: [ "QSqlQueryModel", "private", "", "public" ] }, - { symbol: [ "QSqlRecord", "private", "", "public" ] }, - { symbol: [ "QSqlRelation", "private", "", "public" ] }, - { symbol: [ "QSqlRelationalDelegate", "private", "", "public" ] }, - { symbol: [ "QSqlRelationalTableModel", "private", "", "public" ] }, - { symbol: [ "QSqlResult", "private", "", "public" ] }, - { symbol: [ "QSqlTableModel", "private", "", "public" ] }, - { symbol: [ "QSsl", "private", "", "public" ] }, - { symbol: [ "QSslCertificate", "private", "", "public" ] }, - { symbol: [ "QSslCertificateExtension", "private", "", "public" ] }, - { symbol: [ "QSslCipher", "private", "", "public" ] }, - { symbol: [ "QSslConfiguration", "private", "", "public" ] }, - { symbol: [ "QSslError", "private", "", "public" ] }, - { symbol: [ "QSslKey", "private", "", "public" ] }, - { symbol: [ "QSslSocket", "private", "", "public" ] }, - { symbol: [ "QStack", "private", "", "public" ] }, - { symbol: [ "QStackedLayout", "private", "", "public" ] }, - { symbol: [ "QStackedWidget", "private", "", "public" ] }, - { symbol: [ "QStandardItem", "private", "", "public" ] }, - { symbol: [ "QStandardItemEditorCreator", "private", "", "public" ] }, - { symbol: [ "QStandardItemModel", "private", "", "public" ] }, - { symbol: [ "QStandardPaths", "private", "", "public" ] }, - { symbol: [ "QState", "private", "", "public" ] }, - { symbol: [ "QStateMachine", "private", "", "public" ] }, - { symbol: [ "QStaticArrayData", "private", "", "public" ] }, - { symbol: [ "QStaticAssertFailure", "private", "", "public" ] }, - { symbol: [ "QStaticByteArrayData", "private", "", "public" ] }, - { symbol: [ "QStaticPlugin", "private", "", "public" ] }, - { symbol: [ "QStaticStringData", "private", "", "public" ] }, - { symbol: [ "QStaticText", "private", "", "public" ] }, - { symbol: [ "QStatusBar", "private", "", "public" ] }, - { symbol: [ "QStatusTipEvent", "private", "", "public" ] }, - { symbol: [ "QStorageInfo", "private", "", "public" ] }, - { symbol: [ "QString", "private", "", "public" ] }, - { symbol: [ "QStringBuilder", "private", "", "public" ] }, - { symbol: [ "QStringData", "private", "", "public" ] }, - { symbol: [ "QStringDataPtr", "private", "", "public" ] }, - { symbol: [ "QStringList", "private", "", "public" ] }, - { symbol: [ "QStringListIterator", "private", "", "public" ] }, - { symbol: [ "QStringListModel", "private", "", "public" ] }, - { symbol: [ "QStringMatcher", "private", "", "public" ] }, - { symbol: [ "QStringRef", "private", "", "public" ] }, - { symbol: [ "QStyle", "private", "", "public" ] }, - { symbol: [ "QStyleFactory", "private", "", "public" ] }, - { symbol: [ "QStyleHintReturn", "private", "", "public" ] }, - { symbol: [ "QStyleHintReturnMask", "private", "", "public" ] }, - { symbol: [ "QStyleHintReturnVariant", "private", "", "public" ] }, - { symbol: [ "QStyleHints", "private", "", "public" ] }, - { symbol: [ "QStyleOption", "private", "", "public" ] }, - { symbol: [ "QStyleOptionButton", "private", "", "public" ] }, - { symbol: [ "QStyleOptionComboBox", "private", "", "public" ] }, - { symbol: [ "QStyleOptionComplex", "private", "", "public" ] }, - { symbol: [ "QStyleOptionDockWidget", "private", "", "public" ] }, - { symbol: [ "QStyleOptionDockWidgetV2", "private", "", "public" ] }, - { symbol: [ "QStyleOptionFocusRect", "private", "", "public" ] }, - { symbol: [ "QStyleOptionFrame", "private", "", "public" ] }, - { symbol: [ "QStyleOptionFrameV2", "private", "", "public" ] }, - { symbol: [ "QStyleOptionFrameV3", "private", "", "public" ] }, - { symbol: [ "QStyleOptionGraphicsItem", "private", "", "public" ] }, - { symbol: [ "QStyleOptionGroupBox", "private", "", "public" ] }, - { symbol: [ "QStyleOptionHeader", "private", "", "public" ] }, - { symbol: [ "QStyleOptionMenuItem", "private", "", "public" ] }, - { symbol: [ "QStyleOptionProgressBar", "private", "", "public" ] }, - { symbol: [ "QStyleOptionProgressBarV2", "private", "", "public" ] }, - { symbol: [ "QStyleOptionRubberBand", "private", "", "public" ] }, - { symbol: [ "QStyleOptionSizeGrip", "private", "", "public" ] }, - { symbol: [ "QStyleOptionSlider", "private", "", "public" ] }, - { symbol: [ "QStyleOptionSpinBox", "private", "", "public" ] }, - { symbol: [ "QStyleOptionTab", "private", "", "public" ] }, - { symbol: [ "QStyleOptionTabBarBase", "private", "", "public" ] }, - { symbol: [ "QStyleOptionTabBarBaseV2", "private", "", "public" ] }, - { symbol: [ "QStyleOptionTabV2", "private", "", "public" ] }, - { symbol: [ "QStyleOptionTabV3", "private", "", "public" ] }, - { symbol: [ "QStyleOptionTabWidgetFrame", "private", "", "public" ] }, - { symbol: [ "QStyleOptionTabWidgetFrameV2", "private", "", "public" ] }, - { symbol: [ "QStyleOptionTitleBar", "private", "", "public" ] }, - { symbol: [ "QStyleOptionToolBar", "private", "", "public" ] }, - { symbol: [ "QStyleOptionToolBox", "private", "", "public" ] }, - { symbol: [ "QStyleOptionToolBoxV2", "private", "", "public" ] }, - { symbol: [ "QStyleOptionToolButton", "private", "", "public" ] }, - { symbol: [ "QStyleOptionViewItem", "private", "", "public" ] }, - { symbol: [ "QStyleOptionViewItemV2", "private", "", "public" ] }, - { symbol: [ "QStyleOptionViewItemV3", "private", "", "public" ] }, - { symbol: [ "QStyleOptionViewItemV4", "private", "", "public" ] }, - { symbol: [ "QStylePainter", "private", "", "public" ] }, - { symbol: [ "QStylePlugin", "private", "", "public" ] }, - { symbol: [ "QStyledItemDelegate", "private", "", "public" ] }, - { symbol: [ "QSurface", "private", "", "public" ] }, - { symbol: [ "QSurfaceFormat", "private", "", "public" ] }, - { symbol: [ "QSvgGenerator", "private", "", "public" ] }, - { symbol: [ "QSvgRenderer", "private", "", "public" ] }, - { symbol: [ "QSvgWidget", "private", "", "public" ] }, - { symbol: [ "QSwipeGesture", "private", "", "public" ] }, - { symbol: [ "QSyntaxHighlighter", "private", "", "public" ] }, - { symbol: [ "QSysInfo", "private", "", "public" ] }, - { symbol: [ "QSystemSemaphore", "private", "", "public" ] }, - { symbol: [ "QSystemTrayIcon", "private", "", "public" ] }, - { symbol: [ "QTabBar", "private", "", "public" ] }, - { symbol: [ "QTabWidget", "private", "", "public" ] }, - { symbol: [ "QTableView", "private", "", "public" ] }, - { symbol: [ "QTableWidget", "private", "", "public" ] }, - { symbol: [ "QTableWidgetItem", "private", "", "public" ] }, - { symbol: [ "QTableWidgetSelectionRange", "private", "", "public" ] }, - { symbol: [ "QTabletEvent", "private", "", "public" ] }, - { symbol: [ "QTapAndHoldGesture", "private", "", "public" ] }, - { symbol: [ "QTapFilter", "private", "", "public" ] }, - { symbol: [ "QTapGesture", "private", "", "public" ] }, - { symbol: [ "QTapReading", "private", "", "public" ] }, - { symbol: [ "QTapSensor", "private", "", "public" ] }, - { symbol: [ "QTcpServer", "private", "", "public" ] }, - { symbol: [ "QTcpSocket", "private", "", "public" ] }, - { symbol: [ "QTemporaryDir", "private", "", "public" ] }, - { symbol: [ "QTemporaryFile", "private", "", "public" ] }, - { symbol: [ "QTest", "private", "", "public" ] }, - { symbol: [ "QTestAccessibility", "private", "", "public" ] }, - { symbol: [ "QTestData", "private", "", "public" ] }, - { symbol: [ "QTestDelayEvent", "private", "", "public" ] }, - { symbol: [ "QTestEvent", "private", "", "public" ] }, - { symbol: [ "QTestEventList", "private", "", "public" ] }, - { symbol: [ "QTestEventLoop", "private", "", "public" ] }, - { symbol: [ "QTestKeyClicksEvent", "private", "", "public" ] }, - { symbol: [ "QTestKeyEvent", "private", "", "public" ] }, - { symbol: [ "QTestMouseEvent", "private", "", "public" ] }, - { symbol: [ "QTextBlock", "private", "", "public" ] }, - { symbol: [ "QTextBlockFormat", "private", "", "public" ] }, - { symbol: [ "QTextBlockGroup", "private", "", "public" ] }, - { symbol: [ "QTextBlockUserData", "private", "", "public" ] }, - { symbol: [ "QTextBoundaryFinder", "private", "", "public" ] }, - { symbol: [ "QTextBrowser", "private", "", "public" ] }, - { symbol: [ "QTextCharFormat", "private", "", "public" ] }, - { symbol: [ "QTextCodec", "private", "", "public" ] }, - { symbol: [ "QTextCursor", "private", "", "public" ] }, - { symbol: [ "QTextDecoder", "private", "", "public" ] }, - { symbol: [ "QTextDocument", "private", "", "public" ] }, - { symbol: [ "QTextDocumentFragment", "private", "", "public" ] }, - { symbol: [ "QTextDocumentWriter", "private", "", "public" ] }, - { symbol: [ "QTextEdit", "private", "", "public" ] }, - { symbol: [ "QTextEncoder", "private", "", "public" ] }, - { symbol: [ "QTextFormat", "private", "", "public" ] }, - { symbol: [ "QTextFragment", "private", "", "public" ] }, - { symbol: [ "QTextFrame", "private", "", "public" ] }, - { symbol: [ "QTextFrameFormat", "private", "", "public" ] }, - { symbol: [ "QTextFrameLayoutData", "private", "", "public" ] }, - { symbol: [ "QTextImageFormat", "private", "", "public" ] }, - { symbol: [ "QTextInlineObject", "private", "", "public" ] }, - { symbol: [ "QTextItem", "private", "", "public" ] }, - { symbol: [ "QTextLayout", "private", "", "public" ] }, - { symbol: [ "QTextLength", "private", "", "public" ] }, - { symbol: [ "QTextLine", "private", "", "public" ] }, - { symbol: [ "QTextList", "private", "", "public" ] }, - { symbol: [ "QTextListFormat", "private", "", "public" ] }, - { symbol: [ "QTextObject", "private", "", "public" ] }, - { symbol: [ "QTextObjectInterface", "private", "", "public" ] }, - { symbol: [ "QTextOption", "private", "", "public" ] }, - { symbol: [ "QTextStream", "private", "", "public" ] }, - { symbol: [ "QTextStreamFunction", "private", "", "public" ] }, - { symbol: [ "QTextStreamManipulator", "private", "", "public" ] }, - { symbol: [ "QTextTable", "private", "", "public" ] }, - { symbol: [ "QTextTableCell", "private", "", "public" ] }, - { symbol: [ "QTextTableCellFormat", "private", "", "public" ] }, - { symbol: [ "QTextTableFormat", "private", "", "public" ] }, - { symbol: [ "QThread", "private", "", "public" ] }, - { symbol: [ "QThreadPool", "private", "", "public" ] }, - { symbol: [ "QThreadStorage", "private", "", "public" ] }, - { symbol: [ "QThreadStorageData", "private", "", "public" ] }, - { symbol: [ "QTileRules", "private", "", "public" ] }, - { symbol: [ "QTiltFilter", "private", "", "public" ] }, - { symbol: [ "QTiltReading", "private", "", "public" ] }, - { symbol: [ "QTiltSensor", "private", "", "public" ] }, - { symbol: [ "QTime", "private", "", "public" ] }, - { symbol: [ "QTimeEdit", "private", "", "public" ] }, - { symbol: [ "QTimeLine", "private", "", "public" ] }, - { symbol: [ "QTimeZone", "private", "", "public" ] }, - { symbol: [ "QTimer", "private", "", "public" ] }, - { symbol: [ "QTimerEvent", "private", "", "public" ] }, - { symbol: [ "QToolBar", "private", "", "public" ] }, - { symbol: [ "QToolBarChangeEvent", "private", "", "public" ] }, - { symbol: [ "QToolBox", "private", "", "public" ] }, - { symbol: [ "QToolButton", "private", "", "public" ] }, - { symbol: [ "QToolTip", "private", "", "public" ] }, - { symbol: [ "QTouchDevice", "private", "", "public" ] }, - { symbol: [ "QTouchEvent", "private", "", "public" ] }, - { symbol: [ "QTransform", "private", "", "public" ] }, - { symbol: [ "QTranslator", "private", "", "public" ] }, - { symbol: [ "QTreeView", "private", "", "public" ] }, - { symbol: [ "QTreeWidget", "private", "", "public" ] }, - { symbol: [ "QTreeWidgetItem", "private", "", "public" ] }, - { symbol: [ "QTreeWidgetItemIterator", "private", "", "public" ] }, - { symbol: [ "QTypeInfo", "private", "", "public" ] }, - { symbol: [ "QTypeInfoMerger", "private", "", "public" ] }, - { symbol: [ "QUdpSocket", "private", "", "public" ] }, - { symbol: [ "QUiLoader", "private", "", "public" ] }, - { symbol: [ "QUndoCommand", "private", "", "public" ] }, - { symbol: [ "QUndoGroup", "private", "", "public" ] }, - { symbol: [ "QUndoStack", "private", "", "public" ] }, - { symbol: [ "QUndoView", "private", "", "public" ] }, - { symbol: [ "QUnhandledException", "private", "", "public" ] }, - { symbol: [ "QUrl", "private", "", "public" ] }, - { symbol: [ "QUrlQuery", "private", "", "public" ] }, - { symbol: [ "QUrlTwoFlags", "private", "", "public" ] }, - { symbol: [ "QUuid", "private", "", "public" ] }, - { symbol: [ "QVBoxLayout", "private", "", "public" ] }, - { symbol: [ "QValidator", "private", "", "public" ] }, - { symbol: [ "QVarLengthArray", "private", "", "public" ] }, - { symbol: [ "QVariant", "private", "", "public" ] }, - { symbol: [ "QVariantAnimation", "private", "", "public" ] }, - { symbol: [ "QVariantComparisonHelper", "private", "", "public" ] }, - { symbol: [ "QVariantHash", "private", "", "public" ] }, - { symbol: [ "QVariantList", "private", "", "public" ] }, - { symbol: [ "QVariantMap", "private", "", "public" ] }, - { symbol: [ "QVector", "private", "", "public" ] }, - { symbol: [ "QVector2D", "private", "", "public" ] }, - { symbol: [ "QVector3D", "private", "", "public" ] }, - { symbol: [ "QVector4D", "private", "", "public" ] }, - { symbol: [ "QVectorIterator", "private", "", "public" ] }, - { symbol: [ "QVideoDeviceSelectorControl", "private", "", "public" ] }, - { symbol: [ "QVideoEncoderSettings", "private", "", "public" ] }, - { symbol: [ "QVideoEncoderSettingsControl", "private", "", "public" ] }, - { symbol: [ "QVideoFrame", "private", "", "public" ] }, - { symbol: [ "QVideoProbe", "private", "", "public" ] }, - { symbol: [ "QVideoRendererControl", "private", "", "public" ] }, - { symbol: [ "QVideoSurfaceFormat", "private", "", "public" ] }, - { symbol: [ "QVideoWidget", "private", "", "public" ] }, - { symbol: [ "QVideoWidgetControl", "private", "", "public" ] }, - { symbol: [ "QVideoWindowControl", "private", "", "public" ] }, - { symbol: [ "QWGLNativeContext", "private", "", "public" ] }, - { symbol: [ "QWaitCondition", "private", "", "public" ] }, - { symbol: [ "QWeakPointer", "private", "", "public" ] }, - { symbol: [ "QWebChannel", "private", "", "public" ] }, - { symbol: [ "QWebChannelAbstractTransport", "private", "", "public" ] }, - { symbol: [ "QWebDatabase", "private", "", "public" ] }, - { symbol: [ "QWebElement", "private", "", "public" ] }, - { symbol: [ "QWebElementCollection", "private", "", "public" ] }, - { symbol: [ "QWebFrame", "private", "", "public" ] }, - { symbol: [ "QWebFullScreenVideoHandler", "private", "", "public" ] }, - { symbol: [ "QWebHapticFeedbackPlayer", "private", "", "public" ] }, - { symbol: [ "QWebHistory", "private", "", "public" ] }, - { symbol: [ "QWebHistoryInterface", "private", "", "public" ] }, - { symbol: [ "QWebHistoryItem", "private", "", "public" ] }, - { symbol: [ "QWebHitTestResult", "private", "", "public" ] }, - { symbol: [ "QWebInspector", "private", "", "public" ] }, - { symbol: [ "QWebKitPlatformPlugin", "private", "", "public" ] }, - { symbol: [ "QWebNotificationData", "private", "", "public" ] }, - { symbol: [ "QWebNotificationPresenter", "private", "", "public" ] }, - { symbol: [ "QWebPage", "private", "", "public" ] }, - { symbol: [ "QWebPluginFactory", "private", "", "public" ] }, - { symbol: [ "QWebSecurityOrigin", "private", "", "public" ] }, - { symbol: [ "QWebSelectData", "private", "", "public" ] }, - { symbol: [ "QWebSelectMethod", "private", "", "public" ] }, - { symbol: [ "QWebSettings", "private", "", "public" ] }, - { symbol: [ "QWebSocket", "private", "", "public" ] }, - { symbol: [ "QWebSocketCorsAuthenticator", "private", "", "public" ] }, - { symbol: [ "QWebSocketServer", "private", "", "public" ] }, - { symbol: [ "QWebSpellChecker", "private", "", "public" ] }, - { symbol: [ "QWebTouchModifier", "private", "", "public" ] }, - { symbol: [ "QWebView", "private", "", "public" ] }, - { symbol: [ "QWhatsThis", "private", "", "public" ] }, - { symbol: [ "QWhatsThisClickedEvent", "private", "", "public" ] }, - { symbol: [ "QWheelEvent", "private", "", "public" ] }, - { symbol: [ "QWidget", "private", "", "public" ] }, - { symbol: [ "QWidgetAction", "private", "", "public" ] }, - { symbol: [ "QWidgetData", "private", "", "public" ] }, - { symbol: [ "QWidgetItem", "private", "", "public" ] }, - { symbol: [ "QWidgetItemV2", "private", "", "public" ] }, - { symbol: [ "QWidgetList", "private", "", "public" ] }, - { symbol: [ "QWidgetMapper", "private", "", "public" ] }, - { symbol: [ "QWidgetSet", "private", "", "public" ] }, - { symbol: [ "QWinColorizationChangeEvent", "private", "", "public" ] }, - { symbol: [ "QWinCompositionChangeEvent", "private", "", "public" ] }, - { symbol: [ "QWinEvent", "private", "", "public" ] }, - { symbol: [ "QWinEventNotifier", "private", "", "public" ] }, - { symbol: [ "QWinEventNotifier", "private", "", "public" ] }, - { symbol: [ "QWinJumpList", "private", "", "public" ] }, - { symbol: [ "QWinJumpListCategory", "private", "", "public" ] }, - { symbol: [ "QWinJumpListItem", "private", "", "public" ] }, - { symbol: [ "QWinMime", "private", "", "public" ] }, - { symbol: [ "QWinTaskbarButton", "private", "", "public" ] }, - { symbol: [ "QWinTaskbarProgress", "private", "", "public" ] }, - { symbol: [ "QWinThumbnailToolBar", "private", "", "public" ] }, - { symbol: [ "QWinThumbnailToolButton", "private", "", "public" ] }, - { symbol: [ "QWindow", "private", "", "public" ] }, - { symbol: [ "QWindowList", "private", "", "public" ] }, - { symbol: [ "QWindowStateChangeEvent", "private", "", "public" ] }, - { symbol: [ "QWizard", "private", "", "public" ] }, - { symbol: [ "QWizardPage", "private", "", "public" ] }, - { symbol: [ "QWriteLocker", "private", "", "public" ] }, - { symbol: [ "QXcbWindowFunctions", "private", "", "public" ] }, - { symbol: [ "QXmlAttributes", "private", "", "public" ] }, - { symbol: [ "QXmlContentHandler", "private", "", "public" ] }, - { symbol: [ "QXmlDTDHandler", "private", "", "public" ] }, - { symbol: [ "QXmlDeclHandler", "private", "", "public" ] }, - { symbol: [ "QXmlDefaultHandler", "private", "", "public" ] }, - { symbol: [ "QXmlEntityResolver", "private", "", "public" ] }, - { symbol: [ "QXmlErrorHandler", "private", "", "public" ] }, - { symbol: [ "QXmlFormatter", "private", "", "public" ] }, - { symbol: [ "QXmlInputSource", "private", "", "public" ] }, - { symbol: [ "QXmlItem", "private", "", "public" ] }, - { symbol: [ "QXmlLexicalHandler", "private", "", "public" ] }, - { symbol: [ "QXmlLocator", "private", "", "public" ] }, - { symbol: [ "QXmlName", "private", "", "public" ] }, - { symbol: [ "QXmlNamePool", "private", "", "public" ] }, - { symbol: [ "QXmlNamespaceSupport", "private", "", "public" ] }, - { symbol: [ "QXmlNodeModelIndex", "private", "", "public" ] }, - { symbol: [ "QXmlParseException", "private", "", "public" ] }, - { symbol: [ "QXmlQuery", "private", "", "public" ] }, - { symbol: [ "QXmlReader", "private", "", "public" ] }, - { symbol: [ "QXmlResultItems", "private", "", "public" ] }, - { symbol: [ "QXmlSchema", "private", "", "public" ] }, - { symbol: [ "QXmlSchemaValidator", "private", "", "public" ] }, - { symbol: [ "QXmlSerializer", "private", "", "public" ] }, - { symbol: [ "QXmlSimpleReader", "private", "", "public" ] }, - { symbol: [ "QXmlStreamAttribute", "private", "", "public" ] }, - { symbol: [ "QXmlStreamAttributes", "private", "", "public" ] }, - { symbol: [ "QXmlStreamEntityDeclaration", "private", "", "public" ] }, - { symbol: [ "QXmlStreamEntityDeclarations", "private", "", "public" ] }, - { symbol: [ "QXmlStreamEntityResolver", "private", "", "public" ] }, - { symbol: [ "QXmlStreamNamespaceDeclaration", "private", "", "public" ] }, - { symbol: [ "QXmlStreamNamespaceDeclarations", "private", "", "public" ] }, - { symbol: [ "QXmlStreamNotationDeclaration", "private", "", "public" ] }, - { symbol: [ "QXmlStreamNotationDeclarations", "private", "", "public" ] }, - { symbol: [ "QXmlStreamReader", "private", "", "public" ] }, - { symbol: [ "QXmlStreamStringRef", "private", "", "public" ] }, - { symbol: [ "QXmlStreamWriter", "private", "", "public" ] }, - { symbol: [ "Q_IPV6ADDR", "private", "", "public" ] }, - { symbol: [ "Q_PID", "private", "", "public" ] }, - { symbol: [ "Qt", "private", "", "public" ] }, - { symbol: [ "QtAlgorithms", "private", "", "public" ] }, - { symbol: [ "QtBluetooth", "private", "", "public" ] }, - { symbol: [ "QtBluetoothDepends", "private", "", "public" ] }, - { symbol: [ "QtBluetoothVersion", "private", "", "public" ] }, - { symbol: [ "QtCLucene", "private", "", "public" ] }, - { symbol: [ "QtCLuceneDepends", "private", "", "public" ] }, - { symbol: [ "QtCLuceneVersion", "private", "", "public" ] }, - { symbol: [ "QtCleanUpFunction", "private", "", "public" ] }, - { symbol: [ "QtConcurrent", "private", "", "public" ] }, - { symbol: [ "QtConcurrentDepends", "private", "", "public" ] }, - { symbol: [ "QtConcurrentFilter", "private", "", "public" ] }, - { symbol: [ "QtConcurrentMap", "private", "", "public" ] }, - { symbol: [ "QtConcurrentRun", "private", "", "public" ] }, - { symbol: [ "QtConcurrentVersion", "private", "", "public" ] }, - { symbol: [ "QtConfig", "private", "", "public" ] }, - { symbol: [ "QtContainerFwd", "private", "", "public" ] }, - { symbol: [ "QtCore", "private", "", "public" ] }, - { symbol: [ "QtCoreDepends", "private", "", "public" ] }, - { symbol: [ "QtCoreVersion", "private", "", "public" ] }, - { symbol: [ "QtDBus", "private", "", "public" ] }, - { symbol: [ "QtDBusDepends", "private", "", "public" ] }, - { symbol: [ "QtDBusVersion", "private", "", "public" ] }, - { symbol: [ "QtDebug", "private", "", "public" ] }, - { symbol: [ "QtDeclarative", "private", "", "public" ] }, - { symbol: [ "QtDeclarativeDepends", "private", "", "public" ] }, - { symbol: [ "QtDeclarativeVersion", "private", "", "public" ] }, - { symbol: [ "QtDesigner", "private", "", "public" ] }, - { symbol: [ "QtDesignerComponents", "private", "", "public" ] }, - { symbol: [ "QtDesignerComponentsDepends", "private", "", "public" ] }, - { symbol: [ "QtDesignerComponentsVersion", "private", "", "public" ] }, - { symbol: [ "QtDesignerDepends", "private", "", "public" ] }, - { symbol: [ "QtDesignerVersion", "private", "", "public" ] }, - { symbol: [ "QtEndian", "private", "", "public" ] }, - { symbol: [ "QtEvents", "private", "", "public" ] }, - { symbol: [ "QtGlobal", "private", "", "public" ] }, - { symbol: [ "QtGui", "private", "", "public" ] }, - { symbol: [ "QtGuiDepends", "private", "", "public" ] }, - { symbol: [ "QtGuiVersion", "private", "", "public" ] }, - { symbol: [ "QtHelp", "private", "", "public" ] }, - { symbol: [ "QtHelpDepends", "private", "", "public" ] }, - { symbol: [ "QtHelpVersion", "private", "", "public" ] }, - { symbol: [ "QtLocation", "private", "", "public" ] }, - { symbol: [ "QtLocationDepends", "private", "", "public" ] }, - { symbol: [ "QtLocationVersion", "private", "", "public" ] }, - { symbol: [ "QtMath", "private", "", "public" ] }, - { symbol: [ "QtMessageHandler", "private", "", "public" ] }, - { symbol: [ "QtMsgHandler", "private", "", "public" ] }, - { symbol: [ "QtMultimedia", "private", "", "public" ] }, - { symbol: [ "QtMultimediaDepends", "private", "", "public" ] }, - { symbol: [ "QtMultimediaQuick_p", "private", "", "public" ] }, - { symbol: [ "QtMultimediaQuick_pDepends", "private", "", "public" ] }, - { symbol: [ "QtMultimediaQuick_pVersion", "private", "", "public" ] }, - { symbol: [ "QtMultimediaVersion", "private", "", "public" ] }, - { symbol: [ "QtMultimediaWidgets", "private", "", "public" ] }, - { symbol: [ "QtMultimediaWidgetsDepends", "private", "", "public" ] }, - { symbol: [ "QtMultimediaWidgetsVersion", "private", "", "public" ] }, - { symbol: [ "QtNetwork", "private", "", "public" ] }, - { symbol: [ "QtNetworkDepends", "private", "", "public" ] }, - { symbol: [ "QtNetworkVersion", "private", "", "public" ] }, - { symbol: [ "QtNfc", "private", "", "public" ] }, - { symbol: [ "QtNfcDepends", "private", "", "public" ] }, - { symbol: [ "QtNfcVersion", "private", "", "public" ] }, - { symbol: [ "QtNumeric", "private", "", "public" ] }, - { symbol: [ "QtOpenGL", "private", "", "public" ] }, - { symbol: [ "QtOpenGLDepends", "private", "", "public" ] }, - { symbol: [ "QtOpenGLExtensions", "private", "", "public" ] }, - { symbol: [ "QtOpenGLExtensionsDepends", "private", "", "public" ] }, - { symbol: [ "QtOpenGLExtensionsVersion", "private", "", "public" ] }, - { symbol: [ "QtOpenGLVersion", "private", "", "public" ] }, - { symbol: [ "QtPlatformHeaders", "private", "", "public" ] }, - { symbol: [ "QtPlatformHeadersDepends", "private", "", "public" ] }, - { symbol: [ "QtPlatformHeadersVersion", "private", "", "public" ] }, - { symbol: [ "QtPlatformSupport", "private", "", "public" ] }, - { symbol: [ "QtPlatformSupportDepends", "private", "", "public" ] }, - { symbol: [ "QtPlatformSupportVersion", "private", "", "public" ] }, - { symbol: [ "QtPlugin", "private", "", "public" ] }, - { symbol: [ "QtPluginInstanceFunction", "private", "", "public" ] }, - { symbol: [ "QtPluginMetaDataFunction", "private", "", "public" ] }, - { symbol: [ "QtPositioning", "private", "", "public" ] }, - { symbol: [ "QtPositioningDepends", "private", "", "public" ] }, - { symbol: [ "QtPositioningVersion", "private", "", "public" ] }, - { symbol: [ "QtPrintSupport", "private", "", "public" ] }, - { symbol: [ "QtPrintSupportDepends", "private", "", "public" ] }, - { symbol: [ "QtPrintSupportVersion", "private", "", "public" ] }, - { symbol: [ "QtQml", "private", "", "public" ] }, - { symbol: [ "QtQmlDepends", "private", "", "public" ] }, - { symbol: [ "QtQmlVersion", "private", "", "public" ] }, - { symbol: [ "QtQuick", "private", "", "public" ] }, - { symbol: [ "QtQuickDepends", "private", "", "public" ] }, - { symbol: [ "QtQuickParticles", "private", "", "public" ] }, - { symbol: [ "QtQuickParticlesDepends", "private", "", "public" ] }, - { symbol: [ "QtQuickParticlesVersion", "private", "", "public" ] }, - { symbol: [ "QtQuickTest", "private", "", "public" ] }, - { symbol: [ "QtQuickTestDepends", "private", "", "public" ] }, - { symbol: [ "QtQuickTestVersion", "private", "", "public" ] }, - { symbol: [ "QtQuickVersion", "private", "", "public" ] }, - { symbol: [ "QtQuickWidgets", "private", "", "public" ] }, - { symbol: [ "QtQuickWidgetsDepends", "private", "", "public" ] }, - { symbol: [ "QtQuickWidgetsVersion", "private", "", "public" ] }, - { symbol: [ "QtScript", "private", "", "public" ] }, - { symbol: [ "QtScriptDepends", "private", "", "public" ] }, - { symbol: [ "QtScriptTools", "private", "", "public" ] }, - { symbol: [ "QtScriptToolsDepends", "private", "", "public" ] }, - { symbol: [ "QtScriptToolsVersion", "private", "", "public" ] }, - { symbol: [ "QtScriptVersion", "private", "", "public" ] }, - { symbol: [ "QtSensors", "private", "", "public" ] }, - { symbol: [ "QtSensorsDepends", "private", "", "public" ] }, - { symbol: [ "QtSensorsVersion", "private", "", "public" ] }, - { symbol: [ "QtSerialPort", "private", "", "public" ] }, - { symbol: [ "QtSerialPortDepends", "private", "", "public" ] }, - { symbol: [ "QtSerialPortVersion", "private", "", "public" ] }, - { symbol: [ "QtSql", "private", "", "public" ] }, - { symbol: [ "QtSqlDepends", "private", "", "public" ] }, - { symbol: [ "QtSqlVersion", "private", "", "public" ] }, - { symbol: [ "QtSvg", "private", "", "public" ] }, - { symbol: [ "QtSvgDepends", "private", "", "public" ] }, - { symbol: [ "QtSvgVersion", "private", "", "public" ] }, - { symbol: [ "QtTest", "private", "", "public" ] }, - { symbol: [ "QtTestDepends", "private", "", "public" ] }, - { symbol: [ "QtTestGui", "private", "", "public" ] }, - { symbol: [ "QtTestVersion", "private", "", "public" ] }, - { symbol: [ "QtTestWidgets", "private", "", "public" ] }, - { symbol: [ "QtUiTools", "private", "", "public" ] }, - { symbol: [ "QtUiToolsDepends", "private", "", "public" ] }, - { symbol: [ "QtUiToolsVersion", "private", "", "public" ] }, - { symbol: [ "QtWebChannel", "private", "", "public" ] }, - { symbol: [ "QtWebChannelDepends", "private", "", "public" ] }, - { symbol: [ "QtWebChannelVersion", "private", "", "public" ] }, - { symbol: [ "QtWebKit", "private", "", "public" ] }, - { symbol: [ "QtWebKitDepends", "private", "", "public" ] }, - { symbol: [ "QtWebKitVersion", "private", "", "public" ] }, - { symbol: [ "QtWebKitWidgets", "private", "", "public" ] }, - { symbol: [ "QtWebKitWidgetsDepends", "private", "", "public" ] }, - { symbol: [ "QtWebKitWidgetsVersion", "private", "", "public" ] }, - { symbol: [ "QtWebSockets", "private", "", "public" ] }, - { symbol: [ "QtWebSocketsDepends", "private", "", "public" ] }, - { symbol: [ "QtWebSocketsVersion", "private", "", "public" ] }, - { symbol: [ "QtWidgets", "private", "", "public" ] }, - { symbol: [ "QtWidgetsDepends", "private", "", "public" ] }, - { symbol: [ "QtWidgetsVersion", "private", "", "public" ] }, - { symbol: [ "QtWin", "private", "", "public" ] }, - { symbol: [ "QtWinExtras", "private", "", "public" ] }, - { symbol: [ "QtWinExtrasDepends", "private", "", "public" ] }, - { symbol: [ "QtWinExtrasVersion", "private", "", "public" ] }, - { symbol: [ "QtXml", "private", "", "public" ] }, - { symbol: [ "QtXmlDepends", "private", "", "public" ] }, - { symbol: [ "QtXmlPatterns", "private", "", "public" ] }, - { symbol: [ "QtXmlPatternsDepends", "private", "", "public" ] }, - { symbol: [ "QtXmlPatternsVersion", "private", "", "public" ] }, - { symbol: [ "QtXmlVersion", "private", "", "public" ] }, - -## other things not picked up by the above - #{ symbol: [ "qobject_cast", "private", "", "public" ] }, - #{ symbol: [ "qApp", "private", "", "public" ] }, - #{ symbol: [ "qHash", "private", "", "public" ] }, - -# This is necessary because QList::toSet ends up in QSet which is wrong. See note -# at top as to why this shouldn't be necessary - - { symbol: [ "QList::toSet", "private", "", "public" ] }, - -# Even if IWYU recognised A::B as coming from a.h, we'd still need a lot of these for -# free operators - -# Generated with -# perl -le "use File::Find;use File::Basename; sub wanted { $x = lc $_. '.h'; print ' { include: [ -@\-('.basename($File::Find::dir).'/)?'.$x.'\--, -private-, -<'.$_.'>-, -public- ] },' if -e $x } find(\&wanted, '.')" -# on windows - - { include: [ "@\"(ActiveQt/)?activeqtversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(ActiveQt/)?qaxaggregated\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(ActiveQt/)?qaxbase\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(ActiveQt/)?qaxbindable\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(ActiveQt/)?qaxfactory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(ActiveQt/)?qaxobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(ActiveQt/)?qaxscript\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(ActiveQt/)?qaxselect\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(ActiveQt/)?qaxwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(Enginio/)?enginio\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(Enginio/)?enginioversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothaddress\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothdevicediscoveryagent\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothdeviceinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothhostinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothlocaldevice\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothserver\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothservicediscoveryagent\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothserviceinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothsocket\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothtransfermanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothtransferreply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothtransferrequest\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qbluetoothuuid\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qlowenergycharacteristic\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qlowenergycontroller\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qlowenergydescriptor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qlowenergyservice\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtBluetooth/)?qtbluetoothversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCLucene/)?qtcluceneversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtConcurrent/)?qtconcurrentfilter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtConcurrent/)?qtconcurrentmap\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtConcurrent/)?qtconcurrentrun\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtConcurrent/)?qtconcurrentversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qabstractanimation\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qabstracteventdispatcher\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qabstractitemmodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qabstractnativeeventfilter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qabstractproxymodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qabstractstate\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qabstracttransition\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qanimationgroup\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qarraydata\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qarraydatapointer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qbasictimer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qbitarray\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qbuffer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qbytearray\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qbytearraylist\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qbytearraymatcher\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qcache\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qchar\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qcollator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qcommandlineoption\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qcommandlineparser\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qcontiguouscache\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qcoreapplication\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qcryptographichash\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qdatastream\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qdatetime\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qdebug\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qdir\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qdiriterator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qeasingcurve\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qelapsedtimer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qeventloop\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qeventtransition\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qexception\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfactoryinterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfile\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfiledevice\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfileinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfileselector\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfilesystemwatcher\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfinalstate\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qflags\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfuture\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfutureinterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfuturesynchronizer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qfuturewatcher\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qglobalstatic\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qhash\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qhistorystate\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qidentityproxymodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qiodevice\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qitemselectionmodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qjsonarray\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qjsondocument\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qjsonobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qjsonvalue\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qlibrary\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qlibraryinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qline\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qlinkedlist\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qlist\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qlocale\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qlockfile\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qloggingcategory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qmap\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qmargins\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qmessageauthenticationcode\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qmetaobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qmetatype\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qmimedata\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qmimedatabase\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qmimetype\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qmutex\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qobjectcleanuphandler\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qpair\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qparallelanimationgroup\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qpauseanimation\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qpluginloader\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qpoint\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qpointer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qprocess\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qpropertyanimation\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qqueue\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qreadwritelock\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qrect\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qregexp\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qregularexpression\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qresource\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qrunnable\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsavefile\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qscopedpointer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qscopedvaluerollback\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsemaphore\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsequentialanimationgroup\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qset\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsettings\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qshareddata\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsharedmemory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsharedpointer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsignalmapper\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsignaltransition\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsize\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsocketnotifier\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsortfilterproxymodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstack\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstandardpaths\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstate\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstatemachine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstorageinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstring\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstringbuilder\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstringlist\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstringlistmodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstringmatcher\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsysinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qsystemsemaphore\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtcoreversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtemporarydir\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtemporaryfile\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtextboundaryfinder\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtextcodec\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtextstream\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qthread\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qthreadpool\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qthreadstorage\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtimeline\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtimer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtimezone\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtranslator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qtypeinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qurl\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qurlquery\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?quuid\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qvariant\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qvariantanimation\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qvarlengtharray\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qvector\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qwaitcondition\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qwineventnotifier\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusabstractadaptor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusabstractinterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusargument\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusconnection\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusconnectioninterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbuscontext\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbuserror\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusinterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusmessage\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusmetatype\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbuspendingcall\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbuspendingreply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusreply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusserver\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusservicewatcher\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusunixfiledescriptor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qdbusvirtualobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDBus/)?qtdbusversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativecomponent\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativecontext\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeerror\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeexpression\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeextensioninterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeextensionplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeimageprovider\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeitem\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativenetworkaccessmanagerfactory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeparserstatus\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeproperty\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativepropertymap\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativepropertyvalueinterceptor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativepropertyvaluesource\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativescriptstring\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qdeclarativeview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDeclarative/)?qtdeclarativeversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDesigner/)?qdesignerexportwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDesigner/)?qextensionmanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDesigner/)?qtdesignerversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtDesignerComponents/)?qtdesignercomponentsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qabstracttextdocumentlayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qaccessible\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qaccessiblebridge\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qaccessibleobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qaccessibleplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qbackingstore\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qbitmap\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qbrush\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qclipboard\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qcolor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qcursor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qdesktopservices\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qdrag\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qfont\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qfontdatabase\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qfontinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qfontmetrics\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qgenericmatrix\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qgenericplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qgenericpluginfactory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qglyphrun\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qguiapplication\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qicon\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qiconengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qiconengineplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qimage\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qimageiohandler\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qimagereader\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qimagewriter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qinputmethod\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qkeysequence\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qmatrix4x4\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qmatrix\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qmovie\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qoffscreensurface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglbuffer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglcontext\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglframebufferobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_1_0\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_1_1\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_1_2\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_1_3\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_1_4\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_1_5\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_2_0\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_2_1\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_3_0\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_3_1\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_3_2_compatibility\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_3_2_core\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_3_3_compatibility\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_3_3_core\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_4_0_compatibility\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_4_0_core\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_4_1_compatibility\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_4_1_core\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_4_2_compatibility\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_4_2_core\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_4_3_compatibility\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_4_3_core\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglfunctions_es2\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglpaintdevice\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglpixeltransferoptions\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglshaderprogram\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopengltexture\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopengltimerquery\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglversionfunctions\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglvertexarrayobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qopenglwindow\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpagedpaintdevice\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpagelayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpagesize\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpaintdevice\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpaintdevicewindow\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpaintengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpainter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpainterpath\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpalette\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpdfwriter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpen\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpicture\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpictureformatplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpixelformat\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpixmap\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpixmapcache\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qpolygon\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qquaternion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qrasterwindow\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qrawfont\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qregion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qrgb\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qscreen\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qsessionmanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qstandarditemmodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qstatictext\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qstylehints\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qsurface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qsurfaceformat\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qsyntaxhighlighter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtextcursor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtextdocument\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtextdocumentfragment\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtextdocumentwriter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtextformat\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtextlayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtextlist\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtextobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtextoption\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtexttable\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtguiversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtouchdevice\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qtransform\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qvalidator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qvector2d\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qvector3d\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qvector4d\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qwindow\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtHelp/)?qhelpcontentwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtHelp/)?qhelpengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtHelp/)?qhelpenginecore\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtHelp/)?qhelpindexwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtHelp/)?qhelpsearchengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtHelp/)?qhelpsearchquerywidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtHelp/)?qhelpsearchresultwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtHelp/)?qthelpversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeocodereply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeocodingmanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeocodingmanagerengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeomaneuver\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeoroute\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeoroutereply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeorouterequest\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeoroutesegment\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeoroutingmanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeoroutingmanagerengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeoserviceprovider\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qgeoserviceproviderfactory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qlocation\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplace\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplaceattribute\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacecategory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacecontactdetail\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacecontent\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacecontentreply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacecontentrequest\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacedetailsreply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplaceeditorial\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplaceicon\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplaceidreply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplaceimage\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacemanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacemanagerengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacematchreply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacematchrequest\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplaceproposedsearchresult\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplaceratings\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacereply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplaceresult\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacereview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacesearchreply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacesearchrequest\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacesearchresult\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacesearchsuggestionreply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplacesupplier\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qplaceuser\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtLocation/)?qtlocationversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qabstractvideobuffer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qabstractvideosurface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudio\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudiobuffer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudiodecoder\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudiodecodercontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudiodeviceinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudioencodersettingscontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudioformat\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudioinput\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudioinputselectorcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudiooutput\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudiooutputselectorcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudioprobe\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudiorecorder\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qaudiosystemplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcamera\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameracapturebufferformatcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameracapturedestinationcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameracontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameraexposure\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameraexposurecontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcamerafeedbackcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameraflashcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcamerafocus\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcamerafocuscontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameraimagecapture\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameraimagecapturecontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameraimageprocessing\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameraimageprocessingcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcamerainfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcamerainfocontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameralockscontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcameraviewfindersettingscontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qcamerazoomcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qimageencodercontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediaaudioprobecontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediaavailabilitycontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediabindableinterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediacontainercontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediacontent\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediacontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediagaplessplaybackcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediametadata\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmedianetworkaccesscontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediaobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediaplayer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediaplayercontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediaplaylist\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediarecorder\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediarecordercontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediaresource\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediaservice\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediaserviceproviderplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediastreamscontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediatimerange\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmediavideoprobecontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmetadatareadercontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmetadatawritercontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qmultimedia\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qradiodata\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qradiodatacontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qradiotuner\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qradiotunercontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qsound\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qsoundeffect\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qtmultimediaversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qvideodeviceselectorcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qvideoencodersettingscontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qvideoframe\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qvideoprobe\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qvideorenderercontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qvideosurfaceformat\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimedia/)?qvideowindowcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimediaQuick_p/)?qsgvideonode_i420\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimediaQuick_p/)?qsgvideonode_rgb\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimediaQuick_p/)?qsgvideonode_texture\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimediaQuick_p/)?qtmultimediaquick_pversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimediaWidgets/)?qcameraviewfinder\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimediaWidgets/)?qgraphicsvideoitem\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimediaWidgets/)?qtmultimediawidgetsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimediaWidgets/)?qvideowidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtMultimediaWidgets/)?qvideowidgetcontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qabstractnetworkcache\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qabstractsocket\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qauthenticator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qdnslookup\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qhostaddress\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qhostinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qhttpmultipart\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qlocalserver\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qlocalsocket\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qnetworkaccessmanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qnetworkconfiguration\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qnetworkcookie\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qnetworkcookiejar\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qnetworkdiskcache\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qnetworkinterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qnetworkproxy\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qnetworkreply\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qnetworkrequest\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qnetworksession\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qssl\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qsslcertificate\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qsslcertificateextension\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qsslcipher\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qsslconfiguration\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qsslerror\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qsslkey\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qsslsocket\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qtcpserver\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qtcpsocket\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qtnetworkversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNetwork/)?qudpsocket\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qndeffilter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qndefmessage\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qndefnfcsmartposterrecord\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qndefnfctextrecord\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qndefnfcurirecord\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qndefrecord\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qnearfieldmanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qnearfieldsharemanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qnearfieldsharetarget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qnearfieldtarget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qqmlndefrecord\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtNfc/)?qtnfcversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtOpenGL/)?qgl\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtOpenGL/)?qglbuffer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtOpenGL/)?qglcolormap\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtOpenGL/)?qglframebufferobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtOpenGL/)?qglfunctions\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtOpenGL/)?qglpixelbuffer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtOpenGL/)?qglshaderprogram\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtOpenGL/)?qtopenglversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtOpenGLExtensions/)?qopenglextensions\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtOpenGLExtensions/)?qtopenglextensionsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPlatformHeaders/)?qcocoanativecontext\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPlatformHeaders/)?qeglfsfunctions\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPlatformHeaders/)?qeglnativecontext\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPlatformHeaders/)?qglxnativecontext\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPlatformHeaders/)?qtplatformheadersversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPlatformHeaders/)?qwglnativecontext\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPlatformHeaders/)?qxcbwindowfunctions\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPlatformSupport/)?qtplatformsupportversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeoaddress\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeoareamonitorinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeoareamonitorsource\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeocircle\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeocoordinate\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeolocation\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeopositioninfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeopositioninfosource\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeopositioninfosourcefactory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeorectangle\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeosatelliteinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeosatelliteinfosource\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qgeoshape\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qnmeapositioninfosource\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPositioning/)?qtpositioningversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPrintSupport/)?qabstractprintdialog\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPrintSupport/)?qpagesetupdialog\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPrintSupport/)?qprintdialog\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPrintSupport/)?qprintengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPrintSupport/)?qprinter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPrintSupport/)?qprinterinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPrintSupport/)?qprintpreviewdialog\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPrintSupport/)?qprintpreviewwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtPrintSupport/)?qtprintsupportversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qjsengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qjsvalue\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qjsvalueiterator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlabstracturlinterceptor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlapplicationengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlcomponent\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlcontext\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlerror\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlexpression\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlextensioninterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlextensionplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlfile\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlfileselector\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlincubator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlnetworkaccessmanagerfactory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlparserstatus\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlproperty\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlpropertymap\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlpropertyvaluesource\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qqmlscriptstring\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQml/)?qtqmlversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qquickframebufferobject\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qquickimageprovider\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qquickitem\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qquickitemgrabresult\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qquickpainteditem\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qquickrendercontrol\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qquicktextdocument\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qquickview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qquickwindow\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgabstractrenderer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgflatcolormaterial\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsggeometry\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgmaterial\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgnode\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgsimplematerial\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgsimplerectnode\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgsimpletexturenode\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgtexture\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgtexturematerial\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgtextureprovider\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qsgvertexcolormaterial\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuick/)?qtquickversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuickParticles/)?qtquickparticlesversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuickTest/)?qtquicktestversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuickWidgets/)?qquickwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtQuickWidgets/)?qtquickwidgetsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptable\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptclass\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptclasspropertyiterator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptcontext\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptcontextinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptengine\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptengineagent\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptextensioninterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptextensionplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptprogram\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptstring\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptvalue\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qscriptvalueiterator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScript/)?qtscriptversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScriptTools/)?qscriptenginedebugger\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtScriptTools/)?qtscripttoolsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qaccelerometer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qaltimeter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qambientlightsensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qambienttemperaturesensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qcompass\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qdistancesensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qgyroscope\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qholstersensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qirproximitysensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qlightsensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qmagnetometer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qorientationsensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qpressuresensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qproximitysensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qrotationsensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qsensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qsensorbackend\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qsensorgesture\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qsensorgesturemanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qsensorgestureplugininterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qsensorgesturerecognizer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qsensormanager\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qtapsensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qtiltsensor\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSensors/)?qtsensorsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSerialPort/)?qlockfile\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSerialPort/)?qserialport\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSerialPort/)?qserialportinfo\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSerialPort/)?qtserialportversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSerialPort/)?qwineventnotifier\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsql\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqldatabase\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqldriver\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqldriverplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqlerror\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqlfield\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqlindex\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqlquery\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqlquerymodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqlrecord\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqlrelationaldelegate\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqlrelationaltablemodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqlresult\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qsqltablemodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSql/)?qtsqlversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSvg/)?qgraphicssvgitem\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSvg/)?qsvggenerator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSvg/)?qsvgrenderer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSvg/)?qsvgwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtSvg/)?qtsvgversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtTest/)?qsignalspy\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtTest/)?qtest\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtTest/)?qtestdata\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtTest/)?qtestevent\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtTest/)?qtesteventloop\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtTest/)?qttestversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtUiTools/)?qtuitoolsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtUiTools/)?quiloader\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebChannel/)?qqmlwebchannel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebChannel/)?qtwebchannelversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebChannel/)?qwebchannel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebChannel/)?qwebchannelabstracttransport\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKit/)?qtwebkitversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKit/)?qwebdatabase\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKit/)?qwebelement\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKit/)?qwebhistory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKit/)?qwebhistoryinterface\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKit/)?qwebkitplatformplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKit/)?qwebpluginfactory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKit/)?qwebsecurityorigin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKit/)?qwebsettings\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKitWidgets/)?qgraphicswebview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKitWidgets/)?qtwebkitwidgetsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKitWidgets/)?qwebframe\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKitWidgets/)?qwebinspector\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKitWidgets/)?qwebpage\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebKitWidgets/)?qwebview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebSockets/)?qmaskgenerator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebSockets/)?qtwebsocketsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebSockets/)?qwebsocket\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebSockets/)?qwebsocketcorsauthenticator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWebSockets/)?qwebsocketserver\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qabstractbutton\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qabstractitemdelegate\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qabstractitemview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qabstractscrollarea\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qabstractslider\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qabstractspinbox\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qaccessiblemenu\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qaccessiblewidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qaction\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qactiongroup\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qapplication\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qboxlayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qbuttongroup\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qcalendarwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qcheckbox\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qcolordialog\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qcolormap\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qcolumnview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qcombobox\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qcommandlinkbutton\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qcommonstyle\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qcompleter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qdatawidgetmapper\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qdatetimeedit\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qdesktopwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qdial\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qdialog\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qdialogbuttonbox\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qdirmodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qdockwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qerrormessage\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qfiledialog\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qfileiconprovider\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qfilesystemmodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qfocusframe\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qfontcombobox\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qfontdialog\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qformlayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qframe\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgesture\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgesturerecognizer\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicsanchorlayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicseffect\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicsgridlayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicsitem\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicsitemanimation\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicslayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicslayoutitem\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicslinearlayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicsproxywidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicsscene\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicssceneevent\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicstransform\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicsview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgraphicswidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgridlayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qgroupbox\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qheaderview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qinputdialog\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qitemdelegate\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qitemeditorfactory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qkeyeventtransition\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qkeysequenceedit\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qlabel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qlayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qlayoutitem\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qlcdnumber\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qlineedit\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qlistview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qlistwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qmainwindow\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qmdiarea\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qmdisubwindow\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qmenu\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qmenubar\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qmessagebox\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qmouseeventtransition\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qopenglwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qplaintextedit\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qprogressbar\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qprogressdialog\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qproxystyle\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qpushbutton\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qradiobutton\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qrubberband\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qscrollarea\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qscrollbar\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qscroller\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qscrollerproperties\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qshortcut\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qsizegrip\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qsizepolicy\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qslider\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qspinbox\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qsplashscreen\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qsplitter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qstackedlayout\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qstackedwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qstatusbar\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qstyle\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qstyleditemdelegate\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qstylefactory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qstyleoption\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qstylepainter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qstyleplugin\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qsystemtrayicon\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtabbar\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtableview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtablewidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtabwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtextbrowser\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtextedit\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtoolbar\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtoolbox\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtoolbutton\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtooltip\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtreeview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtreewidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtreewidgetitemiterator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qtwidgetsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qundogroup\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qundostack\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qundoview\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qwhatsthis\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qwidgetaction\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qwizard\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWinExtras/)?qtwinextrasversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWinExtras/)?qwinevent\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWinExtras/)?qwinjumplist\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWinExtras/)?qwinjumplistcategory\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWinExtras/)?qwinjumplistitem\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWinExtras/)?qwinmime\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWinExtras/)?qwintaskbarbutton\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWinExtras/)?qwintaskbarprogress\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWinExtras/)?qwinthumbnailtoolbar\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWinExtras/)?qwinthumbnailtoolbutton\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXml/)?qtxmlversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qabstractmessagehandler\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qabstracturiresolver\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qabstractxmlnodemodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qabstractxmlreceiver\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qsimplexmlnodemodel\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qsourcelocation\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qtxmlpatternsversion\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qxmlformatter\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qxmlname\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qxmlnamepool\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qxmlquery\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qxmlresultitems\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qxmlschema\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qxmlschemavalidator\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtXmlPatterns/)?qxmlserializer\\.h\"", "private", "", "public" ] }, - -# And lastly, things stored in difficult places - { include: [ "@\"(QtCore/)?qobjectdefs\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qglobal\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qnamespace\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qlogging\\.h\"", "private", "", "public" ] }, #qDebug, qWarning, etc - { include: [ "@\"(QtCore/)?qalgorithms\\.h\"", "private", "", "public" ] }, #qSort, etc - { include: [ "@\"(QtWinExtras/)?qwinfunctions\\.h\"", "private", "", "public" ] }, # for fromHICON - -# These ones are just madness. For instance, why with the above do we get -# #include "QtCore/qcoreevent.h" // for QEvent (ptr only), etc - { include: [ "@\"(QtCore/)?qcoreevent\\.h\"", "private", "", "public" ] }, - -# These ones seem spurious -#include "QtCore/qtypetraits.h" // for remove_reference<>::type -#include "QtCore/qsharedpointer_impl.h" // for swap -#include "QtCore/qatomic_msvc.h" - -] diff --git a/scons_configure_template.py b/scons_configure_template.py deleted file mode 100644 index 67a8fad6b..000000000 --- a/scons_configure_template.py +++ /dev/null @@ -1,33 +0,0 @@ -# This python script contains the configuration for scons -# Copy this to scons_configure.py and adjust to taste. - -# Path to your boost install - it should have a boost/ subdirectory and a stage/ -# subdirectory. The scons script will use stage/lib if there, or the appropriate -# version for your compiler, if you installed the multiple-build version -BOOSTPATH = r"C:\Apps\boost_1_55_0" - -# Version of Visual Studio to use, if you wish to use a specific version. If you -# don't specify a version, the latest will be picked.. See the scons manual for -# supported values. -#MSVC_VERSION = '10.0Exp' - -# Path to your python install -# You don't really need to set this up but you might if (say) you have a 32- and -# 64-bit python install and scons has been installed for the 64 bit version -#PYTHONPATH=r"C:\Apps\Python" - -# Path to your QT install. This might constrain the version of MSVC you can use. -# This seems to be set by QTCreator -#QTDIR = r"C:\Apps\Qt\4.8.6" - -# Path to 7-zip sources -SEVENZIPPATH = r"C:\Apps\7-Zip\7z920" - -# Path to zlib. Please read the README file for more information about how this -# needs to be set up -ZLIBPATH = r"C:\Apps\zlib-1.2.8" - -# Source control programs. Sadly I can't get this information from qt, even -# though you have to set it up in the configuration -GIT = r"C:\Program Files\git\bin\git.exe" -MERCURIAL = r"C:\Program Files\TortoiseHg\hg.exe" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7188c03b8..10e71e6b4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,36 +1,106 @@ cmake_minimum_required(VERSION 3.16) +find_package(mo2-cmake CONFIG REQUIRED) + +find_package(usvfs CONFIG REQUIRED) + +find_package(mo2-uibase CONFIG REQUIRED) +find_package(mo2-archive CONFIG REQUIRED) +find_package(mo2-lootcli-header CONFIG REQUIRED) +find_package(mo2-bsatk CONFIG REQUIRED) +find_package(mo2-esptk CONFIG REQUIRED) +find_package(mo2-dds-header CONFIG REQUIRED) +find_package(mo2-libbsarch CONFIG REQUIRED) + +find_package(Qt6 REQUIRED COMPONENTS WebEngineWidgets WebSockets) +find_package(Boost CONFIG REQUIRED COMPONENTS program_options thread interprocess signals2 uuid accumulators) +find_package(7zip CONFIG REQUIRED) +find_package(lz4 CONFIG REQUIRED) +find_package(ZLIB REQUIRED) + add_executable(organizer) -set_target_properties(organizer PROPERTIES OUTPUT_NAME "ModOrganizer") -mo2_configure_executable(organizer - WARNINGS OFF - EXTRA_TRANSLATIONS ${MO2_SUPER_PATH}/game_gamebryo/src ${MO2_UIBASE_PATH}/src - PRIVATE_DEPENDS - uibase githubpp bsatk esptk archive usvfs lootcli boost::program_options - DirectXTex libbsarch Qt::WebEngineWidgets Qt::WebSockets) -target_link_libraries(organizer PUBLIC Shlwapi) -target_include_directories(organizer PUBLIC ${DDS_ROOT}) -mo2_install_target(organizer) +set_target_properties(organizer PROPERTIES + OUTPUT_NAME "ModOrganizer" + WIN32_EXECUTABLE TRUE) + +# disable translations because we want to be able to install somewhere else if +# required +mo2_configure_target(organizer WARNINGS 4 TRANSLATIONS OFF) + +# we add translations "manually" to handle MO2_INSTALL_IS_BIN +mo2_add_translations(organizer + INSTALL_RELEASE + INSTALL_DIRECTORY "${_bin}/translations" + SOURCES ${CMAKE_CURRENT_SOURCE_DIR}) + +mo2_set_project_to_run_from_install( + organizer EXECUTABLE ${CMAKE_INSTALL_PREFIX}/${_bin}/ModOrganizer.exe) + +target_link_libraries(organizer PRIVATE + Shlwapi Bcrypt + usvfs::usvfs mo2::uibase mo2::archive mo2::libbsarch + mo2::bsatk mo2::esptk mo2::lootcli-header + Boost::program_options Boost::signals2 Boost::uuid Boost::accumulators + Qt6::WebEngineWidgets Qt6::WebSockets Version Dbghelp) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest.qt6" - DESTINATION bin/dlls + DESTINATION ${_bin}/dlls CONFIGURATIONS Release RelWithDebInfo RENAME dlls.manifest) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest.debug.qt6" - DESTINATION bin/dlls + DESTINATION ${_bin}/dlls CONFIGURATIONS Debug RENAME dlls.manifest) -install(DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}/stylesheets" - "${CMAKE_CURRENT_SOURCE_DIR}/tutorials" - DESTINATION bin) +if (NOT MO2_SKIP_STYLESHEETS_INSTALL) + install( + DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/stylesheets" + DESTINATION ${_bin}) +endif() + +if (NOT MO2_SKIP_TUTORIALS_INSTALL) + install( + DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tutorials" + DESTINATION ${_bin}) +endif() install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/markdown.html" - DESTINATION bin/resources) + DESTINATION ${_bin}/resources) + +# install ModOrganizer.exe itself +install(FILES $ DESTINATION ${_bin}) + +# install dependencies DLLs +install(FILES $ DESTINATION ${_bin}/dlls) +install(FILES $ DESTINATION ${_bin}/dlls) +install(FILES $ DESTINATION ${_bin}/dlls) + +# this may copy over the ones from uibase/usvfs +# - when building with mob, this should not matter as the files should be identical +# - when building standalone, this should help having matching USVFS DLL between the +# build and the installation +# - this may cause issue with uibase in standalone mode if the installed version does +# not match the one used for the build, but there would be other issue anyway (e.g. +# different uibase.dll between modorganizer and plugins) +# +install(FILES + $ + $ + $ + $ + $ +DESTINATION ${_bin}) + +# do not install PDB if CMAKE_INSTALL_PREFIX is "bin" +if (NOT MO2_INSTALL_IS_BIN) + install(FILES $ DESTINATION pdb) +endif() -mo2_deploy_qt(BINARIES ModOrganizer.exe uibase.dll plugins/bsa_packer.dll) +mo2_deploy_qt( + DIRECTORY ${_bin} + BINARIES ModOrganizer.exe $) +# set source groups for VS mo2_add_filter(NAME src/application GROUPS iuserinterface commandline @@ -49,14 +119,15 @@ mo2_add_filter(NAME src/browser GROUPS ) mo2_add_filter(NAME src/categories GROUPS - categories + categories categoriestable - categoriesdialog + categoriesdialog categoryimportdialog ) mo2_add_filter(NAME src/core GROUPS archivefiletree + githubpp installationmanager nexusinterface nxmaccessmanager diff --git a/src/ModOrganizer.pro b/src/ModOrganizer.pro deleted file mode 100644 index c4fd534eb..000000000 --- a/src/ModOrganizer.pro +++ /dev/null @@ -1,60 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS = bsatk \ - shared \ - uibase \ - esptk \ - organizer \ - hookdll \ - archive \ - helper \ - plugins \ - nxmhandler \ - BossDummy \ - pythonRunner \ - loot_cli - -pythonRunner.depends = uibase -plugins.depends = pythonRunner uibase -hookdll.depends = shared -organizer.depends = shared uibase plugins - -CONFIG(debug, debug|release) { - DESTDIR = $$PWD/../outputd -} else { - DESTDIR = $$PWD/../output -} - -STATICDATAPATH = $${DESTDIR}\\..\\tools\\static_data\\dlls -DLLSPATH = $${DESTDIR}\\dlls - -otherlibs.path = $$DLLSPATH -otherlibs.files += $${STATICDATAPATH}\\7z.dll \ - $${BOOSTPATH}\\stage\\lib\\boost_python-vc*-mt-1*.dll - -qtlibs.path = $$DLLSPATH - -greaterThan(QT_MAJOR_VERSION, 4) { - QTLIBNAMES += Core Gui Network OpenGL Script Sql Svg Qml Quick Webkit Widgets Xml XmlPatterns -} else { - QTLIBNAMES += Core Declarative Gui Network OpenGL Script Sql Svg Webkit Xml XmlPatterns -} - -greaterThan(QT_MAJOR_VERSION, 5) { - QTLIBNAMES += OpenGLWidgets -} - -QTLIBSUFFIX = $${QT_MAJOR_VERSION}.dll -CONFIG(debug, debug|release): QTLIBSUFFIX = "d$${QTLIBSUFFIX}" # Can't use Debug: .. here, it ignores the line - no idea why, as it works in BossDummy.pro - -for(QTNAME, QTLIBNAMES) { - QTFILE = Qt$${QTNAME} - qtlibs.files += $$[QT_INSTALL_BINS]\\$${QTFILE}$${QTLIBSUFFIX} -} - -INSTALLS += qtlibs otherlibs - -OTHER_FILES +=\ - ../SConstruct\ - ../scons_configure.py\ - SConscript diff --git a/src/SConscript b/src/SConscript deleted file mode 100644 index 6de7cb62a..000000000 --- a/src/SConscript +++ /dev/null @@ -1,179 +0,0 @@ -import ctypes -import os -import subprocess - -def resolve_name(source): - # Get the actual name of the file, after reparse points and symlinks are - # taken into account. - GENERIC_READ = 0x80000000 - FILE_SHARE_READ = 0x1 - OPEN_EXISTING = 0x3 - FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 - handle = ctypes.windll.kernel32.CreateFileA(source, - GENERIC_READ, - FILE_SHARE_READ, - None, - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS, - None) - # get the target - FILE_NAME_NORMALIZED = 0x0 - FILE_NAME_OPENED = 0x8 - buff = ctypes.create_string_buffer(1024) - res = ctypes.windll.kernel32.GetFinalPathNameByHandleA(handle, - buff, - ctypes.sizeof(buff), - FILE_NAME_NORMALIZED) - target = buff.value - ctypes.windll.kernel32.CloseHandle(handle) - return target - -def search_up(path, target): - while True: - if os.path.exists(os.path.join(path, target)): - return True - npath = os.path.dirname(path) - if npath == path: - break - path = npath - return False - -Import('qt_env') - -env = qt_env.Clone() - -modules = [ - 'Core', - 'Gui', - 'Network', - 'Script', - 'Sql', - 'WebKit', - 'Xml', - 'XmlPatterns', - 'Declarative' -] - -if env['QT_MAJOR_VERSION'] > 4: - modules += [ - 'Widgets', - 'Qml', - 'WebKitWidgets' - ] - -env.EnableQtModules(*modules) - -env.Uic(env.Glob('*.ui')) - -env.RequireLibraries('uibase', 'shared', 'bsatk', 'esptk') - -env.AppendUnique(LIBS = [ - 'shell32', - 'user32', - 'ole32', - 'advapi32', - 'gdi32', - 'shlwapi', - 'Psapi', - 'Version' -]) - -# We have to 'persuade' moc to generate certain other targets and inject them -# into the list of cpps -other_sources = env.AddExtraMoc(env.Glob('*.h')) - -for file in env.Glob('*.rc'): - other_sources.append(env.RES(file)) - -# Note the order of this is important, or you can pick up the wrong report.h... -# Doing appendunique seems to throw the moc code into a tizzy -env['CPPPATH'] += [ - '../archive', - '../plugins/gamefeatures', - '.', # Why is this necessary? - '${LOOTPATH}', - '${BOOSTPATH}', -] - -#########################FUDGE############################### -env['CPPPATH'] += [ - '../plugins/gameGamebryo', - ] -############################################################# - -env.AppendUnique(CPPDEFINES = [ - '_UNICODE', - '_CRT_SECURE_NO_WARNINGS', - '_SCL_SECURE_NO_WARNINGS', - 'BOOST_DISABLE_ASSERTS', - 'NDEBUG', - 'QT_MESSAGELOGCONTEXT' -]) - -# Boost produces very long names with msvc truncates. Doesn't seem to cause -# problems. -# Also note to remove the -wd4100 I hacked the boost headers (tagged_argument.hpp) -# appropriately. -env.AppendUnique(CPPFLAGS = [ '-wd4503' ]) - -env.AppendUnique(LINKFLAGS = [ - '/SUBSYSTEM:WINDOWS', - '${EXE_MANIFEST_DEPENDENCY}' -]) - -# modeltest is optional and it doesn't compile anyway... -cpp_files = [ - x for x in env.Glob('*.cpp', source = True) - if x.name != 'modeltest.cpp' and x.name != 'aboutdialog.cpp' and \ - not x.name.startswith('moc_') # I think this is a strange bug -] - -about_env = env.Clone() -# This is somewhat of a hack until I can work out a way of setting up a build -# with all the repos without using millions of junction points -try: - target = resolve_name(Dir('.').srcnode().abspath) - if search_up(target, '.hg'): - hgid = subprocess.check_output([env['MERCURIAL'], 'id', '-i']).rstrip() - elif search_up(target, '.git'): - hgid = subprocess.check_output([env['GIT'], '-C', target, 'describe', - '--tag']).rstrip() - else: - hgid = "Unknown" -except: - hgid = "Problem determining version" - -# FIXME: It'd be much easier to stringify this in the source code -about_env.AppendUnique(CPPDEFINES = [ 'HGID=\\"%s\\"' % hgid ]) -other_sources.append(about_env.StaticObject('aboutdialog.cpp')) - -env.AppendUnique(LIBPATH = "${ZLIBPATH}/build") -env.AppendUnique(LIBS = 'zlibstatic') - -prog = env.Program('ModOrganizer', - cpp_files + env.Glob('*.qrc') + other_sources) - -env.InstallModule(prog) - -for subdir in ('tutorials', 'stylesheets'): - env.Install(os.path.join(env['INSTALL_PATH'], subdir), - env.Glob(os.path.join(subdir, '*'))) - -# FIXME Sort the translations. Except they don't exist on the 1.2 branch - -res = env['QT_USED_MODULES'] -Return('res') - -""" -CONFIG(debug, debug|release) { -} else { - QMAKE_CXXFLAGS += /Zi /GL - QMAKE_LFLAGS += /DEBUG /LTCG /OPT:REF /OPT:ICF -} - -TRANSLATIONS = organizer_en.ts - - -QMAKE_POST_LINK += xcopy /y /s /I $$quote($$BASEDIR\\*.qm) $$quote($$DSTDIR)\\translations $$escape_expand(\\n) - -""" diff --git a/src/archivefiletree.h b/src/archivefiletree.h index 3b95769d0..89ef5be0b 100644 --- a/src/archivefiletree.h +++ b/src/archivefiletree.h @@ -20,8 +20,8 @@ along with Mod Organizer. If not, see . #ifndef ARCHIVEFILENETRY_H #define ARCHIVEFILENTRY_H -#include "archive.h" -#include "ifiletree.h" +#include +#include /** * diff --git a/src/github.cpp b/src/github.cpp new file mode 100644 index 000000000..1c91cface --- /dev/null +++ b/src/github.cpp @@ -0,0 +1,204 @@ +#include "github.h" +#include +#include +#include + +#include +#include + +static const QString GITHUB_URL("https://api.github.com"); +static const QString USER_AGENT("GitHubPP"); + +GitHub::GitHub(const char* clientId) : m_AccessManager(new QNetworkAccessManager(this)) +{} + +GitHub::~GitHub() +{ + // delete all the replies since they depend on the access manager, which is + // about to be deleted + for (auto* reply : m_replies) { + reply->disconnect(); + delete reply; + } +} + +QJsonArray GitHub::releases(const Repository& repo) +{ + QJsonDocument result = request( + Method::GET, QString("repos/%1/%2/releases").arg(repo.owner, repo.project), + QByteArray(), true); + return result.array(); +} + +void GitHub::releases(const Repository& repo, + const std::function& callback) +{ + request( + Method::GET, QString("repos/%1/%2/releases").arg(repo.owner, repo.project), + QByteArray(), + [callback](const QJsonDocument& result) { + callback(result.array()); + }, + true); +} + +QJsonDocument GitHub::handleReply(QNetworkReply* reply) +{ + int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + if (statusCode != 200) { + return QJsonDocument(QJsonObject( + {{"http_status", statusCode}, + {"redirection", + reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toString()}, + {"reason", + reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString()}})); + } + + QByteArray data = reply->readAll(); + if (data.isNull() || data.isEmpty() || (strcmp(data.constData(), "null") == 0)) { + return QJsonDocument(); + } + + QJsonParseError parseError; + QJsonDocument result = QJsonDocument::fromJson(data, &parseError); + + if (parseError.error != QJsonParseError::NoError) { + return QJsonDocument(QJsonObject({{"parse_error", parseError.errorString()}})); + } + + return result; +} + +QNetworkReply* GitHub::genReply(Method method, const QString& path, + const QByteArray& data, bool relative) +{ + QNetworkRequest request(relative ? GITHUB_URL + "/" + path : path); + + request.setHeader(QNetworkRequest::UserAgentHeader, USER_AGENT); + request.setRawHeader("Accept", "application/vnd.github.v3+json"); + + switch (method) { + case Method::GET: + return m_AccessManager->get(request); + case Method::POST: + return m_AccessManager->post(request, data); + default: + // this shouldn't be possible as all enum options are handled + throw std::runtime_error("invalid method"); + } +} + +QJsonDocument GitHub::request(Method method, const QString& path, + const QByteArray& data, bool relative) +{ + QEventLoop wait; + QNetworkReply* reply = genReply(method, path, data, relative); + + connect(reply, SIGNAL(finished), &wait, SLOT(quit())); + wait.exec(); + QJsonDocument result = handleReply(reply); + reply->deleteLater(); + + QJsonObject object = result.object(); + if (object.value("http_status").toDouble() == 301.0) { + return request(method, object.value("redirection").toString(), data, false); + } else { + return result; + } +} + +void GitHub::request(Method method, const QString& path, const QByteArray& data, + const std::function& callback, + bool relative) +{ + // make sure the timer is owned by this so it's deleted correctly and + // doesn't fire after the GitHub object is destroyed; this happens when + // restarting MO by switching instances, for example + QTimer* timer = new QTimer(this); + timer->setSingleShot(true); + timer->setInterval(10000); + + QNetworkReply* reply = genReply(method, path, data, relative); + + // remember this reply so it can be deleted in the destructor if necessary + m_replies.push_back(reply); + + Request req = {method, data, callback, timer, reply}; + + // finished + connect(reply, &QNetworkReply::finished, [this, req] { + onFinished(req); + }); + + // error + connect(reply, qOverload(&QNetworkReply::errorOccurred), + [this, req](auto&& error) { + onError(req, error); + }); + + // timeout + connect(timer, &QTimer::timeout, [this, req] { + onTimeout(req); + }); + + timer->start(); +} + +void GitHub::onFinished(const Request& req) +{ + QJsonDocument result = handleReply(req.reply); + QJsonObject object = result.object(); + + req.timer->stop(); + + if (object.value("http_status").toInt() == 301) { + request(req.method, object.value("redirection").toString(), req.data, req.callback, + false); + } else { + req.callback(result); + } + + deleteReply(req.reply); +} + +void GitHub::onError(const Request& req, QNetworkReply::NetworkError error) +{ + // the only way the request can be aborted is when there's a timeout, which + // already logs a message + if (error != QNetworkReply::OperationCanceledError) { + qCritical().noquote().nospace() + << "Github: request for " << req.reply->url().toString() << " failed, " + << req.reply->errorString() << " (" << error << ")"; + } + + req.timer->stop(); + req.reply->disconnect(); + + QJsonObject root({{"network_error", req.reply->errorString()}}); + QJsonDocument doc(root); + + req.callback(doc); + + deleteReply(req.reply); +} + +void GitHub::onTimeout(const Request& req) +{ + qCritical().noquote().nospace() + << "Github: request for " << req.reply->url().toString() << " timed out"; + + // don't delete the reply, abort will fire the error() handler above + req.reply->abort(); +} + +void GitHub::deleteReply(QNetworkReply* reply) +{ + // remove from the list + auto itor = std::find(m_replies.begin(), m_replies.end(), reply); + if (itor != m_replies.end()) { + m_replies.erase(itor); + } + + // delete + reply->deleteLater(); +} diff --git a/src/github.h b/src/github.h new file mode 100644 index 000000000..0085fd5ac --- /dev/null +++ b/src/github.h @@ -0,0 +1,108 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include + +class GitHubException : public std::exception +{ +public: + GitHubException(const QJsonObject& errorObj) : std::exception() + { + initMessage(errorObj); + } + + virtual ~GitHubException() throw() override {} + + virtual const char* what() const throw() { return m_Message.constData(); } + +private: + void initMessage(const QJsonObject& obj) + { + if (obj.contains("http_status")) { + m_Message = QString("HTTP Status %1: %2") + .arg(obj.value("http_status").toInt()) + .arg(obj.value("reason").toString()) + .toUtf8(); + } else if (obj.contains("parse_error")) { + m_Message = QString("Parsing failed: %1") + .arg(obj.value("parse_error").toString()) + .toUtf8(); + } else if (obj.contains("network_error")) { + m_Message = QString("Network failed: %1") + .arg(obj.value("network_error").toString()) + .toUtf8(); + } else { + m_Message = "Unknown error"; + } + } + + QByteArray m_Message; +}; + +class GitHub : public QObject +{ + + Q_OBJECT + +public: + enum class Method + { + GET, + POST + }; + + struct Repository + { + Repository(const QString& owner, const QString& project) + : owner(owner), project(project) + {} + QString owner; + QString project; + }; + +public: + GitHub(const char* clientId = nullptr); + ~GitHub(); + + QJsonArray releases(const Repository& repo); + void releases(const Repository& repo, + const std::function& callback); + +private: + QJsonDocument request(Method method, const QString& path, const QByteArray& data, + bool relative); + void request(Method method, const QString& path, const QByteArray& data, + const std::function& callback, + bool relative); + + QJsonDocument handleReply(QNetworkReply* reply); + QNetworkReply* genReply(Method method, const QString& path, const QByteArray& data, + bool relative); + +private: + struct Request + { + Method method = Method::GET; + QByteArray data; + std::function callback; + QTimer* timer = nullptr; + QNetworkReply* reply = nullptr; + }; + + QNetworkAccessManager* m_AccessManager; + + // remember the replies that are in flight and delete them in the destructor + std::vector m_replies; + + void onFinished(const Request& req); + void onError(const Request& req, QNetworkReply::NetworkError error); + void onTimeout(const Request& req); + + void deleteReply(QNetworkReply* reply); +}; diff --git a/src/installationmanager.h b/src/installationmanager.h index e8e975152..e125bbe94 100644 --- a/src/installationmanager.h +++ b/src/installationmanager.h @@ -20,17 +20,17 @@ along with Mod Organizer. If not, see . #ifndef INSTALLATIONMANAGER_H #define INSTALLATIONMANAGER_H -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #define WIN32_LEAN_AND_MEAN #include #include -#include -#include #include #include diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 8c91083bf..8ff6fc6c9 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -60,8 +60,6 @@ along with Mod Organizer. If not, see . #include "problemsdialog.h" #include "profile.h" #include "profilesdialog.h" -#include "report.h" -#include "savegameinfo.h" #include "savestab.h" #include "selectiondialog.h" #include "serverinfo.h" @@ -69,15 +67,17 @@ along with Mod Organizer. If not, see . #include "shared/appconfig.h" #include "spawn.h" #include "statusbar.h" -#include "tutorialmanager.h" -#include "versioninfo.h" #include #include #include #include #include -#include -#include +#include +#include +#include +#include +#include +#include #include "directoryrefresher.h" #include "shared/directoryentry.h" @@ -2885,6 +2885,12 @@ void MainWindow::languageChange(const QString& newLanguage) installTranslator("qt"); installTranslator("qtbase"); installTranslator(ToQString(AppConfig::translationPrefix())); + installTranslator("uibase"); + + // TODO: this will probably be changed once extension come out + installTranslator("game_gamebryo"); + installTranslator("game_creation"); + for (const QString& fileName : m_PluginContainer.pluginFileNames()) { installTranslator(QFileInfo(fileName).baseName()); } diff --git a/src/mainwindow.h b/src/mainwindow.h index 42d3d5e7d..b3f4233aa 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -20,19 +20,20 @@ along with Mod Organizer. If not, see . #ifndef MAINWINDOW_H #define MAINWINDOW_H -#include "bsafolder.h" +#include +#include +#include +#include +#include +#include + #include "delayedfilewriter.h" -#include "errorcodes.h" -#include "imoinfo.h" -#include "iplugingame.h" //namespace MOBase { class IPluginGame; } #include "iuserinterface.h" #include "modinfo.h" #include "modlistbypriorityproxy.h" #include "modlistsortproxy.h" -#include "plugincontainer.h" //class PluginContainer; +#include "plugincontainer.h" #include "shared/fileregisterfwd.h" -#include "tutorialcontrol.h" -#include class Executable; class CategoryFactory; diff --git a/src/organizercore.cpp b/src/organizercore.cpp index 0f6a14551..a8926dc65 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -29,15 +29,15 @@ #include "spawn.h" #include "syncoverwritedialog.h" #include "virtualfiletree.h" -#include #include -#include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -71,7 +71,7 @@ #include #include -#include "bs_archive.h" +#include #include "organizerproxy.h" diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index eaf47b3ae..9b6cc89b6 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -16,24 +16,11 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ - #include "pluginlist.h" -#include "modinfo.h" -#include "modlist.h" -#include "scopeguard.h" -#include "settings.h" -#include "shared/directoryentry.h" -#include "shared/fileentry.h" -#include "shared/filesorigin.h" -#include "viewmarkingscrollbar.h" -#include "shared/windows_error.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include #include #include @@ -50,11 +37,23 @@ along with Mod Organizer. If not, see . #include #include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include "gameplugins.h" +#include "modinfo.h" +#include "modlist.h" #include "organizercore.h" +#include "settings.h" +#include "shared/directoryentry.h" +#include "shared/fileentry.h" +#include "shared/filesorigin.h" +#include "shared/windows_error.h" +#include "viewmarkingscrollbar.h" using namespace MOBase; using namespace MOShared; diff --git a/src/selfupdater.h b/src/selfupdater.h index cc68ad275..612e70238 100644 --- a/src/selfupdater.h +++ b/src/selfupdater.h @@ -22,8 +22,7 @@ along with Mod Organizer. If not, see . #include -#include -#include +#include class Archive; class NexusInterface; @@ -43,6 +42,8 @@ class QNetworkReply; class QProgressDialog; class Settings; +#include "github.h" + /** * @brief manages updates for Mod Organizer itself * This class is used to update the Mod Organizer diff --git a/src/settings.h b/src/settings.h index 000f85c3c..edc1d6445 100644 --- a/src/settings.h +++ b/src/settings.h @@ -21,11 +21,11 @@ along with Mod Organizer. If not, see . #define SETTINGS_H #include "envdump.h" -#include -#include #include #include -#include +#include +#include +#include #ifdef interface #undef interface diff --git a/src/shared/directoryentry.h b/src/shared/directoryentry.h index 42aef8c7e..cb8d5c781 100644 --- a/src/shared/directoryentry.h +++ b/src/shared/directoryentry.h @@ -20,8 +20,9 @@ along with Mod Organizer. If not, see . #ifndef MO_REGISTER_DIRECTORYENTRY_INCLUDED #define MO_REGISTER_DIRECTORYENTRY_INCLUDED +#include + #include "fileregister.h" -#include namespace env { diff --git a/src/shared/util.cpp b/src/shared/util.cpp index 55a76c235..d3c6e2011 100644 --- a/src/shared/util.cpp +++ b/src/shared/util.cpp @@ -21,9 +21,9 @@ along with Mod Organizer. If not, see . #include "../env.h" #include "../mainwindow.h" #include "windows_error.h" -#include -#include -#include +#include +#include +#include using namespace MOBase; diff --git a/src/spawn.cpp b/src/spawn.cpp index 83ac720e5..aad1e1cc9 100644 --- a/src/spawn.cpp +++ b/src/spawn.cpp @@ -23,20 +23,19 @@ along with Mod Organizer. If not, see . #include "envmodule.h" #include "envsecurity.h" #include "envwindows.h" -#include "report.h" #include "settings.h" #include "settingsdialogworkarounds.h" #include "shared/appconfig.h" #include "shared/windows_error.h" -#include "utility.h" #include #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include +#include using namespace MOBase; using namespace MOShared; diff --git a/src/usvfsconnector.cpp b/src/usvfsconnector.cpp index 7b75b870d..8d1d29601 100644 --- a/src/usvfsconnector.cpp +++ b/src/usvfsconnector.cpp @@ -30,7 +30,7 @@ along with Mod Organizer. If not, see . #include #include #include -#include +#include static const char SHMID[] = "mod_organizer_instance"; using namespace MOBase; diff --git a/src/usvfsconnector.h b/src/usvfsconnector.h index d578ddd49..ecf68a2ce 100644 --- a/src/usvfsconnector.h +++ b/src/usvfsconnector.h @@ -21,16 +21,16 @@ along with Mod Organizer. If not, see . #define USVFSCONNECTOR_H #include "envdump.h" -#include "executableinfo.h" #include #include #include #include #include #include -#include -#include -#include +#include +#include +#include +#include class LogWorker : public QThread { diff --git a/vcpkg-configuration.json b/vcpkg-configuration.json new file mode 100644 index 000000000..0f3cef6ea --- /dev/null +++ b/vcpkg-configuration.json @@ -0,0 +1,21 @@ +{ + "default-registry": { + "kind": "git", + "repository": "https://github.com/Microsoft/vcpkg", + "baseline": "f61a294e765b257926ae9e9d85f96468a0af74e7" + }, + "registries": [ + { + "kind": "git", + "repository": "https://github.com/Microsoft/vcpkg", + "baseline": "f61a294e765b257926ae9e9d85f96468a0af74e7", + "packages": ["boost*", "boost-*"] + }, + { + "kind": "git", + "repository": "https://github.com/ModOrganizer2/vcpkg-registry", + "baseline": "210f6e8f6eaefd6abfdf685f7deeb6dabdc78512", + "packages": ["mo2-*", "7zip", "usvfs"] + } + ] +} diff --git a/vcpkg.json b/vcpkg.json new file mode 100644 index 000000000..4a8c5c2c4 --- /dev/null +++ b/vcpkg.json @@ -0,0 +1,32 @@ +{ + "dependencies": [ + "7zip", + "boost-accumulators", + "boost-assign", + "boost-date-time", + "boost-graph", + "boost-headers", + "boost-interprocess", + "boost-program-options", + "boost-signals2", + "boost-thread", + "boost-uuid", + "lz4", + "mo2-cmake", + "mo2-libbsarch", + "zlib" + ], + "features": { + "standalone": { + "description": "Build Standalone.", + "dependencies": [ + "mo2-archive", + "mo2-bsatk", + "mo2-esptk", + "mo2-lootcli-header", + "mo2-uibase", + "usvfs" + ] + } + } +} diff --git a/win.imp b/win.imp deleted file mode 100644 index 246357755..000000000 --- a/win.imp +++ /dev/null @@ -1,91 +0,0 @@ -[ - # Microsft visual C? - - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - - { include: [ "", "private", "", "public" ] }, - -# Windows -# Looks like the documentation says the 1st char is u/c the rest are l/c - -# You have to be kidding me. ULONG is defined in winsmcrd.h? - { symbol: [ "ULONG", "private", "", "private" ] }, - - { include: [ "", "private", "", "private" ] }, # Stringapiset.h - { include: [ "", "private", "", "public" ] }, - -# These are all in windef.h apparently. Which m/s then says 'use Windows.h' - { include: [ "", "private", "", "private" ] }, # or in winnt apparently - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "private" ] }, - -# Similary, but for winbase.h - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "private" ] }, - -# These ones say xxxx.h (include Windows.h) on the ms web site - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, # VerRsrc.h - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - -# These ones are in Windows.h but the documentation post windows 8 says they are individual headers, -# which looks like M/S are trying to get their act together. Maybe. - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - -# These ones are *not* defined to be in Windows.h, but it seems to work. These should probably be cleaned up - { include: [ "", "private", "", "public" ] }, - # These 3 should go to Shellapi.h - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, # official name according to website - { include: [ "", "private", "", "public" ] }, - # - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - -# These ones are in shtypes.h but the only documentation I can find says -# to include Knownfolders.h for these - { symbol: [ "REFKNOWNFOLDERID", "private", "", "public" ] }, - { symbol: [ "KNOWNFOLDERID", "private", "", "public" ] }, - -# IWYU doesn't understand upper/lower case which is *really* annoying on -# windows, though to be fair I'm not sure M/S understand it either. - { include: [ "", "private", "", "public" ] }, - -# Files that are included by other files which seem to then come for free in Windows.h but -# shouldn't. Again, should be cleaned up. - - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "public" ] }, - - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "public" ] }, - - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "public" ] }, - -# Huh? This one is sane? - { include: [ "", "private", "", "public" ] }, - - -] - -#include // for operator delete[], etc - -#include // for _Simple_types<>::value_type -#include // for _Tree_const_iterator From 043cc491ff5330eab70a0b5ffc94978fb3e60063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Capelle?= Date: Mon, 5 Aug 2024 15:39:24 +0200 Subject: [PATCH 02/16] Switch VersionInfo -> Version for ModOrganizer2. (#2063) --- .github/workflows/build.yml | 4 +- src/env.cpp | 2 +- src/mainwindow.cpp | 21 +- src/moapplication.cpp | 4 +- src/modinfo.h | 2 +- src/nexusinterface.cpp | 3 +- src/nexusinterface.h | 1 - src/organizer_en.ts | 983 +++++++--------------------------- src/organizercore.cpp | 2 +- src/organizercore.h | 46 +- src/organizerproxy.cpp | 46 +- src/organizerproxy.h | 112 ++-- src/selfupdater.cpp | 17 +- src/selfupdater.h | 10 +- src/settingsdialoggeneral.cpp | 2 +- src/shared/util.cpp | 34 +- src/shared/util.h | 7 +- vcpkg-configuration.json | 2 +- 18 files changed, 392 insertions(+), 906 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4c538a949..49f4aa8e4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,8 +24,8 @@ jobs: - name: Install Qt uses: jurplel/install-qt-action@v3 with: - version: 6.7.0 - modules: + version: 6.7.1 + modules: qtpositioning qtwebchannel qtwebengine qtwebsockets cache: true - uses: actions/checkout@v4 diff --git a/src/env.cpp b/src/env.cpp index 9e67ef884..5dab489ed 100644 --- a/src/env.cpp +++ b/src/env.cpp @@ -1081,7 +1081,7 @@ std::wstring safeVersion() { try { // this can throw - return MOShared::createVersionInfo().displayString(3).toStdWString() + L"-"; + return MOShared::createVersionInfo().string().toStdWString() + L"-"; } catch (...) { return {}; } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 8ff6fc6c9..dcf8f44df 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -639,9 +639,10 @@ MainWindow::~MainWindow() void MainWindow::updateWindowTitle(const APIUserAccount& user) { //"\xe2\x80\x93" is an "em dash", a longer "-" - QString title = QString("%1 \xe2\x80\x93 Mod Organizer v%2") - .arg(m_OrganizerCore.managedGame()->displayGameName(), - m_OrganizerCore.getVersion().displayString(3)); + QString title = + QString("%1 \xe2\x80\x93 Mod Organizer v%2") + .arg(m_OrganizerCore.managedGame()->displayGameName(), + m_OrganizerCore.getVersion().string(Version::FormatCondensed)); if (!user.name().isEmpty()) { const QString premium = (user.type() == APIUserAccountTypes::Premium ? "*" : ""); @@ -1039,7 +1040,8 @@ void MainWindow::checkForProblemsImpl() void MainWindow::about() { - AboutDialog(m_OrganizerCore.getVersion().displayString(3), this).exec(); + AboutDialog(m_OrganizerCore.getVersion().string(Version::FormatCondensed), this) + .exec(); } void MainWindow::createEndorseMenu() @@ -2163,8 +2165,9 @@ void MainWindow::processUpdates() auto& settings = m_OrganizerCore.settings(); const auto earliest = QVersionNumber::fromString("2.1.2").normalized(); - const auto lastVersion = settings.version().value_or(earliest); - const auto currentVersion = m_OrganizerCore.getVersion().asQVersionNumber(); + const auto lastVersion = settings.version().value_or(earliest); + const auto currentVersion = + QVersionNumber::fromString(m_OrganizerCore.getVersion().string()).normalized(); m_LastVersion = lastVersion; @@ -2968,8 +2971,7 @@ void MainWindow::actionEndorseMO() QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { NexusInterface::instance().requestToggleEndorsement( game->gameShortName(), game->nexusModOrganizerID(), - m_OrganizerCore.getVersion().canonicalString(), true, this, QVariant(), - QString()); + m_OrganizerCore.getVersion().string(), true, this, QVariant(), QString()); } } @@ -2990,8 +2992,7 @@ void MainWindow::actionWontEndorseMO() QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { NexusInterface::instance().requestToggleEndorsement( game->gameShortName(), game->nexusModOrganizerID(), - m_OrganizerCore.getVersion().canonicalString(), false, this, QVariant(), - QString()); + m_OrganizerCore.getVersion().string(), false, this, QVariant(), QString()); } } diff --git a/src/moapplication.cpp b/src/moapplication.cpp index cac60f480..375807ec0 100644 --- a/src/moapplication.cpp +++ b/src/moapplication.cpp @@ -203,8 +203,8 @@ int MOApplication::setup(MOMultiProcess& multiProcess, bool forceSelect) log::debug("command line: '{}'", QString::fromWCharArray(GetCommandLineW())); log::info("starting Mod Organizer version {} revision {} in {}, usvfs: {}", - createVersionInfo().displayString(3), GITID, - QCoreApplication::applicationDirPath(), MOShared::getUsvfsVersionString()); + createVersionInfo().string(), GITID, QCoreApplication::applicationDirPath(), + MOShared::getUsvfsVersionString()); if (multiProcess.secondary()) { log::debug("another instance of MO is running but --multiple was given"); diff --git a/src/modinfo.h b/src/modinfo.h index d9e87ae05..bbb1aae3c 100644 --- a/src/modinfo.h +++ b/src/modinfo.h @@ -732,7 +732,7 @@ class ModInfo : public QObject, public MOBase::IModInterface * * @note Currently, this changes the color of the cell under the "Notes" column. */ - virtual void setColor(QColor color) {} + virtual void setColor([[maybe_unused]] QColor color) {} /** * @brief Adds the information that a file has been installed into this mod. diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index 359b7e413..ecd33cb67 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -274,9 +274,8 @@ NexusInterface::NexusInterface(Settings* s) : m_PluginContainer(nullptr) g_instance = this; m_User.limits(defaultAPILimits()); - m_MOVersion = createVersionInfo(); - m_AccessManager = new NXMAccessManager(this, s, m_MOVersion.displayString(3)); + m_AccessManager = new NXMAccessManager(this, s, createVersionInfo().string()); m_DiskCache = new QNetworkDiskCache(this); diff --git a/src/nexusinterface.h b/src/nexusinterface.h index 5fab222f1..f6efef1d9 100644 --- a/src/nexusinterface.h +++ b/src/nexusinterface.h @@ -681,7 +681,6 @@ private slots: NXMAccessManager* m_AccessManager; std::list m_ActiveRequest; QQueue m_RequestQueue; - MOBase::VersionInfo m_MOVersion; PluginContainer* m_PluginContainer; APIUserAccount m_User; }; diff --git a/src/organizer_en.ts b/src/organizer_en.ts index 46169a5ad..5715889bd 100644 --- a/src/organizer_en.ts +++ b/src/organizer_en.ts @@ -2164,43 +2164,6 @@ Right now the only case I know of where this needs to be overwritten is for the - - FindDialog - - - Find - - - - - Find what: - - - - - - Search term - - - - - - Find next occurence from current file position. - - - - - &Find Next - - - - - - - Close - - - ForcedLoadDialog @@ -2280,139 +2243,6 @@ Right now the only case I know of where this needs to be overwritten is for the - - GamebryoModDataContent - - - Plugins (ESP/ESM/ESL) - - - - - Optional Plugins - - - - - Interface - - - - - Meshes - - - - - Bethesda Archive - - - - - Scripts (Papyrus) - - - - - Script Extender Plugin - - - - - Script Extender Files - - - - - SkyProc Patcher - - - - - Sound or Music - - - - - Textures - - - - - MCM Configuration - - - - - INI Files - - - - - FaceGen Data - - - - - ModGroup Files - - - - - GamebryoSaveGameInfoWidget - - - Save # - - - - - Character - - - - - Level - - - - - Location - - - - - Date - - - - - Has Script Extender Data - - - - - Missing ESPs - - - - - - - None - - - - - Missing ESHs - - - - - Missing ESLs - - - GeneralConflictsTab @@ -2936,100 +2766,6 @@ This is likely due to a corrupted or incompatible download or unrecognized archi - - MOBase::FilterWidget - - - Filter options - - - - - Use regular expressions - - - - - Use regular expressions in filters - - - - - Case sensitive - - - - - Make regular expressions case sensitive (/i) - leave "(/i)" verbatim - - - - - Extended - - - - - Ignores unescaped whitespace in regular expressions (/x) - leave "(/x)" verbatim - - - - - Keep selection in view - - - - - Scroll to keep the current selection in view after filtering - - - - - MOBase::TextViewer - - - Save changes? - - - - - Do you want to save changes to %1? - - - - - failed to write to %1 - - - - - file not found: %1 - - - - - Save - - - - - MOBase::TutorialControl - - - Tutorial failed to start, please check "mo_interface.log" for details. - - - - - MOBase::TutorialManager - - - tutorial manager not set up yet - - - MOMultiProcess @@ -3267,7 +3003,7 @@ This is likely due to a corrupted or incompatible download or unrecognized archi - + Sort the plugins using LOOT. @@ -3401,7 +3137,7 @@ This is likely due to a corrupted or incompatible download or unrecognized archi - + Name @@ -3659,7 +3395,7 @@ This is likely due to a corrupted or incompatible download or unrecognized archi - + Endorse Mod Organizer @@ -3770,142 +3506,142 @@ Error: %1 - + There are notifications to read - + There are no notifications - + Endorse - + Won't Endorse - + First Steps Translation strings for tutorial names - + Conflict Resolution - + Overview - + Help on UI - + Documentation - - + + Game Support Wiki - + Chat on Discord - + Report Issue - + Tutorials - + About - + About Qt - + Please enter a name for the new profile - + failed to create profile: %1 - + Show tutorial? - + You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help" menu. - + Never ask to show tutorials - + Do you know how to mod this game? Do you need to learn? There's a game support wiki available! Click OK to open the wiki. In the future, you can access this link from the "Help" menu. - + Category Setup - + Please choose how to handle the default category setup. If you've already connected to Nexus, you can automatically import Nexus categories for this game (if applicable). Otherwise, use the old Mod Organizer default category structure, or leave the categories blank (for manual setup). - - + + &Import Nexus Categories - + Use &Old Category Defaults - + Do &Nothing - + This is your first time running version 2.5 or higher with an old MO2 instance. The category system now relies on an updated system to map Nexus categories. In order to assign Nexus categories automatically, you will need to import the Nexus categories for the currently managed game and map them to your preferred category structure. @@ -3916,321 +3652,321 @@ As a final option, you can disable Nexus category mapping altogether, which can - + &Open Categories Dialog - + &Disable Nexus Mappings - + &Close - + &Don't show this again - + Downloads in progress - + There are still downloads in progress, do you really want to quit? - + Plugin "%1" failed: %2 - + Plugin "%1" failed - + <Edit...> - + (no executables) - + This bsa is enabled in the ini file so it may be required! - + Activating Network Proxy - + Notice: Your current MO version (%1) is lower than the previously used one (%2). The GUI may not downgrade gracefully, so you may experience oddities. However, there should be no serious issues. - + failed to change origin name: %1 - + failed to move "%1" from mod "%2" to "%3": %4 - + Open Game folder - + Open MyGames folder - + Open INIs folder - + Open Instance folder - + Open Mods folder - + Open Profile folder - + Open Downloads folder - + Open MO2 Install folder - + Open MO2 Plugins folder - + Open MO2 Stylesheets folder - + Open MO2 Logs folder - + Restart Mod Organizer - + Mod Organizer must restart to finish configuration changes - + Restart - + Continue - + Some things might be weird. - + Can't change download directory while downloads are in progress! - + Update available - + Do you want to endorse Mod Organizer on %1 now? - + Abstain from Endorsing Mod Organizer - + Are you sure you want to abstain from endorsing Mod Organizer 2? You will have to visit the mod page on the %1 Nexus site to change your mind. - + Thank you for endorsing MO2! :) - + Please reconsider endorsing MO2 on Nexus! - + There is no supported sort mechanism for this game. You will probably have to use a third-party tool. - + None of your %1 mods appear to have had recent file updates. - + All of your mods have been checked recently. We restrict update checks to help preserve your available API requests. - + Thank you! - + Thank you for your endorsement! - + Mod ID %1 no longer seems to be available on Nexus. - + Error %1: Request to Nexus failed: %2 - - + + failed to read %1: %2 - + Error - + failed to extract %1 (errorcode %2) - + Extract BSA - + This archive contains invalid hashes. Some files may be broken. - + Extract... - + Remove '%1' from the toolbar - + Backup of load order created - + Choose backup to restore - + No Backups - + There are no backups to restore - - + + Restore failed - - + + Failed to restore the backup. Errorcode: %1 - + Backup of mod list created - + A file with the same name has already been downloaded. What would you like to do? - + Overwrite - + Rename new file - + Ignore file @@ -5774,32 +5510,32 @@ Please enter a name: NexusInterface - + Please pick the mod ID for "%1" - + You must authorize MO2 in Settings -> Nexus to use the Nexus API. - + You've exceeded the Nexus API rate limit and requests are now being throttled. Your next batch of requests will be available in approximately %1 minutes and %2 seconds. - + Aborting download: Either you clicked on a premium-only link and your account is not premium, or the download link was generated by a different account than the one stored in Mod Organizer. - + empty response - + invalid response @@ -6266,168 +6002,168 @@ Continue? PluginList - + Name - + Priority - + Mod Index - + Flags - - + + unknown - + Name of the plugin - + Emblems to highlight things that might require attention. - + Load priority of plugins. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. - + Determines the formids of objects originating from this mods. - + failed to update esp info for file %1 (source id: %2), error: %3 - + Plugin not found: %1 - + Origin - + This plugin can't be disabled or moved (enforced by the game). - + This plugin can't be disabled (enforced by the game). - + Author - + Description - + Missing Masters - + Enabled Masters - + Loads Archives - + There are Archives connected to this plugin. Their assets will be added to your game, overwriting in case of conflicts following the plugin order. Loose files will always overwrite assets from Archives. (This flag only checks for Archives from the same mod as the plugin) - + Loads INI settings - + There is an ini file connected to this plugin. Its settings will be added to your game settings, overwriting in case of conflicts. - + This %1 is flagged as a light plugin (ESL). It will adhere to the %1 load order but the records will be loaded in ESL space (FE/FF). You can have up to 4096 light plugins in addition to other plugin types. - + This ESM is flagged as a medium plugin (ESH). It adheres to the ESM load order but loads records in ESH space (FD). You can have 256 medium plugins in addition to other plugin types. - + WARNING: This plugin is both light and medium flagged. This could indicate that the file was saved improperly and may have mismatched record references. Use it at your own risk. - + This is a dummy plugin. It contains no records and is typically used to load a paired archive file. - + Light plugins (ESL) are not supported by this game. - + This game does not currently permit custom plugin loading. There may be manual workarounds. - + Incompatible with %1 - + Depends on missing %1 - + Warning - + Error - + failed to restore load order for %1 @@ -7249,13 +6985,13 @@ p, li { white-space: pre-wrap; } - - - - - - - + + + + + + + Cancel @@ -7504,8 +7240,6 @@ Destination: - - Error @@ -7618,23 +7352,23 @@ Destination: - + Please use "Help" from the toolbar to get usage instructions to all elements - + Visit %1 on Nexus - - + + <Manage...> - + failed to parse profile %1: %2 @@ -7782,12 +7516,12 @@ Destination: - + failed to access %1 - + failed to set file time %1 @@ -8089,196 +7823,196 @@ Example: - + This error typically happens because an antivirus has deleted critical files from Mod Organizer's installation folder or has made them generally inaccessible. Add an exclusion for Mod Organizer's installation folder in your antivirus, reinstall Mod Organizer and try again. - + This error typically happens because an antivirus is preventing Mod Organizer from starting programs. Add an exclusion for Mod Organizer's installation folder in your antivirus and try again. - + The file '%1' does not exist. - + The working directory '%1' does not exist. + - + - Cannot start Steam - + The path to the Steam executable cannot be found. You might try reinstalling Steam. - - - + + + Continue without starting Steam - - + + The program may fail to launch. - + Cannot launch program - - - + + + Cannot start %1 - + Cannot launch helper - - + + Elevation required - + This program is requesting to run as administrator but Mod Organizer itself is not running as administrator. Running programs as administrator is typically unnecessary as long as the game and Mod Organizer have been installed outside "Program Files". You can restart Mod Organizer as administrator and try launching the program again. - - + + Restart Mod Organizer as administrator - - + + You must allow "helper.exe" to make changes to the system. - + Launch Steam - + This program requires Steam - + Mod Organizer has detected that this program likely requires Steam to be running to function properly. - + Start Steam - - + + The program might fail to run. - + Steam is running as administrator - + Running Steam as administrator is typically unnecessary and can cause problems when Mod Organizer itself is not running as administrator. You can restart Mod Organizer as administrator and try launching the program again. - - - + + + Continue - + Event Log not running - + The Event Log service is not running - + The Windows Event Log service is not running. This can prevent USVFS from running properly and your mods may not be recognized by the program being launched. - - + + Your mods might not work. - + Blacklisted program - + The program %1 is blacklisted - + The program you are attempting to launch is blacklisted in the virtual filesystem. This will likely prevent it from seeing any mods, INI files or any other virtualized files. - + Change the blacklist - + Waiting - + Please press OK once you're logged into steam. - + Select binary - + Binary @@ -8337,217 +8071,6 @@ You can restart Mod Organizer as administrator and try launching the program aga Exit Now - - - - Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. - - - - - %1, #%2, Level %3, %4 - - - - - failed to open %1 - - - - - wrong file format - expected %1 got '%2' for %3 - - - - - failed to query registry path (preflight): %1 - - - - - failed to query registry path (read): %1 - - - - - invalid nxm-link: %1 - - - - - Filter - - - - - One of the following plugins must be enabled: %1. - - - - - This plugin can only be enabled if the '%1' plugin is installed and enabled. - - - - - This plugin can only be enabled for the following game(s): %1. - - - - - - - - - - - INI file is read-only - - - - - - Mod Organizer is attempting to write to "%1" which is currently set to read-only. - - - - - - Clear the read-only flag - - - - - - Allow the write once - - - - - - The file will be set to read-only again. - - - - - - Skip this file - - - - - You can reset these choices by clicking "Reset Dialog Choices" in the General tab of the Settings - - - - - Always ask - - - - - - Remember my choice - - - - - Remember my choice for %1 - - - - - removal of "%1" failed: %2 - - - - - removal of "%1" failed - - - - - "%1" doesn't exist (remove) - - - - - Error %1 - - - - - - You have an invalid custom browser command in the settings. - - - - - - failed to create directory "%1" - - - - - - failed to copy "%1" to "%2" - - - - - %1 B - - - - - %1 KB - - - - - %1 MB - - - - - %1 GB - - - - - %1 TB - - - - - %1 B/s - - - - - %1 KB/s - - - - - %1 MB/s - - - - - %1 GB/s - - - - - %1 TB/s - - - - - Failed to save '%1', could not create a temporary file: %2 (error %3) - - QueryOverwriteDialog @@ -8594,19 +8117,6 @@ p, li { white-space: pre-wrap; } - - QuestionBoxMemory - - - Remember selection - - - - - Remember selection only for %1 - - - SaveTextAsDialog @@ -8705,42 +8215,42 @@ p, li { white-space: pre-wrap; } SelfUpdater - + Download failed - + Failed to find correct download, please try again later. - + Update - + Download in progress - + Download failed: %1 - + Failed to install update: %1 - + Failed to start %1: %2 - + Error @@ -9722,62 +9232,6 @@ programs you are intentionally running. - - TaskDialog - - - Dialog - - - - - icon - - - - - dummy main text - - - - - dummy content text - - - - - dummy button - - - - - dummy checkbox - - - - - Details - - - - - TextViewer - - - Log Viewer - - - - - Placeholder - - - - - Show Whitespace - - - TransferSavesDialog @@ -10526,25 +9980,4 @@ Please open the "Nexus" tab. - - uibase - - - h - Time remaining hours - - - - - m - Time remaining minutes - - - - - s - Time remaining seconds - - - diff --git a/src/organizercore.cpp b/src/organizercore.cpp index a8926dc65..88166c8e6 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -646,7 +646,7 @@ QString OrganizerCore::modsPath() const return QDir::fromNativeSeparators(m_Settings.paths().mods()); } -MOBase::VersionInfo OrganizerCore::appVersion() const +MOBase::Version OrganizerCore::version() const { return m_Updater.getVersion(); } diff --git a/src/organizercore.h b/src/organizercore.h index 923adc12d..fe80da240 100644 --- a/src/organizercore.h +++ b/src/organizercore.h @@ -1,14 +1,32 @@ #ifndef ORGANIZERCORE_H #define ORGANIZERCORE_H +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "downloadmanager.h" #include "envdump.h" -#include "executableinfo.h" #include "executableslist.h" -#include "guessedvalue.h" #include "installationmanager.h" -#include "memoizedlock.h" -#include "moddatacontent.h" #include "modinfo.h" #include "modlist.h" #include "moshortcut.h" @@ -18,22 +36,6 @@ #include "settings.h" #include "uilocker.h" #include "usvfsconnector.h" -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include class ModListSortProxy; class PluginListSortProxy; @@ -270,7 +272,7 @@ class OrganizerCore : public QObject, public MOBase::IPluginDiagnose std::vector enabledArchives(); - MOBase::VersionInfo getVersion() const { return m_Updater.getVersion(); } + MOBase::Version getVersion() const { return m_Updater.getVersion(); } // return the plugin container // @@ -358,7 +360,7 @@ class OrganizerCore : public QObject, public MOBase::IPluginDiagnose QString overwritePath() const; QString basePath() const; QString modsPath() const; - MOBase::VersionInfo appVersion() const; + MOBase::Version version() const; MOBase::IPluginGame* getGame(const QString& gameName) const; MOBase::IModInterface* createMod(MOBase::GuessedValue& name); void modDataChanged(MOBase::IModInterface* mod); diff --git a/src/organizerproxy.cpp b/src/organizerproxy.cpp index 6edbdbab7..22a8a0234 100644 --- a/src/organizerproxy.cpp +++ b/src/organizerproxy.cpp @@ -114,9 +114,53 @@ QString OrganizerProxy::modsPath() const return m_Proxied->modsPath(); } +Version OrganizerProxy::version() const +{ + return m_Proxied->version(); +} + VersionInfo OrganizerProxy::appVersion() const { - return m_Proxied->appVersion(); + const auto version = m_Proxied->version(); + const int major = version.major(), minor = version.minor(), + subminor = version.patch(); + int subsubminor = 0; + VersionInfo::ReleaseType infoReleaseType = VersionInfo::RELEASE_FINAL; + + // make a copy + auto prereleases = version.preReleases(); + + if (!prereleases.empty()) { + // check if the first pre-release entry is a number + if (prereleases.front().index() == 0) { + subsubminor = std::get(prereleases.front()); + prereleases.erase(prereleases.begin()); + } + + if (!prereleases.empty()) { + const auto releaseType = std::get(prereleases.front()); + switch (releaseType) { + case Version::Development: + infoReleaseType = VersionInfo::RELEASE_PREALPHA; + break; + case Version::Alpha: + infoReleaseType = VersionInfo::RELEASE_ALPHA; + break; + case Version::Beta: + infoReleaseType = VersionInfo::RELEASE_BETA; + break; + case Version::ReleaseCandidate: + infoReleaseType = VersionInfo::RELEASE_CANDIDATE; + break; + default: + infoReleaseType = VersionInfo::RELEASE_PREALPHA; + } + } + + // there is no way to differentiate two pre-releases? + } + + return VersionInfo(major, minor, subminor, subsubminor, infoReleaseType); } IPluginGame* OrganizerProxy::getGame(const QString& gameName) const diff --git a/src/organizerproxy.h b/src/organizerproxy.h index fbae7cde6..2c70cb2c3 100644 --- a/src/organizerproxy.h +++ b/src/organizerproxy.h @@ -29,69 +29,67 @@ class OrganizerProxy : public MOBase::IOrganizer MOBase::IPlugin* plugin() const { return m_Plugin; } public: // IOrganizer interface - virtual MOBase::IModRepositoryBridge* createNexusBridge() const; - virtual QString profileName() const; - virtual QString profilePath() const; - virtual QString downloadsPath() const; - virtual QString overwritePath() const; - virtual QString basePath() const; - virtual QString modsPath() const; - virtual MOBase::VersionInfo appVersion() const; - virtual MOBase::IPluginGame* getGame(const QString& gameName) const; - virtual MOBase::IModInterface* createMod(MOBase::GuessedValue& name); - virtual void modDataChanged(MOBase::IModInterface* mod); - virtual QVariant persistent(const QString& pluginName, const QString& key, - const QVariant& def = QVariant()) const; - virtual void setPersistent(const QString& pluginName, const QString& key, - const QVariant& value, bool sync = true); - virtual QString pluginDataPath() const; - virtual MOBase::IModInterface* installMod(const QString& fileName, - const QString& nameSuggestion = QString()); - virtual QString resolvePath(const QString& fileName) const; - virtual QStringList listDirectories(const QString& directoryName) const; - virtual QStringList + MOBase::IModRepositoryBridge* createNexusBridge() const override; + QString profileName() const override; + QString profilePath() const override; + QString downloadsPath() const override; + QString overwritePath() const override; + QString basePath() const override; + QString modsPath() const override; + MOBase::Version version() const override; + MOBase::VersionInfo appVersion() const override; + MOBase::IPluginGame* getGame(const QString& gameName) const override; + MOBase::IModInterface* createMod(MOBase::GuessedValue& name) override; + void modDataChanged(MOBase::IModInterface* mod) override; + QVariant persistent(const QString& pluginName, const QString& key, + const QVariant& def = QVariant()) const override; + void setPersistent(const QString& pluginName, const QString& key, + const QVariant& value, bool sync = true) override; + QString pluginDataPath() const override; + MOBase::IModInterface* installMod(const QString& fileName, + const QString& nameSuggestion = QString()); + QString resolvePath(const QString& fileName) const override; + QStringList listDirectories(const QString& directoryName) const override; + QStringList findFiles(const QString& path, const std::function& filter) const override; - virtual QStringList findFiles(const QString& path, - const QStringList& globFilters) const override; - virtual QStringList getFileOrigins(const QString& fileName) const override; - virtual QList + QStringList findFiles(const QString& path, + const QStringList& globFilters) const override; + QStringList getFileOrigins(const QString& fileName) const override; + QList findFileInfos(const QString& path, const std::function& filter) const override; - virtual std::shared_ptr virtualFileTree() const override; - - virtual MOBase::IDownloadManager* downloadManager() const override; - virtual MOBase::IPluginList* pluginList() const override; - virtual MOBase::IModList* modList() const override; - virtual MOBase::IProfile* profile() const override; - virtual MOBase::IGameFeatures* gameFeatures() const override; - - virtual HANDLE startApplication(const QString& executable, - const QStringList& args = QStringList(), - const QString& cwd = "", const QString& profile = "", - const QString& forcedCustomOverwrite = "", - bool ignoreCustomOverwrite = false); - virtual bool waitForApplication(HANDLE handle, bool refresh = true, - LPDWORD exitCode = nullptr) const; - virtual void refresh(bool saveChanges); - - virtual bool onAboutToRun(const std::function& func) override; - virtual bool onAboutToRun(const std::function& func) override; - virtual bool + std::shared_ptr virtualFileTree() const override; + + MOBase::IDownloadManager* downloadManager() const override; + MOBase::IPluginList* pluginList() const override; + MOBase::IModList* modList() const override; + MOBase::IProfile* profile() const override; + MOBase::IGameFeatures* gameFeatures() const override; + + HANDLE startApplication(const QString& executable, + const QStringList& args = QStringList(), + const QString& cwd = "", const QString& profile = "", + const QString& forcedCustomOverwrite = "", + bool ignoreCustomOverwrite = false) override; + bool waitForApplication(HANDLE handle, bool refresh = true, + LPDWORD exitCode = nullptr) const override; + void refresh(bool saveChanges) override; + + bool onAboutToRun(const std::function& func) override; + bool onAboutToRun(const std::function& func) override; + bool onFinishedRun(const std::function& func) override; - virtual bool + bool onUserInterfaceInitialized(std::function const& func) override; - virtual bool onNextRefresh(const std::function& func, - bool immediateIfPossible) override; - virtual bool - onProfileCreated(std::function const& func) override; - virtual bool onProfileRenamed( - std::function const& - func) override; - virtual bool - onProfileRemoved(std::function const& func) override; - virtual bool onProfileChanged( + bool onNextRefresh(const std::function& func, + bool immediateIfPossible) override; + bool onProfileCreated(std::function const& func) override; + bool onProfileRenamed(std::function const& func) override; + bool onProfileRemoved(std::function const& func) override; + bool onProfileChanged( std::function const& func) override; // Plugin related: diff --git a/src/selfupdater.cpp b/src/selfupdater.cpp index 7762c9004..43992e707 100644 --- a/src/selfupdater.cpp +++ b/src/selfupdater.cpp @@ -69,10 +69,9 @@ using namespace MOBase; using namespace MOShared; SelfUpdater::SelfUpdater(NexusInterface* nexusInterface) - : m_Parent(nullptr), m_Interface(nexusInterface), m_Reply(nullptr), m_Attempts(3) -{ - m_MOVersion = createVersionInfo(); -} + : m_Parent(nullptr), m_MOVersion(createVersionInfo()), m_Interface(nexusInterface), + m_Reply(nullptr), m_Attempts(3) +{} SelfUpdater::~SelfUpdater() {} @@ -115,7 +114,8 @@ void SelfUpdater::testForUpdate(const Settings& settings) QJsonObject release = releaseVal.toObject(); if (!release["draft"].toBool() && (Settings::instance().usePrereleases() || !release["prerelease"].toBool())) { - auto version = VersionInfo(release["tag_name"].toString()); + auto version = Version::parse(release["tag_name"].toString(), + Version::ParseMode::MO2); mreleases[version] = release; } } @@ -132,14 +132,13 @@ void SelfUpdater::testForUpdate(const Settings& settings) m_UpdateCandidates.insert(p); } } - log::info("update available: {} -> {}", - this->m_MOVersion.displayString(3), lastKey.displayString(3)); + log::info("update available: {} -> {}", this->m_MOVersion, lastKey); emit updateAvailable(); } else if (lastKey < this->m_MOVersion) { // this could happen if the user switches from using prereleases to // stable builds. Should we downgrade? log::debug("This version is newer than the latest released one: {} -> {}", - this->m_MOVersion.displayString(3), lastKey.displayString(3)); + this->m_MOVersion, lastKey); } } }); @@ -158,7 +157,7 @@ void SelfUpdater::startUpdate() auto latestRelease = m_UpdateCandidates.begin()->second; UpdateDialog dialog(m_Parent); - dialog.setVersions(MOShared::createVersionInfo().displayString(3), + dialog.setVersions(MOShared::createVersionInfo().string(), latestRelease["tag_name"].toString()); // We concatenate release details. We only include pre-release if those are diff --git a/src/selfupdater.h b/src/selfupdater.h index 612e70238..b39340849 100644 --- a/src/selfupdater.h +++ b/src/selfupdater.h @@ -22,8 +22,6 @@ along with Mod Organizer. If not, see . #include -#include - class Archive; class NexusInterface; class PluginContainer; @@ -42,6 +40,8 @@ class QNetworkReply; class QProgressDialog; class Settings; +#include + #include "github.h" /** @@ -99,7 +99,7 @@ class SelfUpdater : public QObject /** * @return current version of Mod Organizer **/ - MOBase::VersionInfo getVersion() const { return m_MOVersion; } + MOBase::Version getVersion() const { return m_MOVersion; } signals: @@ -135,7 +135,7 @@ private slots: private: QWidget* m_Parent; - MOBase::VersionInfo m_MOVersion; + MOBase::Version m_MOVersion; NexusInterface* m_Interface; QFile m_UpdateFile; QNetworkReply* m_Reply; @@ -147,7 +147,7 @@ private slots: // Map from version to release, in decreasing order (first element is the latest // release): - using CandidatesMap = std::map>; + using CandidatesMap = std::map>; CandidatesMap m_UpdateCandidates; }; diff --git a/src/settingsdialoggeneral.cpp b/src/settingsdialoggeneral.cpp index 7acaa190b..265c9db90 100644 --- a/src/settingsdialoggeneral.cpp +++ b/src/settingsdialoggeneral.cpp @@ -111,7 +111,7 @@ void GeneralSettingsTab::addLanguages() QString languageString = QString("%1 (%2)") .arg(locale.nativeLanguageName()) - .arg(locale.nativeCountryName()); + .arg(locale.nativeTerritoryName()); if (locale.language() == QLocale::Chinese) { if (languageCode == "zh_TW") { diff --git a/src/shared/util.cpp b/src/shared/util.cpp index d3c6e2011..0d9788a29 100644 --- a/src/shared/util.cpp +++ b/src/shared/util.cpp @@ -208,10 +208,12 @@ std::wstring GetFileVersionString(const std::wstring& fileName) } } -VersionInfo createVersionInfo() +Version createVersionInfo() { VS_FIXEDFILEINFO version = GetFileVersion(env::thisProcessPath().native()); + std::optional releaseType; + if (version.dwFileFlags & VS_FF_PRERELEASE) { // Pre-release builds need annotating QString versionString = @@ -227,21 +229,29 @@ VersionInfo createVersionInfo() } } + if (!noLetters) { + // trust the string to make sense + return Version::parse(versionString, Version::ParseMode::MO2); + } + if (noLetters) { - // Default to pre-alpha when release type is unspecified - return VersionInfo( - version.dwFileVersionMS >> 16, version.dwFileVersionMS & 0xFFFF, - version.dwFileVersionLS >> 16, version.dwFileVersionLS & 0xFFFF, - VersionInfo::RELEASE_PREALPHA); + // default to development when release type is unspecified + releaseType = Version::Development; } else { - // Trust the string to make sense - return VersionInfo(versionString); } - } else { - // Non-pre-release builds just need their version numbers reading - return VersionInfo(version.dwFileVersionMS >> 16, version.dwFileVersionMS & 0xFFFF, - version.dwFileVersionLS >> 16, version.dwFileVersionLS & 0xFFFF); } + + const int major = version.dwFileVersionMS >> 16, + minor = version.dwFileVersionMS & 0xFFFF, + patch = version.dwFileVersionLS >> 16, + subpatch = version.dwFileVersionLS & 0xFFFF; + + std::vector> prereleases; + if (releaseType) { + prereleases.push_back(*releaseType); + } + + return Version(major, minor, patch, subpatch, std::move(prereleases)); } QString getUsvfsDLLVersion() diff --git a/src/shared/util.h b/src/shared/util.h index 1bc6bd47a..4764643e1 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -21,9 +21,10 @@ along with Mod Organizer. If not, see . #define UTIL_H #include -#include #include -#include + +#include +#include class Executable; @@ -48,7 +49,7 @@ std::wstring ToLowerCopy(std::wstring_view text); bool CaseInsensitiveEqual(const std::wstring& lhs, const std::wstring& rhs); -MOBase::VersionInfo createVersionInfo(); +MOBase::Version createVersionInfo(); QString getUsvfsVersionString(); void SetThisThreadName(const QString& s); diff --git a/vcpkg-configuration.json b/vcpkg-configuration.json index 0f3cef6ea..6a56decd9 100644 --- a/vcpkg-configuration.json +++ b/vcpkg-configuration.json @@ -14,7 +14,7 @@ { "kind": "git", "repository": "https://github.com/ModOrganizer2/vcpkg-registry", - "baseline": "210f6e8f6eaefd6abfdf685f7deeb6dabdc78512", + "baseline": "a1cd2ddbf1afb836419a5f1a9f70d6378fc41df2", "packages": ["mo2-*", "7zip", "usvfs"] } ] From 1bce5ca919850cea85bfe3ebcaca9a9886e705b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Capelle?= Date: Sun, 13 Oct 2024 09:51:33 +0200 Subject: [PATCH 03/16] Move mo2-cmake to standalone feature. --- vcpkg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vcpkg.json b/vcpkg.json index 4a8c5c2c4..013a13873 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -12,7 +12,6 @@ "boost-thread", "boost-uuid", "lz4", - "mo2-cmake", "mo2-libbsarch", "zlib" ], @@ -20,6 +19,7 @@ "standalone": { "description": "Build Standalone.", "dependencies": [ + "mo2-cmake", "mo2-archive", "mo2-bsatk", "mo2-esptk", From f151474275e2e06c37863122e6b49a7c3f359992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Capelle?= Date: Sun, 25 May 2025 13:50:48 +0200 Subject: [PATCH 04/16] Add pre-commit hook. --- .../ISSUE_TEMPLATE/game-support-request.md | 2 +- .pre-commit-config.yaml | 20 + LICENSE | 2 +- src/Doxyfile | 2331 ----------------- src/main.patch | 41 - src/organizer.pro | 377 --- src/organizer.qbs | 43 - src/resources/markdown.html | 2 +- src/resources/save.svg | 2 +- src/resources/word-wrap.svg | 2 +- src/shared/SConscript | 23 - src/shared/shared.pro | 70 - src/shared/shared.qbs | 20 - src/stylesheets/vs15 Dark-Green.qss | 2 +- src/stylesheets/vs15 Dark-Orange.qss | 2 +- src/stylesheets/vs15 Dark-Pink.qss | 2 +- src/stylesheets/vs15 Dark-Purple.qss | 2 +- src/stylesheets/vs15 Dark-Red.qss | 2 +- src/stylesheets/vs15 Dark-Yellow.qss | 2 +- src/stylesheets/vs15 Dark.qss | 2 +- src/tutorials/Tooltip.qml | 2 - 21 files changed, 32 insertions(+), 2919 deletions(-) create mode 100644 .pre-commit-config.yaml delete mode 100644 src/Doxyfile delete mode 100644 src/main.patch delete mode 100644 src/organizer.pro delete mode 100644 src/organizer.qbs delete mode 100644 src/shared/SConscript delete mode 100644 src/shared/shared.pro delete mode 100644 src/shared/shared.qbs diff --git a/.github/ISSUE_TEMPLATE/game-support-request.md b/.github/ISSUE_TEMPLATE/game-support-request.md index eb263f628..5c905ce2b 100644 --- a/.github/ISSUE_TEMPLATE/game-support-request.md +++ b/.github/ISSUE_TEMPLATE/game-support-request.md @@ -7,7 +7,7 @@ assignees: '' --- -**This template is useful to add basic support using https://github.com/ModOrganizer2/modorganizer-basic_games.** +**This template is useful to add basic support using https://github.com/ModOrganizer2/modorganizer-basic_games.** **If you are vaguely familiar with programming you can try following the instructions on that link to get something working yourself. If you have trouble with that please fill in this template.** diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..3103a1f1c --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,20 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-merge-conflict + - id: check-case-conflict + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v19.1.5 + hooks: + - id: clang-format + 'types_or': [c++, c] + +ci: + autofix_commit_msg: "[pre-commit.ci] Auto fixes from pre-commit.com hooks." + autofix_prs: true + autoupdate_commit_msg: "[pre-commit.ci] Pre-commit autoupdate." + autoupdate_schedule: quarterly + submodules: false diff --git a/LICENSE b/LICENSE index 20d40b6bc..94a9ed024 100644 --- a/LICENSE +++ b/LICENSE @@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. \ No newline at end of file +. diff --git a/src/Doxyfile b/src/Doxyfile deleted file mode 100644 index 34c4979a0..000000000 --- a/src/Doxyfile +++ /dev/null @@ -1,2331 +0,0 @@ -# Doxyfile 1.8.7 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "Mod Organizer" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = 1.2.0 - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "Mod Manager for various computer games" - -# With the PROJECT_LOGO tag one can specify an logo or icon that is included in -# the documentation. The maximum height of the logo should not exceed 55 pixels -# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo -# to the output directory. - -PROJECT_LOGO = E:/Documents/Projects/ModOrganizer_sf/source/organizer/splash.png - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = ../ - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a -# new page for each member. If set to NO, the documentation of a member will be -# part of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by by putting a % sign in front of the word -# or globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO these classes will be included in the various overviews. This option has -# no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the -# todo list. This list is created by putting \todo commands in the -# documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the -# test list. This list is created by putting \test commands in the -# documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES the list -# will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. Do not use file names with spaces, bibtex cannot handle them. See -# also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO doxygen will only warn about wrong or incomplete parameter -# documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. -# Note: If this tag is empty the current directory is searched. - -INPUT = . - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = NCC \ - boss_modified \ - BossDummy - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER ) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES, then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# compiled with the --with-libclang option. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = YES - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user- -# defined cascading style sheet that is included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefor more robust against future updates. -# Doxygen will copy the style sheet file to the output directory. For an example -# see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the stylesheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler ( hhc.exe). If non-empty -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated ( -# YES) or that it should be included in the master .chm file ( NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated ( -# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = YES - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using prerendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /