doc and brush
This commit is contained in:
@@ -534,18 +534,41 @@ inline uint piHash(const ldouble & v) {
|
||||
return piHashData((const uchar *)&v, sizeof(v));
|
||||
}
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Call \b delete on each "container" element.
|
||||
//! \~russian Вызывает \b delete на каждый элемент "container".
|
||||
template<typename T>
|
||||
inline void piDeleteAll(const T & container) {
|
||||
for (auto i: container) {
|
||||
delete i;
|
||||
}
|
||||
}
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Call \b delete on each element of
|
||||
//! [C++11 initializer list](https://en.cppreference.com/w/cpp/utility/initializer_list).
|
||||
//! \~russian Вызывает \b delete на каждый элемент
|
||||
//! [списка инициализации C++11](https://ru.cppreference.com/w/cpp/utility/initializer_list).
|
||||
template<typename T>
|
||||
inline void piDeleteAll(std::initializer_list<T> container) {
|
||||
for (auto i: container) {
|
||||
delete i;
|
||||
}
|
||||
}
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Call \b delete on each "container" element and clear container.
|
||||
//! \~russian Вызывает \b delete на каждый элемент "container" и очищает контейнер.
|
||||
template<typename T>
|
||||
inline void piDeleteAllAndClear(T & container) {
|
||||
piDeleteAll(container);
|
||||
container.clear();
|
||||
}
|
||||
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Call \b delete if "pointer" is not null and set it to null. Returns if deleted.
|
||||
//! \~russian Вызывает \b delete на "pointer" если он не нулевой и устанавливает его в ноль. Возвращает было ли удаление.
|
||||
template<typename T>
|
||||
inline bool piDeleteSafety(T *& pointer) {
|
||||
if (!pointer) return false;
|
||||
@@ -593,12 +616,48 @@ inline bool piDeleteSafety(T *& pointer) {
|
||||
#define piLetobef piLetobe<float>
|
||||
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Class for executing a function upon scope exit
|
||||
//! \~russian Класс для выполнения функции при выходе из области видимости
|
||||
//! \~\details
|
||||
//! \~english Example
|
||||
//! \~russian Пример
|
||||
//! \~\code
|
||||
//! bool yourFunc() {
|
||||
//! PIScopeExitCall error_call([]() { piCout << "Error!"; });
|
||||
//! ...
|
||||
//! if (!good0) {
|
||||
//! ...
|
||||
//! return false;
|
||||
//! }
|
||||
//! if (!good1) {
|
||||
//! ...
|
||||
//! return false;
|
||||
//! }
|
||||
//! ...
|
||||
//! error_call.cancel();
|
||||
//! return true;
|
||||
//! }
|
||||
//! \endcode
|
||||
//! \~english In this example "Error!" will be printed on every \b false function return.
|
||||
//! \~russian В данном примере будет выведен "Error!" при каждом \b false возврате из функции.
|
||||
class PIP_EXPORT PIScopeExitCall {
|
||||
public:
|
||||
//! \~\brief
|
||||
//! \~english Constructor that takes a function to execute
|
||||
//! \~russian Конструктор, который принимает функцию для выполнения
|
||||
explicit PIScopeExitCall(std::function<void()> f): func(f) {}
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Destructor that executes the function if it exists
|
||||
//! \~russian Деструктор, который выполняет функцию, если она существует
|
||||
~PIScopeExitCall() {
|
||||
if (func) func();
|
||||
}
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Method for canceling the function
|
||||
//! \~russian Метод для отмены функции
|
||||
void cancel() { func = nullptr; }
|
||||
|
||||
private:
|
||||
|
||||
@@ -54,18 +54,14 @@ extern PIP_EXPORT lconv * currentLocale;
|
||||
|
||||
//! \ingroup Core
|
||||
//! \brief
|
||||
//! \~english
|
||||
//! Return readable error description in format "code <number> - <description>"
|
||||
//! \~russian
|
||||
//! Возвращает читаемое описание ошибки в формате "code <номер> - <описание>"
|
||||
//! \~english Return readable error description in format "code <number> - <description>"
|
||||
//! \~russian Возвращает читаемое описание ошибки в формате "code <номер> - <описание>"
|
||||
PIP_EXPORT PIString errorString();
|
||||
|
||||
//! \ingroup Core
|
||||
//! \brief
|
||||
//! \~english
|
||||
//! Reset last error
|
||||
//! \~russian
|
||||
//! Сброс последней ошибки
|
||||
//! \~english Reset last error
|
||||
//! \~russian Сброс последней ошибки
|
||||
PIP_EXPORT void errorClear();
|
||||
|
||||
PIP_EXPORT void randomize();
|
||||
|
||||
@@ -92,10 +92,8 @@ void __sighandler__(PISignals::Signal s) {
|
||||
|
||||
|
||||
PIInit::PIInit() {
|
||||
file_charset = 0;
|
||||
PISystemInfo * sinfo = PISystemInfo::instance();
|
||||
sinfo->execDateTime = PIDateTime::current();
|
||||
setFileCharset("UTF-8");
|
||||
# ifndef ANDROID
|
||||
PISignals::setSlot(__sighandler__);
|
||||
PISignals::grabSignals(PISignals::UserDefined1);
|
||||
@@ -266,8 +264,6 @@ PIInit::PIInit() {
|
||||
|
||||
|
||||
PIInit::~PIInit() {
|
||||
if (file_charset) delete[] file_charset;
|
||||
file_charset = 0;
|
||||
PIResourcesStorage::instance()->clear();
|
||||
# ifdef WINDOWS
|
||||
WSACleanup();
|
||||
@@ -365,17 +361,6 @@ PIStringList PIInit::buildOptions() {
|
||||
}
|
||||
|
||||
|
||||
void PIInit::setFileCharset(const char * charset) {
|
||||
if (file_charset) delete file_charset;
|
||||
file_charset = 0;
|
||||
if (charset) {
|
||||
file_charset = new char[1024];
|
||||
memset(file_charset, 0, 1024);
|
||||
strcpy(file_charset, charset);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool PIInit::fileExists(const PIString & p) {
|
||||
FILE * f = fopen(p.data(), "r");
|
||||
if (f == 0) return false;
|
||||
|
||||
@@ -82,10 +82,8 @@ public:
|
||||
|
||||
private:
|
||||
explicit PIInit();
|
||||
void setFileCharset(const char * charset);
|
||||
bool fileExists(const PIString & p);
|
||||
PRIVATE_DECLARATION(PIP_EXPORT)
|
||||
char * file_charset;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
class PIP_EXPORT PIObject {
|
||||
#ifndef MICRO_PIP
|
||||
friend class PIObjectManager;
|
||||
friend void dumpApplication(bool);
|
||||
friend PIP_EXPORT void dumpApplication(bool);
|
||||
friend class PIIntrospection;
|
||||
#endif
|
||||
typedef PIObject __PIObject__;
|
||||
|
||||
Reference in New Issue
Block a user