/*
	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
#include <atomic>


class PIMutex;
class PIMutexLocker;
class PIObject;
class PIString;
class PIByteArray;
class PIInit;
class PIChar;
class PICout;

struct lconv;

extern PIP_EXPORT lconv * currentLocale;

/*! \fn errorString()
 * \brief Return readable error description in format "code <number> - <description>" */
PIP_EXPORT PIString errorString();

PIP_EXPORT void errorClear();

PIP_EXPORT void piqsort(void* base, size_t num, size_t size, int (*compar)(const void*,const void*));

PIP_EXPORT void randomize();
PIP_EXPORT int randomi();

/// Return readable version of PIP
PIP_EXPORT PIString PIPVersion();

#endif // PIINCLUDES_H
