Files
pip/libs/main/system/pilibrary.h
2025-09-11 21:06:30 +03:00

87 lines
3.0 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 pilibrary.h
* \ingroup System
* \~\brief
* \~english Run-time library
* \~russian Run-time библиотека
*/
/*
PIP - Platform Independent Primitives
Dynamic library
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 PILIBRARY_H
#define PILIBRARY_H
#ifndef MICRO_PIP
# include "pistring.h"
//! \ingroup System
//! \~\brief
//! \~english Run-time library.
//! \~russian Run-time библиотека.
class PIP_EXPORT PILibrary {
public:
//! \~english Constructs %PILibrary and load if "path_" not empty
//! \~russian Создает %PILibrary и загружает если "path_" не пустой
PILibrary(const PIString & path_ = PIString());
//! \~english Destroy %PILibrary, unload if library was loaded
//! \~russian Уничтожает %PILibrary и выгружает библиотеку, если она была загружена
~PILibrary();
//! \~english Load library with relative or absolute path "path_"
//! \~russian Загружает библиотеку по относительному или абсолютному пути "path_"
bool load(const PIString & path_);
//! \~english Load library with \a path() path
//! \~russian Загружает библиотеку по пути \a path()
bool load();
//! \~english Unload library if it was loaded
//! \~russian Выгружает библиотеку, если она была загружена
void unload();
//! \~english Obtain exported library method with name "symbol"
//! \~russian Получает экспортированный метод библиотеки с именем "symbol"
void * resolve(const char * symbol);
//! \~english Returns if library successfully loaded
//! \~russian Возвращает успешно ли загружена библиотека
bool isLoaded() const;
//! \~english Returns library path
//! \~russian Возвращает путь к библиотеке
PIString path() const { return libpath; }
//! \~english Returns last occured error in human-readable format
//! \~russian Возвращает последнюю ошибку в читаемом виде
PIString lastError() const { return liberror; }
private:
bool loadInternal();
void getLastError();
PRIVATE_DECLARATION(PIP_EXPORT)
PIString libpath, liberror;
};
#endif // MICRO_PIP
#endif // PILIBRARY_H