/*! \file piincludes.h
 * \ingroup Core
 * \~\brief
 * \~english Core includes and low-level helper functions
 * \~russian Базовые включения и низкоуровневые вспомогательные функции
 */
/*
    PIP - Platform Independent Primitives
    Minimal PIP includes
    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 PIINCLUDES_H
#define PIINCLUDES_H

#include "pibase.h"
#include "piflags.h"

#include <sys/types.h>
#ifdef PIP_STD_IOSTREAM
#  include <iostream>
#endif

class PIMutex;
class PIMutexLocker;
class PIObject;
class PIString;
class PIByteArray;
template<typename P>
class PIBinaryStream;
#ifndef MICRO_PIP
class PIInit;
#endif
class PIChar;
class PICout;
class PIWaitEvent;

struct lconv;

//! \~\ingroup Core
//! \~\brief
//! \~english Pointer to current C locale numeric settings
//! \~russian Указатель на текущие числовые настройки C locale
extern PIP_EXPORT lconv * currentLocale;

//! \~\ingroup Core
//! \~\brief
//! \~english Returns readable description of the last system error in format
//! "code <number> - <description>"
//! \~russian Возвращает читаемое описание последней системной ошибки в формате
//! "code <номер> - <описание>"
PIP_EXPORT PIString errorString();

//! \~\ingroup Core
//! \~\brief
//! \~english Clears the last system error
//! \~russian Сбрасывает последнюю системную ошибку
PIP_EXPORT void errorClear();

//! \~\ingroup Core
//! \~\brief
//! \~english Seeds the global pseudo-random generator
//! \~russian Инициализирует глобальный генератор псевдослучайных чисел
PIP_EXPORT void randomize();

//! \~\ingroup Core
//! \~\brief
//! \~english Returns next value from the global pseudo-random generator
//! \~russian Возвращает следующее значение глобального генератора псевдослучайных чисел
PIP_EXPORT int randomi();

//! \~\ingroup Core
//! \~\brief
//! \~english Returns readable PIP version string
//! \~russian Возвращает строку версии PIP
PIP_EXPORT PIString PIPVersion();

#endif // PIINCLUDES_H
