/*! \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 . */ #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