Files
pip/libs/main/core/piinit.h
2026-03-07 17:00:45 +03:00

119 lines
5.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*! \file piinit.h
* \ingroup Core
* \~\brief
* \~english Library initialization
* \~russian Инициализация библиотеки
*/
/*
PIP - Platform Independent Primitives
Initialization
Ivan Pelipenko peri4ko@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PIINIT_H
#define PIINIT_H
#include "pibase.h"
#ifndef MICRO_PIP
# include "piincludes.h"
class PIFile;
class PIStringList;
//! \ingroup Core
//! \~\brief
//! \~english Internal helper that owns the global %PIInit instance.
//! \~russian Внутренний помощник, владеющий глобальным экземпляром %PIInit.
class PIP_EXPORT __PIInit_Initializer__ {
public:
//! \~english Creates %PIInit on the first initializer instance.
//! \~russian Создает %PIInit при создании первого экземпляра инициализатора.
__PIInit_Initializer__();
//! \~english Destroys %PIInit after the last initializer instance.
//! \~russian Уничтожает %PIInit после удаления последнего экземпляра инициализатора.
~__PIInit_Initializer__();
//! \~english Number of active initializer instances.
//! \~russian Количество активных экземпляров инициализатора.
static int count_;
//! \~english Current global %PIInit instance.
//! \~russian Текущий глобальный экземпляр %PIInit.
static PIInit * __instance__;
};
//! \ingroup Core
//! \~\brief
//! \~english Translation unit helper that keeps %PIInit initialized.
//! \~russian Вспомогательный объект единицы трансляции, поддерживающий инициализацию %PIInit.
static __PIInit_Initializer__ __piinit_initializer__;
//! \ingroup Core
//! \~\brief
//! \~english Library initialization singleton and build information access point.
//! \~russian Синглтон инициализации библиотеки и точка доступа к сведениям о сборке.
class PIP_EXPORT PIInit {
friend class __PIInit_Initializer__;
friend class PIFile;
public:
//! \~english Finalizes library-wide initialization resources.
//! \~russian Освобождает ресурсы глобальной инициализации библиотеки.
~PIInit();
//! \ingroup Core
//! \~english Build options enabled in the current PIP library
//! \~russian Опции, включенные в текущей сборке библиотеки PIP
enum BuildOption {
boICU /*! \~english Unicode support by ICU \~russian Поддержка юникода через ICU */ = 0x01,
boUSB /*! \~english USB support \~russian Поддержка USB */ = 0x02,
boCrypt /*! \~english Crypt support \~russian Поддержка шифрования */ = 0x08,
boIntrospection /*! \~english Introspection \~russian Интроспекция */ = 0x010,
boFFTW /*! \~english FFTW3 support \~russian Поддержка FFTW3 */ = 0x40,
boCompress /*! \~english Zlib compression support \~russian Поддержка сжатия Zlib */ = 0x80,
boOpenCL /*! \~english OpenCL support \~russian Поддержка OpenCL */ = 0x100,
boCloud /*! \~english PICloud transport support \~russian Поддержка облачного транспорта PICloud */ = 0x200,
boConsole /*! \~english Console graphics support \~russian Поддержка графики в консоли */ = 0x400,
};
//! \~english Returns current global %PIInit instance.
//! \~russian Возвращает текущий глобальный экземпляр %PIInit.
static PIInit * instance() { return __PIInit_Initializer__::__instance__; }
//! \ingroup Core
//! \~english Returns whether build option was enabled
//! \~russian Возвращает, была ли опция включена при сборке
static bool isBuildOptionEnabled(BuildOption o);
//! \ingroup Core
//! \~english Returns enabled build options as string list
//! \~russian Возвращает включенные опции сборки в виде списка строк
static PIStringList buildOptions();
private:
explicit PIInit();
bool fileExists(const PIString & p);
PRIVATE_DECLARATION(PIP_EXPORT)
};
#endif // MICRO_PIP
#endif // PIINIT_H