// Generated by "PIP Code model generator" 29.04.2014 18:03:05

#include <string.h>
#include "test.h"

using namespace PICodeInfo;

#include "piusb.h"
#include "picli.h"
#include "pitime.h"
#include "pipeer.h"
#include "pimath.h"
#include "pifile.h"
#include "pichar.h"
#include "pitimer.h"
#include "pimutex.h"
#include "picodec.h"
#include "pithread.h"
#include "pistring.h"
#include "piserial.h"
#include "piobject.h"
#include "piconfig.h"
#include "pivariant.h"
#include "pisignals.h"
#include "piprocess.h"
#include "pimonitor.h"
#include "piconsole.h"
#include "piprotocol.h"
#include "piiodevice.h"
#include "piincludes.h"
#include "piethernet.h"
#include "pibitarray.h"
#include "pievaluator.h"
#include "pibytearray.h"
#include "pibinarylog.h"
#include "picollection.h"
#include "pikbdlistener.h"
#include "pidiagnostics.h"
#include "pisystemmonitor.h"
#include "pimultiprotocol.h"
#include "pipacketextractor.h"


PIVariant execFunction(PIMutex * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "lock") == 0) {object->lock(); return PIVariant();}
	if (strcmp(function, "unlock") == 0) {object->unlock(); return PIVariant();}
	if (strcmp(function, "tryLock") == 0) {return PIVariant::fromValue<bool >(object->tryLock());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIMutex\"!";
	return PIVariant();
}

PIVariant execFunction(PIBitArray * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "bitSize") == 0) {return PIVariant::fromValue<uint >(object->bitSize());}
	if (strcmp(function, "byteSize") == 0) {return PIVariant::fromValue<uint >(object->byteSize());}
	if (strcmp(function, "data") == 0) {return PIVariant::fromValue<uchar * >(object->data());}
	if (strcmp(function, "toUChar") == 0) {return PIVariant::fromValue<uchar >(object->toUChar());}
	if (strcmp(function, "toUShort") == 0) {return PIVariant::fromValue<ushort >(object->toUShort());}
	if (strcmp(function, "toUInt") == 0) {return PIVariant::fromValue<uint >(object->toUInt());}
	if (strcmp(function, "toULong") == 0) {return PIVariant::fromValue<ulong >(object->toULong());}
	if (strcmp(function, "toULLong") == 0) {return PIVariant::fromValue<ullong >(object->toULLong());}
	if (strcmp(function, "at") == 0) {return PIVariant::fromValue<bool >(object->at(arg0.toValue<uint >()));}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIBitArray\"!";
	return PIVariant();
}

PIVariant execFunction(PIHuffman * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "compress") == 0) {return PIVariant::fromValue<PIVector<uchar> >(object->compress(arg0.toValue<PIVector<uchar> >()));}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIHuffman\"!";
	return PIVariant();
}

PIVariant execFunction(PIByteArray * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "resized") == 0) {return PIVariant::fromValue<PIByteArray >(object->resized(arg0.toValue<int >()));}
	if (strcmp(function, "toBase64") == 0) {return PIVariant::fromValue<PIByteArray >(object->toBase64());}
	if (strcmp(function, "fromBase64") == 0) {return PIVariant::fromValue<PIByteArray >(object->fromBase64());}
	if (strcmp(function, "compressedRLE") == 0) {return PIVariant::fromValue<PIByteArray >(object->compressedRLE(arg0.toValue<uchar >()));}
	if (strcmp(function, "decompressedRLE") == 0) {return PIVariant::fromValue<PIByteArray >(object->decompressedRLE(arg0.toValue<uchar >()));}
	if (strcmp(function, "checksumPlain8") == 0) {return PIVariant::fromValue<uchar >(object->checksumPlain8());}
	if (strcmp(function, "checksumPlain32") == 0) {return PIVariant::fromValue<uint >(object->checksumPlain32());}
	if (strcmp(function, "checksumCRC8") == 0) {return PIVariant::fromValue<uchar >(object->checksumCRC8());}
	if (strcmp(function, "checksumCRC16") == 0) {return PIVariant::fromValue<ushort >(object->checksumCRC16());}
	if (strcmp(function, "checksumCRC32") == 0) {return PIVariant::fromValue<uint >(object->checksumCRC32());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIByteArray\"!";
	return PIVariant();
}

PIVariant execFunction(PIChar * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "isDigit") == 0) {return PIVariant::fromValue<bool >(object->isDigit());}
	if (strcmp(function, "isHex") == 0) {return PIVariant::fromValue<bool >(object->isHex());}
	if (strcmp(function, "isGraphical") == 0) {return PIVariant::fromValue<bool >(object->isGraphical());}
	if (strcmp(function, "isControl") == 0) {return PIVariant::fromValue<bool >(object->isControl());}
	if (strcmp(function, "isLower") == 0) {return PIVariant::fromValue<bool >(object->isLower());}
	if (strcmp(function, "isUpper") == 0) {return PIVariant::fromValue<bool >(object->isUpper());}
	if (strcmp(function, "isPrint") == 0) {return PIVariant::fromValue<bool >(object->isPrint());}
	if (strcmp(function, "isSpace") == 0) {return PIVariant::fromValue<bool >(object->isSpace());}
	if (strcmp(function, "isAlpha") == 0) {return PIVariant::fromValue<bool >(object->isAlpha());}
	if (strcmp(function, "isAscii") == 0) {return PIVariant::fromValue<bool >(object->isAscii());}
	if (strcmp(function, "toInt") == 0) {return PIVariant::fromValue<int >(object->toInt());}
	if (strcmp(function, "toWCharPtr") == 0) {return PIVariant::fromValue<const wchar_t * >(object->toWCharPtr());}
	if (strcmp(function, "toCharPtr") == 0) {return PIVariant::fromValue<const char * >(object->toCharPtr());}
	if (strcmp(function, "toWChar") == 0) {return PIVariant::fromValue<wchar_t >(object->toWChar());}
	if (strcmp(function, "toAscii") == 0) {return PIVariant::fromValue<char >(object->toAscii());}
	if (strcmp(function, "unicode16Code") == 0) {return PIVariant::fromValue<int >(object->unicode16Code());}
	if (strcmp(function, "toUpper") == 0) {return PIVariant::fromValue<PIChar >(object->toUpper());}
	if (strcmp(function, "toLower") == 0) {return PIVariant::fromValue<PIChar >(object->toLower());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIChar\"!";
	return PIVariant();
}

PIVariant execFunction(PIString * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "mid") == 0) {return PIVariant::fromValue<PIString >(object->mid(arg0.toValue<const int >(), arg1.toValue<const int >()));}
	if (strcmp(function, "left") == 0) {return PIVariant::fromValue<PIString >(object->left(arg0.toValue<const int >()));}
	if (strcmp(function, "right") == 0) {return PIVariant::fromValue<PIString >(object->right(arg0.toValue<const int >()));}
	if (strcmp(function, "trimmed") == 0) {return PIVariant::fromValue<PIString >(object->trimmed());}
	if (strcmp(function, "replaced") == 0) {return PIVariant::fromValue<PIString >(object->replaced(arg0.toValue<const int >(), arg1.toValue<const int >(), arg2.toValue<PIString >()));}
	if (strcmp(function, "replaced") == 0) {return PIVariant::fromValue<PIString >(object->replaced(arg0.toValue<PIString >(), arg1.toValue<PIString >(), arg2.toValue<bool * >()));}
	if (strcmp(function, "replaceAll") == 0) {return PIVariant::fromValue<PIString >(object->replaceAll(arg0.toValue<PIString >(), arg1.toValue<PIString >()));}
	if (strcmp(function, "reversed") == 0) {return PIVariant::fromValue<PIString >(object->reversed());}
	if (strcmp(function, "takeMid") == 0) {return PIVariant::fromValue<PIString >(object->takeMid(arg0.toValue<const int >(), arg1.toValue<const int >()));}
	if (strcmp(function, "takeLeft") == 0) {return PIVariant::fromValue<PIString >(object->takeLeft(arg0.toValue<const int >()));}
	if (strcmp(function, "takeRight") == 0) {return PIVariant::fromValue<PIString >(object->takeRight(arg0.toValue<const int >()));}
	if (strcmp(function, "takeSymbol") == 0) {return PIVariant::fromValue<PIString >(object->takeSymbol());}
	if (strcmp(function, "takeWord") == 0) {return PIVariant::fromValue<PIString >(object->takeWord());}
	if (strcmp(function, "takeCWord") == 0) {return PIVariant::fromValue<PIString >(object->takeCWord());}
	if (strcmp(function, "takeLine") == 0) {return PIVariant::fromValue<PIString >(object->takeLine());}
	if (strcmp(function, "takeNumber") == 0) {return PIVariant::fromValue<PIString >(object->takeNumber());}
	if (strcmp(function, "takeRange") == 0) {return PIVariant::fromValue<PIString >(object->takeRange(arg0.toValue<PIChar >(), arg1.toValue<PIChar >(), arg2.toValue<PIChar >()));}
	if (strcmp(function, "lengthAscii") == 0) {return PIVariant::fromValue<int >(object->lengthAscii());}
	if (strcmp(function, "data") == 0) {return PIVariant::fromValue<const char * >(object->data());}
	if (strcmp(function, "stdString") == 0) {return PIVariant::fromValue<std::string >(object->stdString());}
	if (strcmp(function, "toByteArray") == 0) {return PIVariant::fromValue<PIByteArray >(object->toByteArray());}
	if (strcmp(function, "split") == 0) {return PIVariant::fromValue<PIStringList >(object->split(arg0.toValue<PIString >()));}
	if (strcmp(function, "toUpperCase") == 0) {return PIVariant::fromValue<PIString >(object->toUpperCase());}
	if (strcmp(function, "toLowerCase") == 0) {return PIVariant::fromValue<PIString >(object->toLowerCase());}
	if (strcmp(function, "toNativeDecimalPoints") == 0) {return PIVariant::fromValue<PIString >(object->toNativeDecimalPoints());}
	if (strcmp(function, "find") == 0) {return PIVariant::fromValue<int >(object->find(arg0.toValue<const char >(), arg1.toValue<const int >()));}
	if (strcmp(function, "find") == 0) {return PIVariant::fromValue<int >(object->find(arg0.toValue<const PIString >(), arg1.toValue<const int >()));}
	if (strcmp(function, "find") == 0) {return PIVariant::fromValue<int >(object->find(arg0.toValue<const char * >(), arg1.toValue<const int >()));}
	if (strcmp(function, "find") == 0) {return PIVariant::fromValue<int >(object->find(arg0.toValue<const string >(), arg1.toValue<const int >()));}
	if (strcmp(function, "findLast") == 0) {return PIVariant::fromValue<int >(object->findLast(arg0.toValue<const char >(), arg1.toValue<const int >()));}
	if (strcmp(function, "findLast") == 0) {return PIVariant::fromValue<int >(object->findLast(arg0.toValue<const PIString >(), arg1.toValue<const int >()));}
	if (strcmp(function, "findLast") == 0) {return PIVariant::fromValue<int >(object->findLast(arg0.toValue<const char * >(), arg1.toValue<const int >()));}
	if (strcmp(function, "findLast") == 0) {return PIVariant::fromValue<int >(object->findLast(arg0.toValue<const string >(), arg1.toValue<const int >()));}
	if (strcmp(function, "findWord") == 0) {return PIVariant::fromValue<int >(object->findWord(arg0.toValue<PIString >(), arg1.toValue<const int >()));}
	if (strcmp(function, "findCWord") == 0) {return PIVariant::fromValue<int >(object->findCWord(arg0.toValue<PIString >(), arg1.toValue<const int >()));}
	if (strcmp(function, "startsWith") == 0) {return PIVariant::fromValue<bool >(object->startsWith(arg0.toValue<PIString >()));}
	if (strcmp(function, "endsWith") == 0) {return PIVariant::fromValue<bool >(object->endsWith(arg0.toValue<PIString >()));}
	if (strcmp(function, "length") == 0) {return PIVariant::fromValue<int >(object->length());}
	if (strcmp(function, "isEmpty") == 0) {return PIVariant::fromValue<bool >(object->isEmpty());}
	if (strcmp(function, "toBool") == 0) {return PIVariant::fromValue<bool >(object->toBool());}
	if (strcmp(function, "toChar") == 0) {return PIVariant::fromValue<char >(object->toChar());}
	if (strcmp(function, "toShort") == 0) {return PIVariant::fromValue<short >(object->toShort(arg0.toValue<int >(), arg1.toValue<bool * >()));}
	if (strcmp(function, "toUShort") == 0) {return PIVariant::fromValue<ushort >(object->toUShort(arg0.toValue<int >(), arg1.toValue<bool * >()));}
	if (strcmp(function, "toInt") == 0) {return PIVariant::fromValue<int >(object->toInt(arg0.toValue<int >(), arg1.toValue<bool * >()));}
	if (strcmp(function, "toUInt") == 0) {return PIVariant::fromValue<uint >(object->toUInt(arg0.toValue<int >(), arg1.toValue<bool * >()));}
	if (strcmp(function, "toLong") == 0) {return PIVariant::fromValue<long >(object->toLong(arg0.toValue<int >(), arg1.toValue<bool * >()));}
	if (strcmp(function, "toULong") == 0) {return PIVariant::fromValue<ulong >(object->toULong(arg0.toValue<int >(), arg1.toValue<bool * >()));}
	if (strcmp(function, "toLLong") == 0) {return PIVariant::fromValue<llong >(object->toLLong(arg0.toValue<int >(), arg1.toValue<bool * >()));}
	if (strcmp(function, "toULLong") == 0) {return PIVariant::fromValue<ullong >(object->toULLong(arg0.toValue<int >(), arg1.toValue<bool * >()));}
	if (strcmp(function, "toFloat") == 0) {return PIVariant::fromValue<float >(object->toFloat());}
	if (strcmp(function, "toDouble") == 0) {return PIVariant::fromValue<double >(object->toDouble());}
	if (strcmp(function, "toLDouble") == 0) {return PIVariant::fromValue<ldouble >(object->toLDouble());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIString\"!";
	return PIVariant();
}

PIVariant execFunction(PIStringList * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "join") == 0) {return PIVariant::fromValue<PIString >(object->join(arg0.toValue<PIString >()));}
	if (strcmp(function, "contentSize") == 0) {return PIVariant::fromValue<uint >(object->contentSize());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIStringList\"!";
	return PIVariant();
}

PIVariant execFunction(PISystemTime * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "toSeconds") == 0) {return PIVariant::fromValue<double >(object->toSeconds());}
	if (strcmp(function, "toMilliseconds") == 0) {return PIVariant::fromValue<double >(object->toMilliseconds());}
	if (strcmp(function, "toMicroseconds") == 0) {return PIVariant::fromValue<double >(object->toMicroseconds());}
	if (strcmp(function, "toNanoseconds") == 0) {return PIVariant::fromValue<double >(object->toNanoseconds());}
	if (strcmp(function, "sleep") == 0) {object->sleep(); return PIVariant();}
	if (strcmp(function, "abs") == 0) {return PIVariant::fromValue<PISystemTime >(object->abs());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PISystemTime\"!";
	return PIVariant();
}

PIVariant execFunction(PITime * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "toString") == 0) {return PIVariant::fromValue<PIString >(object->toString(arg0.toValue<PIString >()));}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in struct \"PITime\"!";
	return PIVariant();
}

PIVariant execFunction(PIDate * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "toString") == 0) {return PIVariant::fromValue<PIString >(object->toString(arg0.toValue<PIString >()));}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in struct \"PIDate\"!";
	return PIVariant();
}

PIVariant execFunction(PIDateTime * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "normalized") == 0) {return PIVariant::fromValue<PIDateTime >(object->normalized());}
	if (strcmp(function, "normalize") == 0) {object->normalize(); return PIVariant();}
	if (strcmp(function, "toString") == 0) {return PIVariant::fromValue<PIString >(object->toString(arg0.toValue<PIString >()));}
	if (strcmp(function, "toSecondSinceEpoch") == 0) {return PIVariant::fromValue<time_t >(object->toSecondSinceEpoch());}
	if (strcmp(function, "toSystemTime") == 0) {return PIVariant::fromValue<PISystemTime >(object->toSystemTime());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in struct \"PIDateTime\"!";
	return PIVariant();
}

PIVariant execFunction(Solver * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "solve") == 0) {object->solve(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "fromTF") == 0) {object->fromTF(arg0.toValue<TransferFunction >()); return PIVariant();}
	if (strcmp(function, "setMethod") == 0) {object->setMethod(arg0.toValue<Solver::Method >()); return PIVariant();}
	if (strcmp(function, "setTime") == 0) {object->setTime(arg0.toValue<double >()); return PIVariant();}
	if (strcmp(function, "solveEyler1") == 0) {object->solveEyler1(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "solveEyler2") == 0) {object->solveEyler2(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "solveRK4") == 0) {object->solveRK4(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "solveABM2") == 0) {object->solveABM2(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "solveABM3") == 0) {object->solveABM3(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "solveABM4") == 0) {object->solveABM4(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "solvePA") == 0) {object->solvePA(arg0.toValue<double >(), arg1.toValue<double >(), arg2.toValue<uint >()); return PIVariant();}
	if (strcmp(function, "solvePA2") == 0) {object->solvePA2(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "solvePA3") == 0) {object->solvePA3(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "solvePA4") == 0) {object->solvePA4(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "solvePA5") == 0) {object->solvePA5(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"Solver\"!";
	return PIVariant();
}

PIVariant execFunction(PIFFT * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "calcFFT") == 0) {return PIVariant::fromValue<PIVector<complexd> * >(object->calcFFT(arg0.toValue<PIVector<complexd> >()));}
	if (strcmp(function, "calcFFT") == 0) {return PIVariant::fromValue<PIVector<complexd> * >(object->calcFFT(arg0.toValue<PIVector<double> >()));}
	if (strcmp(function, "calcFFTinverse") == 0) {return PIVariant::fromValue<PIVector<complexd> * >(object->calcFFTinverse(arg0.toValue<PIVector<complexd> >()));}
	if (strcmp(function, "calcHilbert") == 0) {return PIVariant::fromValue<PIVector<complexd> * >(object->calcHilbert(arg0.toValue<PIVector<double> >()));}
	if (strcmp(function, "getAmplitude") == 0) {return PIVariant::fromValue<PIVector<double> >(object->getAmplitude());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIFFT\"!";
	return PIVariant();
}

PIVariant execFunction(PIVariant * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<const char * >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<const bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<const char >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<const uchar >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<const short >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<const ushort >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<uint >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<long >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<ulong >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<llong >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<ullong >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<float >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<double >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<ldouble >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<complexd >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<complexld >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIBitArray >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIByteArray >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIStringList >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PITime >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIDate >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIDateTime >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PISystemTime >()); return PIVariant();}
	if (strcmp(function, "toBool") == 0) {return PIVariant::fromValue<bool >(object->toBool());}
	if (strcmp(function, "toInt") == 0) {return PIVariant::fromValue<int >(object->toInt());}
	if (strcmp(function, "toLLong") == 0) {return PIVariant::fromValue<llong >(object->toLLong());}
	if (strcmp(function, "toFloat") == 0) {return PIVariant::fromValue<float >(object->toFloat());}
	if (strcmp(function, "toDouble") == 0) {return PIVariant::fromValue<double >(object->toDouble());}
	if (strcmp(function, "toLDouble") == 0) {return PIVariant::fromValue<ldouble >(object->toLDouble());}
	if (strcmp(function, "toComplexd") == 0) {return PIVariant::fromValue<complexd >(object->toComplexd());}
	if (strcmp(function, "toComplexld") == 0) {return PIVariant::fromValue<complexld >(object->toComplexld());}
	if (strcmp(function, "toTime") == 0) {return PIVariant::fromValue<PITime >(object->toTime());}
	if (strcmp(function, "toDate") == 0) {return PIVariant::fromValue<PIDate >(object->toDate());}
	if (strcmp(function, "toDateTime") == 0) {return PIVariant::fromValue<PIDateTime >(object->toDateTime());}
	if (strcmp(function, "toSystemTime") == 0) {return PIVariant::fromValue<PISystemTime >(object->toSystemTime());}
	if (strcmp(function, "toString") == 0) {return PIVariant::fromValue<PIString >(object->toString());}
	if (strcmp(function, "toStringList") == 0) {return PIVariant::fromValue<PIStringList >(object->toStringList());}
	if (strcmp(function, "toBitArray") == 0) {return PIVariant::fromValue<PIBitArray >(object->toBitArray());}
	if (strcmp(function, "toByteArray") == 0) {return PIVariant::fromValue<PIByteArray >(object->toByteArray());}
	if (strcmp(function, "type") == 0) {return PIVariant::fromValue<PIVariant::Type >(object->type());}
	if (strcmp(function, "typeName") == 0) {return PIVariant::fromValue<PIString >(object->typeName());}
	if (strcmp(function, "isValid") == 0) {return PIVariant::fromValue<bool >(object->isValid());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIVariant\"!";
	return PIVariant();
}

PIVariant execFunction(PIObject * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "name") == 0) {return PIVariant::fromValue<PIString >(object->name());}
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "debug") == 0) {return PIVariant::fromValue<bool >(object->debug());}
	if (strcmp(function, "setName") == 0) {object->setName(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setDebug") == 0) {object->setDebug(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "properties") == 0) {return PIVariant::fromValue<PIMap<PIString, PIVariant> >(object->properties());}
	if (strcmp(function, "propertiesCount") == 0) {return PIVariant::fromValue<int >(object->propertiesCount());}
	if (strcmp(function, "property") == 0) {return PIVariant::fromValue<PIVariant >(object->property(arg0.toValue<PIString >()));}
	if (strcmp(function, "setProperty") == 0) {object->setProperty(arg0.toValue<PIString >(), arg1.toValue<PIVariant >()); return PIVariant();}
	if (strcmp(function, "isPropertyExists") == 0) {return PIVariant::fromValue<bool >(object->isPropertyExists(arg0.toValue<PIString >()));}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIObject\"!";
	return PIVariant();
}

PIVariant execFunction(PIThread * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "start") == 0) {return PIVariant::fromValue<bool >(object->start());}
	if (strcmp(function, "start") == 0) {return PIVariant::fromValue<bool >(object->start(arg0.toValue<int >()));}
	if (strcmp(function, "start") == 0) {return PIVariant::fromValue<bool >(object->start(arg0.toValue<ThreadFunc >()));}
	if (strcmp(function, "start") == 0) {return PIVariant::fromValue<bool >(object->start(arg0.toValue<ThreadFunc >(), arg1.toValue<int >()));}
	if (strcmp(function, "startOnce") == 0) {return PIVariant::fromValue<bool >(object->startOnce());}
	if (strcmp(function, "startOnce") == 0) {return PIVariant::fromValue<bool >(object->startOnce(arg0.toValue<ThreadFunc >()));}
	if (strcmp(function, "stop") == 0) {object->stop(); return PIVariant();}
	if (strcmp(function, "stop") == 0) {object->stop(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "terminate") == 0) {object->terminate(); return PIVariant();}
	if (strcmp(function, "setData") == 0) {object->setData(arg0.toValue<void * >()); return PIVariant();}
	if (strcmp(function, "setSlot") == 0) {object->setSlot(arg0.toValue<ThreadFunc >()); return PIVariant();}
	if (strcmp(function, "setPriority") == 0) {object->setPriority(arg0.toValue<PIThread::Priority >()); return PIVariant();}
	if (strcmp(function, "priority") == 0) {return PIVariant::fromValue<PIThread::Priority >(object->priority());}
	if (strcmp(function, "isRunning") == 0) {return PIVariant::fromValue<bool >(object->isRunning());}
	if (strcmp(function, "isStopping") == 0) {return PIVariant::fromValue<bool >(object->isStopping());}
	if (strcmp(function, "waitForStart") == 0) {return PIVariant::fromValue<bool >(object->waitForStart());}
	if (strcmp(function, "waitForStart") == 0) {return PIVariant::fromValue<bool >(object->waitForStart(arg0.toValue<int >()));}
	if (strcmp(function, "waitForFinish") == 0) {return PIVariant::fromValue<bool >(object->waitForFinish());}
	if (strcmp(function, "waitForFinish") == 0) {return PIVariant::fromValue<bool >(object->waitForFinish(arg0.toValue<int >()));}
	if (strcmp(function, "needLockRun") == 0) {object->needLockRun(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "lock") == 0) {object->lock(); return PIVariant();}
	if (strcmp(function, "unlock") == 0) {object->unlock(); return PIVariant();}
	if (strcmp(function, "started") == 0) {object->started(); return PIVariant();}
	if (strcmp(function, "stopped") == 0) {object->stopped(); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIThread\"!";
	return PIVariant();
}

PIVariant execFunction(PITimer * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "setData") == 0) {object->setData(arg0.toValue<void * >()); return PIVariant();}
	if (strcmp(function, "setSlot") == 0) {object->setSlot(arg0.toValue<TimerEvent >()); return PIVariant();}
	if (strcmp(function, "interval") == 0) {return PIVariant::fromValue<double >(object->interval());}
	if (strcmp(function, "reset") == 0) {object->reset(); return PIVariant();}
	if (strcmp(function, "start") == 0) {object->start(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "start") == 0) {object->start(arg0.toValue<double >()); return PIVariant();}
	if (strcmp(function, "deferredStart") == 0) {object->deferredStart(arg0.toValue<double >(), arg1.toValue<double >()); return PIVariant();}
	if (strcmp(function, "deferredStart") == 0) {object->deferredStart(arg0.toValue<double >(), arg1.toValue<PIDateTime >()); return PIVariant();}
	if (strcmp(function, "stop") == 0) {object->stop(); return PIVariant();}
	if (strcmp(function, "addDelimiter") == 0) {object->addDelimiter(arg0.toValue<int >(), arg1.toValue<TimerEvent >()); return PIVariant();}
	if (strcmp(function, "removeDelimiter") == 0) {object->removeDelimiter(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "removeDelimiter") == 0) {object->removeDelimiter(arg0.toValue<TimerEvent >()); return PIVariant();}
	if (strcmp(function, "removeDelimiter") == 0) {object->removeDelimiter(arg0.toValue<int >(), arg1.toValue<TimerEvent >()); return PIVariant();}
	if (strcmp(function, "setDelimiterValue") == 0) {object->setDelimiterValue(arg0.toValue<int >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setDelimiterValue") == 0) {object->setDelimiterValue(arg0.toValue<TimerEvent >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setDelimiterValue") == 0) {object->setDelimiterValue(arg0.toValue<int >(), arg1.toValue<TimerEvent >(), arg2.toValue<int >()); return PIVariant();}
	if (strcmp(function, "delimiterValue") == 0) {return PIVariant::fromValue<int >(object->delimiterValue(arg0.toValue<int >()));}
	if (strcmp(function, "delimiterValue") == 0) {return PIVariant::fromValue<int >(object->delimiterValue(arg0.toValue<int >(), arg1.toValue<TimerEvent >()));}
	if (strcmp(function, "clearDelimiters") == 0) {object->clearDelimiters(); return PIVariant();}
	if (strcmp(function, "elapsed_n") == 0) {return PIVariant::fromValue<double >(object->elapsed_n());}
	if (strcmp(function, "elapsed_u") == 0) {return PIVariant::fromValue<double >(object->elapsed_u());}
	if (strcmp(function, "elapsed_m") == 0) {return PIVariant::fromValue<double >(object->elapsed_m());}
	if (strcmp(function, "elapsed_s") == 0) {return PIVariant::fromValue<double >(object->elapsed_s());}
	if (strcmp(function, "reset_time_n") == 0) {return PIVariant::fromValue<double >(object->reset_time_n());}
	if (strcmp(function, "reset_time_u") == 0) {return PIVariant::fromValue<double >(object->reset_time_u());}
	if (strcmp(function, "reset_time_m") == 0) {return PIVariant::fromValue<double >(object->reset_time_m());}
	if (strcmp(function, "reset_time_s") == 0) {return PIVariant::fromValue<double >(object->reset_time_s());}
	if (strcmp(function, "reset_time") == 0) {return PIVariant::fromValue<PISystemTime >(object->reset_time());}
	if (strcmp(function, "timeout") == 0) {object->timeout(arg0.toValue<void * >(), arg1.toValue<int >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PITimer\"!";
	return PIVariant();
}

PIVariant execFunction(PIKbdListener * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "data") == 0) {return PIVariant::fromValue<void * >(object->data());}
	if (strcmp(function, "setData") == 0) {object->setData(arg0.toValue<void * >()); return PIVariant();}
	if (strcmp(function, "setSlot") == 0) {object->setSlot(arg0.toValue<KBFunc >()); return PIVariant();}
	if (strcmp(function, "exitCaptured") == 0) {return PIVariant::fromValue<bool >(object->exitCaptured());}
	if (strcmp(function, "exitKey") == 0) {return PIVariant::fromValue<char >(object->exitKey());}
	if (strcmp(function, "isActive") == 0) {return PIVariant::fromValue<bool >(object->isActive());}
	if (strcmp(function, "enableExitCapture") == 0) {object->enableExitCapture(); return PIVariant();}
	if (strcmp(function, "enableExitCapture") == 0) {object->enableExitCapture(arg0.toValue<char >()); return PIVariant();}
	if (strcmp(function, "disableExitCapture") == 0) {object->disableExitCapture(); return PIVariant();}
	if (strcmp(function, "setActive") == 0) {object->setActive(); return PIVariant();}
	if (strcmp(function, "setActive") == 0) {object->setActive(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "keyPressed") == 0) {object->keyPressed(arg0.toValue<char >(), arg1.toValue<void * >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIKbdListener\"!";
	return PIVariant();
}

PIVariant execFunction(PIIODevice * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "mode") == 0) {return PIVariant::fromValue<PIIODevice::DeviceMode >(object->mode());}
	if (strcmp(function, "path") == 0) {return PIVariant::fromValue<PIString >(object->path());}
	if (strcmp(function, "setPath") == 0) {object->setPath(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "isReadable") == 0) {return PIVariant::fromValue<bool >(object->isReadable());}
	if (strcmp(function, "isWriteable") == 0) {return PIVariant::fromValue<bool >(object->isWriteable());}
	if (strcmp(function, "isInitialized") == 0) {return PIVariant::fromValue<bool >(object->isInitialized());}
	if (strcmp(function, "isOpened") == 0) {return PIVariant::fromValue<bool >(object->isOpened());}
	if (strcmp(function, "isClosed") == 0) {return PIVariant::fromValue<bool >(object->isClosed());}
	if (strcmp(function, "canRead") == 0) {return PIVariant::fromValue<bool >(object->canRead());}
	if (strcmp(function, "canWrite") == 0) {return PIVariant::fromValue<bool >(object->canWrite());}
	if (strcmp(function, "setReopenEnabled") == 0) {object->setReopenEnabled(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setReopenTimeout") == 0) {object->setReopenTimeout(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "isReopenEnabled") == 0) {return PIVariant::fromValue<bool >(object->isReopenEnabled());}
	if (strcmp(function, "reopenTimeout") == 0) {return PIVariant::fromValue<int >(object->reopenTimeout());}
	if (strcmp(function, "setThreadedReadSlot") == 0) {object->setThreadedReadSlot(arg0.toValue<ReadRetFunc >()); return PIVariant();}
	if (strcmp(function, "setThreadedReadData") == 0) {object->setThreadedReadData(arg0.toValue<void * >()); return PIVariant();}
	if (strcmp(function, "setThreadedReadBufferSize") == 0) {object->setThreadedReadBufferSize(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "threadedReadBufferSize") == 0) {return PIVariant::fromValue<int >(object->threadedReadBufferSize());}
	if (strcmp(function, "threadedReadBuffer") == 0) {return PIVariant::fromValue<const uchar * >(object->threadedReadBuffer());}
	if (strcmp(function, "isThreadedRead") == 0) {return PIVariant::fromValue<bool >(object->isThreadedRead());}
	if (strcmp(function, "startThreadedRead") == 0) {object->startThreadedRead(); return PIVariant();}
	if (strcmp(function, "startThreadedRead") == 0) {object->startThreadedRead(arg0.toValue<ReadRetFunc >()); return PIVariant();}
	if (strcmp(function, "stopThreadedRead") == 0) {object->stopThreadedRead(); return PIVariant();}
	if (strcmp(function, "isThreadedWrite") == 0) {return PIVariant::fromValue<bool >(object->isThreadedWrite());}
	if (strcmp(function, "startThreadedWrite") == 0) {object->startThreadedWrite(); return PIVariant();}
	if (strcmp(function, "stopThreadedWrite") == 0) {object->stopThreadedWrite(); return PIVariant();}
	if (strcmp(function, "clearThreadedWriteQueue") == 0) {object->clearThreadedWriteQueue(); return PIVariant();}
	if (strcmp(function, "start") == 0) {object->start(); return PIVariant();}
	if (strcmp(function, "stop") == 0) {object->stop(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "read") == 0) {return PIVariant::fromValue<int >(object->read(arg0.toValue<void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "write") == 0) {return PIVariant::fromValue<int >(object->write(arg0.toValue<const void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "read") == 0) {return PIVariant::fromValue<PIByteArray >(object->read(arg0.toValue<int >()));}
	if (strcmp(function, "readForTime") == 0) {return PIVariant::fromValue<PIByteArray >(object->readForTime(arg0.toValue<double >()));}
	if (strcmp(function, "write") == 0) {return PIVariant::fromValue<int >(object->write(arg0.toValue<PIByteArray >()));}
	if (strcmp(function, "writeThreaded") == 0) {return PIVariant::fromValue<ullong >(object->writeThreaded(arg0.toValue<const void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "writeThreaded") == 0) {return PIVariant::fromValue<ullong >(object->writeThreaded(arg0.toValue<PIByteArray >()));}
	if (strcmp(function, "configure") == 0) {return PIVariant::fromValue<bool >(object->configure(arg0.toValue<PIString >(), arg1.toValue<PIString >(), arg2.toValue<bool >()));}
	if (strcmp(function, "open") == 0) {return PIVariant::fromValue<bool >(object->open());}
	if (strcmp(function, "open") == 0) {return PIVariant::fromValue<bool >(object->open(arg0.toValue<PIString >()));}
	if (strcmp(function, "open") == 0) {return PIVariant::fromValue<bool >(object->open(arg0.toValue<PIIODevice::DeviceMode >()));}
	if (strcmp(function, "open") == 0) {return PIVariant::fromValue<bool >(object->open(arg0.toValue<PIString >(), arg1.toValue<PIIODevice::DeviceMode >()));}
	if (strcmp(function, "close") == 0) {return PIVariant::fromValue<bool >(object->close());}
	if (strcmp(function, "initialize") == 0) {return PIVariant::fromValue<bool >(object->initialize());}
	if (strcmp(function, "flush") == 0) {object->flush(); return PIVariant();}
	if (strcmp(function, "opened") == 0) {object->opened(); return PIVariant();}
	if (strcmp(function, "closed") == 0) {object->closed(); return PIVariant();}
	if (strcmp(function, "threadedReadEvent") == 0) {object->threadedReadEvent(arg0.toValue<uchar * >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "threadedWriteEvent") == 0) {object->threadedWriteEvent(arg0.toValue<ullong >(), arg1.toValue<int >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIIODevice\"!";
	return PIVariant();
}

PIVariant execFunction(PISerial * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "setSpeed") == 0) {object->setSpeed(arg0.toValue<PISerial::Speed >()); return PIVariant();}
	if (strcmp(function, "setOutSpeed") == 0) {object->setOutSpeed(arg0.toValue<PISerial::Speed >()); return PIVariant();}
	if (strcmp(function, "setInSpeed") == 0) {object->setInSpeed(arg0.toValue<PISerial::Speed >()); return PIVariant();}
	if (strcmp(function, "setDevice") == 0) {object->setDevice(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setParameters") == 0) {object->setParameters(arg0.toValue<PIFlags<PISerial::Parameters> >()); return PIVariant();}
	if (strcmp(function, "setParameter") == 0) {object->setParameter(arg0.toValue<PISerial::Parameters >(), arg1.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "isParameterSet") == 0) {return PIVariant::fromValue<bool >(object->isParameterSet(arg0.toValue<PISerial::Parameters >()));}
	if (strcmp(function, "parameters") == 0) {return PIVariant::fromValue<PIFlags<PISerial::Parameters> >(object->parameters());}
	if (strcmp(function, "setDataBitsCount") == 0) {object->setDataBitsCount(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "dataBitsCount") == 0) {return PIVariant::fromValue<int >(object->dataBitsCount());}
	if (strcmp(function, "setPin") == 0) {return PIVariant::fromValue<bool >(object->setPin(arg0.toValue<int >(), arg1.toValue<bool >()));}
	if (strcmp(function, "isPin") == 0) {return PIVariant::fromValue<bool >(object->isPin(arg0.toValue<int >()));}
	if (strcmp(function, "setLE") == 0) {return PIVariant::fromValue<bool >(object->setLE(arg0.toValue<bool >()));}
	if (strcmp(function, "setDTR") == 0) {return PIVariant::fromValue<bool >(object->setDTR(arg0.toValue<bool >()));}
	if (strcmp(function, "setRTS") == 0) {return PIVariant::fromValue<bool >(object->setRTS(arg0.toValue<bool >()));}
	if (strcmp(function, "setCTS") == 0) {return PIVariant::fromValue<bool >(object->setCTS(arg0.toValue<bool >()));}
	if (strcmp(function, "setST") == 0) {return PIVariant::fromValue<bool >(object->setST(arg0.toValue<bool >()));}
	if (strcmp(function, "setSR") == 0) {return PIVariant::fromValue<bool >(object->setSR(arg0.toValue<bool >()));}
	if (strcmp(function, "setCAR") == 0) {return PIVariant::fromValue<bool >(object->setCAR(arg0.toValue<bool >()));}
	if (strcmp(function, "setRNG") == 0) {return PIVariant::fromValue<bool >(object->setRNG(arg0.toValue<bool >()));}
	if (strcmp(function, "setDSR") == 0) {return PIVariant::fromValue<bool >(object->setDSR(arg0.toValue<bool >()));}
	if (strcmp(function, "isLE") == 0) {return PIVariant::fromValue<bool >(object->isLE());}
	if (strcmp(function, "isDTR") == 0) {return PIVariant::fromValue<bool >(object->isDTR());}
	if (strcmp(function, "isRTS") == 0) {return PIVariant::fromValue<bool >(object->isRTS());}
	if (strcmp(function, "isCTS") == 0) {return PIVariant::fromValue<bool >(object->isCTS());}
	if (strcmp(function, "isST") == 0) {return PIVariant::fromValue<bool >(object->isST());}
	if (strcmp(function, "isSR") == 0) {return PIVariant::fromValue<bool >(object->isSR());}
	if (strcmp(function, "isCAR") == 0) {return PIVariant::fromValue<bool >(object->isCAR());}
	if (strcmp(function, "isRNG") == 0) {return PIVariant::fromValue<bool >(object->isRNG());}
	if (strcmp(function, "isDSR") == 0) {return PIVariant::fromValue<bool >(object->isDSR());}
	if (strcmp(function, "setVTime") == 0) {object->setVTime(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setReadIsBlocking") == 0) {object->setReadIsBlocking(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "device") == 0) {return PIVariant::fromValue<PIString >(object->device());}
	if (strcmp(function, "outSpeed") == 0) {return PIVariant::fromValue<PISerial::Speed >(object->outSpeed());}
	if (strcmp(function, "inSpeed") == 0) {return PIVariant::fromValue<PISerial::Speed >(object->inSpeed());}
	if (strcmp(function, "VTime") == 0) {return PIVariant::fromValue<int >(object->VTime());}
	if (strcmp(function, "flush") == 0) {object->flush(); return PIVariant();}
	if (strcmp(function, "read") == 0) {return PIVariant::fromValue<int >(object->read(arg0.toValue<void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "read") == 0) {return PIVariant::fromValue<bool >(object->read(arg0.toValue<void * >(), arg1.toValue<int >(), arg2.toValue<double >()));}
	if (strcmp(function, "read") == 0) {return PIVariant::fromValue<PIString >(object->read(arg0.toValue<int >(), arg1.toValue<double >()));}
	if (strcmp(function, "readData") == 0) {return PIVariant::fromValue<PIByteArray >(object->readData(arg0.toValue<int >(), arg1.toValue<double >()));}
	if (strcmp(function, "write") == 0) {return PIVariant::fromValue<int >(object->write(arg0.toValue<const void * >(), arg1.toValue<int >(), arg2.toValue<bool >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<const void * >(), arg1.toValue<int >(), arg2.toValue<bool >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<PIString >(), arg1.toValue<bool >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<PIByteArray >(), arg1.toValue<bool >()));}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PISerial\"!";
	return PIVariant();
}

PIVariant execFunction(PIFile * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "flush") == 0) {object->flush(); return PIVariant();}
	if (strcmp(function, "seek") == 0) {object->seek(arg0.toValue<llong >()); return PIVariant();}
	if (strcmp(function, "seekToBegin") == 0) {object->seekToBegin(); return PIVariant();}
	if (strcmp(function, "seekToEnd") == 0) {object->seekToEnd(); return PIVariant();}
	if (strcmp(function, "seekToLine") == 0) {object->seekToLine(arg0.toValue<llong >()); return PIVariant();}
	if (strcmp(function, "readChar") == 0) {return PIVariant::fromValue<char >(object->readChar());}
	if (strcmp(function, "readLine") == 0) {return PIVariant::fromValue<PIString >(object->readLine());}
	if (strcmp(function, "readAll") == 0) {return PIVariant::fromValue<llong >(object->readAll(arg0.toValue<void * >()));}
	if (strcmp(function, "readAll") == 0) {return PIVariant::fromValue<PIByteArray >(object->readAll(arg0.toValue<bool >()));}
	if (strcmp(function, "setPath") == 0) {object->setPath(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "size") == 0) {return PIVariant::fromValue<llong >(object->size());}
	if (strcmp(function, "pos") == 0) {return PIVariant::fromValue<llong >(object->pos());}
	if (strcmp(function, "isEnd") == 0) {return PIVariant::fromValue<bool >(object->isEnd());}
	if (strcmp(function, "isEmpty") == 0) {return PIVariant::fromValue<bool >(object->isEmpty());}
	if (strcmp(function, "precision") == 0) {return PIVariant::fromValue<int >(object->precision());}
	if (strcmp(function, "setPrecision") == 0) {object->setPrecision(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "read") == 0) {return PIVariant::fromValue<int >(object->read(arg0.toValue<void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "write") == 0) {return PIVariant::fromValue<int >(object->write(arg0.toValue<const void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "clear") == 0) {object->clear(); return PIVariant();}
	if (strcmp(function, "remove") == 0) {object->remove(); return PIVariant();}
	if (strcmp(function, "resize") == 0) {object->resize(arg0.toValue<llong >()); return PIVariant();}
	if (strcmp(function, "resize") == 0) {object->resize(arg0.toValue<llong >(), arg1.toValue<uchar >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIFile\"!";
	return PIVariant();
}

PIVariant execFunction(PIProcess * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "exitCode") == 0) {return PIVariant::fromValue<int >(object->exitCode());}
	if (strcmp(function, "pID") == 0) {return PIVariant::fromValue<int >(object->pID());}
	if (strcmp(function, "setGrabInput") == 0) {object->setGrabInput(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setGrabOutput") == 0) {object->setGrabOutput(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setGrabError") == 0) {object->setGrabError(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setInputFile") == 0) {object->setInputFile(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setOutputFile") == 0) {object->setOutputFile(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setErrorFile") == 0) {object->setErrorFile(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "unsetInputFile") == 0) {object->unsetInputFile(); return PIVariant();}
	if (strcmp(function, "unsetOutputFile") == 0) {object->unsetOutputFile(); return PIVariant();}
	if (strcmp(function, "unsetErrorFile") == 0) {object->unsetErrorFile(); return PIVariant();}
	if (strcmp(function, "workingDirectory") == 0) {return PIVariant::fromValue<PIString >(object->workingDirectory());}
	if (strcmp(function, "setWorkingDirectory") == 0) {object->setWorkingDirectory(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "resetWorkingDirectory") == 0) {object->resetWorkingDirectory(); return PIVariant();}
	if (strcmp(function, "readOutput") == 0) {return PIVariant::fromValue<PIByteArray >(object->readOutput());}
	if (strcmp(function, "readError") == 0) {return PIVariant::fromValue<PIByteArray >(object->readError());}
	if (strcmp(function, "environment") == 0) {return PIVariant::fromValue<PIStringList >(object->environment());}
	if (strcmp(function, "clearEnvironment") == 0) {object->clearEnvironment(); return PIVariant();}
	if (strcmp(function, "removeEnvironmentVariable") == 0) {object->removeEnvironmentVariable(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setEnvironmentVariable") == 0) {object->setEnvironmentVariable(arg0.toValue<PIString >(), arg1.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "exec") == 0) {object->exec(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "exec") == 0) {object->exec(arg0.toValue<PIString >(), arg1.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "exec") == 0) {object->exec(arg0.toValue<PIString >(), arg1.toValue<PIString >(), arg2.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "exec") == 0) {object->exec(arg0.toValue<PIString >(), arg1.toValue<PIString >(), arg2.toValue<PIString >(), arg3.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "exec") == 0) {object->exec(arg0.toValue<PIString >(), arg1.toValue<PIStringList >()); return PIVariant();}
	if (strcmp(function, "terminate") == 0) {object->terminate(); return PIVariant();}
	if (strcmp(function, "waitForFinish") == 0) {return PIVariant::fromValue<bool >(object->waitForFinish());}
	if (strcmp(function, "waitForFinish") == 0) {return PIVariant::fromValue<bool >(object->waitForFinish(arg0.toValue<int >()));}
	if (strcmp(function, "execStarted") == 0) {object->execStarted(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "execFinished") == 0) {object->execFinished(arg0.toValue<PIString >(), arg1.toValue<int >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIProcess\"!";
	return PIVariant();
}

PIVariant execFunction(PIEthernet * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "setReadAddress") == 0) {object->setReadAddress(arg0.toValue<PIString >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setReadAddress") == 0) {object->setReadAddress(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setReadIP") == 0) {object->setReadIP(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setReadPort") == 0) {object->setReadPort(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setSendAddress") == 0) {object->setSendAddress(arg0.toValue<PIString >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setSendAddress") == 0) {object->setSendAddress(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setSendIP") == 0) {object->setSendIP(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setSendPort") == 0) {object->setSendPort(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "readAddress") == 0) {return PIVariant::fromValue<PIString >(object->readAddress());}
	if (strcmp(function, "readIP") == 0) {return PIVariant::fromValue<PIString >(object->readIP());}
	if (strcmp(function, "readPort") == 0) {return PIVariant::fromValue<int >(object->readPort());}
	if (strcmp(function, "sendAddress") == 0) {return PIVariant::fromValue<PIString >(object->sendAddress());}
	if (strcmp(function, "sendIP") == 0) {return PIVariant::fromValue<PIString >(object->sendIP());}
	if (strcmp(function, "sendPort") == 0) {return PIVariant::fromValue<int >(object->sendPort());}
	if (strcmp(function, "setParameters") == 0) {object->setParameters(arg0.toValue<PIFlags<PIEthernet::Parameters> >()); return PIVariant();}
	if (strcmp(function, "setParameter") == 0) {object->setParameter(arg0.toValue<PIEthernet::Parameters >(), arg1.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "isParameterSet") == 0) {return PIVariant::fromValue<bool >(object->isParameterSet(arg0.toValue<PIEthernet::Parameters >()));}
	if (strcmp(function, "parameters") == 0) {return PIVariant::fromValue<PIFlags<PIEthernet::Parameters> >(object->parameters());}
	if (strcmp(function, "type") == 0) {return PIVariant::fromValue<PIEthernet::Type >(object->type());}
	if (strcmp(function, "joinMulticastGroup") == 0) {return PIVariant::fromValue<bool >(object->joinMulticastGroup(arg0.toValue<PIString >()));}
	if (strcmp(function, "leaveMulticastGroup") == 0) {return PIVariant::fromValue<bool >(object->leaveMulticastGroup(arg0.toValue<PIString >()));}
	if (strcmp(function, "multicastGroups") == 0) {return PIVariant::fromValue<PIStringList >(object->multicastGroups());}
	if (strcmp(function, "connect") == 0) {return PIVariant::fromValue<bool >(object->connect());}
	if (strcmp(function, "connect") == 0) {return PIVariant::fromValue<bool >(object->connect(arg0.toValue<PIString >(), arg1.toValue<int >()));}
	if (strcmp(function, "connect") == 0) {return PIVariant::fromValue<bool >(object->connect(arg0.toValue<PIString >()));}
	if (strcmp(function, "isConnected") == 0) {return PIVariant::fromValue<bool >(object->isConnected());}
	if (strcmp(function, "listen") == 0) {return PIVariant::fromValue<bool >(object->listen());}
	if (strcmp(function, "listen") == 0) {return PIVariant::fromValue<bool >(object->listen(arg0.toValue<PIString >(), arg1.toValue<int >()));}
	if (strcmp(function, "listen") == 0) {return PIVariant::fromValue<bool >(object->listen(arg0.toValue<PIString >()));}
	if (strcmp(function, "client") == 0) {return PIVariant::fromValue<PIEthernet * >(object->client(arg0.toValue<int >()));}
	if (strcmp(function, "clientsCount") == 0) {return PIVariant::fromValue<int >(object->clientsCount());}
	if (strcmp(function, "clients") == 0) {return PIVariant::fromValue<PIVector<PIEthernet * > >(object->clients());}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<PIString >(), arg1.toValue<const void * >(), arg2.toValue<int >(), arg3.toValue<bool >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<const void * >(), arg1.toValue<int >(), arg2.toValue<bool >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<PIByteArray >(), arg1.toValue<bool >()));}
	if (strcmp(function, "read") == 0) {return PIVariant::fromValue<int >(object->read(arg0.toValue<void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "write") == 0) {return PIVariant::fromValue<int >(object->write(arg0.toValue<const void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "write") == 0) {return PIVariant::fromValue<int >(object->write(arg0.toValue<PIByteArray >()));}
	if (strcmp(function, "newConnection") == 0) {object->newConnection(arg0.toValue<PIEthernet * >()); return PIVariant();}
	if (strcmp(function, "connected") == 0) {object->connected(); return PIVariant();}
	if (strcmp(function, "disconnected") == 0) {object->disconnected(arg0.toValue<bool >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIEthernet\"!";
	return PIVariant();
}

PIVariant execFunction(PIPacketExtractor * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "device") == 0) {return PIVariant::fromValue<PIIODevice * >(object->device());}
	if (strcmp(function, "setDevice") == 0) {object->setDevice(arg0.toValue<PIIODevice * >()); return PIVariant();}
	if (strcmp(function, "bufferSize") == 0) {return PIVariant::fromValue<int >(object->bufferSize());}
	if (strcmp(function, "setBufferSize") == 0) {object->setBufferSize(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setHeaderCheckSlot") == 0) {object->setHeaderCheckSlot(arg0.toValue<HeaderCheckFunc >()); return PIVariant();}
	if (strcmp(function, "setPacketData") == 0) {object->setPacketData(arg0.toValue<void * >(), arg1.toValue<int >(), arg2.toValue<int >()); return PIVariant();}
	if (strcmp(function, "missedBytes") == 0) {return PIVariant::fromValue<ullong >(object->missedBytes());}
	if (strcmp(function, "missedPackets") == 0) {return PIVariant::fromValue<ullong >(object->missedPackets());}
	if (strcmp(function, "missedBytes_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->missedBytes_ptr());}
	if (strcmp(function, "missedPackets_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->missedPackets_ptr());}
	if (strcmp(function, "lastHeader") == 0) {return PIVariant::fromValue<PIByteArray >(object->lastHeader());}
	if (strcmp(function, "read") == 0) {return PIVariant::fromValue<int >(object->read(arg0.toValue<void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "write") == 0) {return PIVariant::fromValue<int >(object->write(arg0.toValue<const void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "packetReceived") == 0) {object->packetReceived(arg0.toValue<uchar * >(), arg1.toValue<int >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIPacketExtractor\"!";
	return PIVariant();
}

PIVariant execFunction(PIConfig * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "getValues") == 0) {return PIVariant::fromValue<PIConfig::Branch >(object->getValues(arg0.toValue<PIString >()));}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<PIString >(), arg2.toValue<PIString >(), arg3.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<PIStringList >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const char * >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const bool >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const short >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const int >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const long >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const uchar >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const ushort >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const uint >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const ulong >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const float >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<PIString >(), arg1.toValue<const double >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "entriesCount") == 0) {return PIVariant::fromValue<int >(object->entriesCount());}
	if (strcmp(function, "isEntryExists") == 0) {return PIVariant::fromValue<bool >(object->isEntryExists(arg0.toValue<PIString >()));}
	if (strcmp(function, "allTree") == 0) {return PIVariant::fromValue<PIConfig::Branch >(object->allTree());}
	if (strcmp(function, "allLeaves") == 0) {return PIVariant::fromValue<PIConfig::Branch >(object->allLeaves());}
	if (strcmp(function, "entryIndex") == 0) {return PIVariant::fromValue<int >(object->entryIndex(arg0.toValue<PIString >()));}
	if (strcmp(function, "getName") == 0) {return PIVariant::fromValue<PIString >(object->getName(arg0.toValue<uint >()));}
	if (strcmp(function, "getValue") == 0) {return PIVariant::fromValue<PIString >(object->getValue(arg0.toValue<uint >()));}
	if (strcmp(function, "getType") == 0) {return PIVariant::fromValue<PIChar >(object->getType(arg0.toValue<uint >()));}
	if (strcmp(function, "getComment") == 0) {return PIVariant::fromValue<PIString >(object->getComment(arg0.toValue<uint >()));}
	if (strcmp(function, "addEntry") == 0) {object->addEntry(arg0.toValue<PIString >(), arg1.toValue<PIString >(), arg2.toValue<PIString >(), arg3.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setName") == 0) {object->setName(arg0.toValue<uint >(), arg1.toValue<PIString >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setValue") == 0) {object->setValue(arg0.toValue<uint >(), arg1.toValue<PIString >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setType") == 0) {object->setType(arg0.toValue<uint >(), arg1.toValue<PIString >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setComment") == 0) {object->setComment(arg0.toValue<uint >(), arg1.toValue<PIString >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "removeEntry") == 0) {object->removeEntry(arg0.toValue<PIString >(), arg1.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "removeEntry") == 0) {object->removeEntry(arg0.toValue<uint >(), arg1.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "clear") == 0) {object->clear(); return PIVariant();}
	if (strcmp(function, "readAll") == 0) {object->readAll(); return PIVariant();}
	if (strcmp(function, "writeAll") == 0) {object->writeAll(); return PIVariant();}
	if (strcmp(function, "delimiter") == 0) {return PIVariant::fromValue<PIString >(object->delimiter());}
	if (strcmp(function, "setDelimiter") == 0) {object->setDelimiter(arg0.toValue<PIString >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIConfig\"!";
	return PIVariant();
}

PIVariant execFunction(PIMultiProtocolBase * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIMultiProtocolBase\"!";
	return PIVariant();
}

PIVariant execFunction(PIProtocol * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "startReceive") == 0) {object->startReceive(); return PIVariant();}
	if (strcmp(function, "startReceive") == 0) {object->startReceive(arg0.toValue<float >()); return PIVariant();}
	if (strcmp(function, "stopReceive") == 0) {object->stopReceive(); return PIVariant();}
	if (strcmp(function, "setExpectedFrequency") == 0) {object->setExpectedFrequency(arg0.toValue<float >()); return PIVariant();}
	if (strcmp(function, "setReceiverDevice") == 0) {object->setReceiverDevice(arg0.toValue<PIString >(), arg1.toValue<PISerial::Speed >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setReceiverData") == 0) {object->setReceiverData(arg0.toValue<void * >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setReceiverDataHeader") == 0) {object->setReceiverDataHeader(arg0.toValue<void * >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setReceiverAddress") == 0) {object->setReceiverAddress(arg0.toValue<PIString >(), arg1.toValue<int >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setReceiverParameters") == 0) {object->setReceiverParameters(arg0.toValue<PIFlags<PISerial::Parameters> >()); return PIVariant();}
	if (strcmp(function, "setReceiveSlot") == 0) {object->setReceiveSlot(arg0.toValue<ReceiveFunc >()); return PIVariant();}
	if (strcmp(function, "expectedFrequency") == 0) {return PIVariant::fromValue<float >(object->expectedFrequency());}
	if (strcmp(function, "startSend") == 0) {object->startSend(); return PIVariant();}
	if (strcmp(function, "startSend") == 0) {object->startSend(arg0.toValue<float >()); return PIVariant();}
	if (strcmp(function, "stopSend") == 0) {object->stopSend(); return PIVariant();}
	if (strcmp(function, "setSenderFrequency") == 0) {object->setSenderFrequency(arg0.toValue<float >()); return PIVariant();}
	if (strcmp(function, "setSenderDevice") == 0) {object->setSenderDevice(arg0.toValue<PIString >(), arg1.toValue<PISerial::Speed >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setSenderData") == 0) {object->setSenderData(arg0.toValue<void * >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setSenderAddress") == 0) {object->setSenderAddress(arg0.toValue<PIString >(), arg1.toValue<int >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setSenderIP") == 0) {object->setSenderIP(arg0.toValue<PIString >(), arg1.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setSenderPort") == 0) {object->setSenderPort(arg0.toValue<int >(), arg1.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setSenderParameters") == 0) {object->setSenderParameters(arg0.toValue<PIFlags<PISerial::Parameters> >()); return PIVariant();}
	if (strcmp(function, "senderFrequency") == 0) {return PIVariant::fromValue<float >(object->senderFrequency());}
	if (strcmp(function, "start") == 0) {object->start(); return PIVariant();}
	if (strcmp(function, "stop") == 0) {object->stop(); return PIVariant();}
	if (strcmp(function, "send") == 0) {object->send(); return PIVariant();}
	if (strcmp(function, "send") == 0) {object->send(arg0.toValue<const void * >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "send") == 0) {object->send(arg0.toValue<const void * >(), arg1.toValue<int >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setName") == 0) {object->setName(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "name") == 0) {return PIVariant::fromValue<PIString >(object->name());}
	if (strcmp(function, "setDisconnectTimeout") == 0) {object->setDisconnectTimeout(arg0.toValue<float >()); return PIVariant();}
	if (strcmp(function, "disconnectTimeout") == 0) {return PIVariant::fromValue<float >(object->disconnectTimeout());}
	if (strcmp(function, "disconnectTimeout_ptr") == 0) {return PIVariant::fromValue<const float * >(object->disconnectTimeout_ptr());}
	if (strcmp(function, "immediateFrequency") == 0) {return PIVariant::fromValue<float >(object->immediateFrequency());}
	if (strcmp(function, "integralFrequency") == 0) {return PIVariant::fromValue<float >(object->integralFrequency());}
	if (strcmp(function, "immediateFrequency_ptr") == 0) {return PIVariant::fromValue<const float * >(object->immediateFrequency_ptr());}
	if (strcmp(function, "integralFrequency_ptr") == 0) {return PIVariant::fromValue<const float * >(object->integralFrequency_ptr());}
	if (strcmp(function, "receiveCountPerSec") == 0) {return PIVariant::fromValue<ullong >(object->receiveCountPerSec());}
	if (strcmp(function, "receiveCountPerSec_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->receiveCountPerSec_ptr());}
	if (strcmp(function, "sendCountPerSec") == 0) {return PIVariant::fromValue<ullong >(object->sendCountPerSec());}
	if (strcmp(function, "sendCountPerSec_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->sendCountPerSec_ptr());}
	if (strcmp(function, "receiveBytesPerSec") == 0) {return PIVariant::fromValue<ullong >(object->receiveBytesPerSec());}
	if (strcmp(function, "receiveBytesPerSec_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->receiveBytesPerSec_ptr());}
	if (strcmp(function, "sendBytesPerSec") == 0) {return PIVariant::fromValue<ullong >(object->sendBytesPerSec());}
	if (strcmp(function, "sendBytesPerSec_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->sendBytesPerSec_ptr());}
	if (strcmp(function, "receiveCount") == 0) {return PIVariant::fromValue<ullong >(object->receiveCount());}
	if (strcmp(function, "receiveCount_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->receiveCount_ptr());}
	if (strcmp(function, "wrongCount") == 0) {return PIVariant::fromValue<ullong >(object->wrongCount());}
	if (strcmp(function, "wrongCount_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->wrongCount_ptr());}
	if (strcmp(function, "sendCount") == 0) {return PIVariant::fromValue<ullong >(object->sendCount());}
	if (strcmp(function, "sendCount_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->sendCount_ptr());}
	if (strcmp(function, "missedCount") == 0) {return PIVariant::fromValue<ullong >(object->missedCount());}
	if (strcmp(function, "missedCount_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->missedCount_ptr());}
	if (strcmp(function, "quality") == 0) {return PIVariant::fromValue<PIProtocol::Quality >(object->quality());}
	if (strcmp(function, "quality_ptr") == 0) {return PIVariant::fromValue<const int * >(object->quality_ptr());}
	if (strcmp(function, "receiverDeviceName") == 0) {return PIVariant::fromValue<PIString >(object->receiverDeviceName());}
	if (strcmp(function, "senderDeviceName") == 0) {return PIVariant::fromValue<PIString >(object->senderDeviceName());}
	if (strcmp(function, "receiverDeviceState") == 0) {return PIVariant::fromValue<PIString >(object->receiverDeviceState());}
	if (strcmp(function, "receiverDeviceState_ptr") == 0) {return PIVariant::fromValue<const PIString * >(object->receiverDeviceState_ptr());}
	if (strcmp(function, "senderDeviceState") == 0) {return PIVariant::fromValue<PIString >(object->senderDeviceState());}
	if (strcmp(function, "senderDeviceState_ptr") == 0) {return PIVariant::fromValue<const PIString * >(object->senderDeviceState_ptr());}
	if (strcmp(function, "receiveSpeed") == 0) {return PIVariant::fromValue<PIString >(object->receiveSpeed());}
	if (strcmp(function, "receiveSpeed_ptr") == 0) {return PIVariant::fromValue<const PIString * >(object->receiveSpeed_ptr());}
	if (strcmp(function, "sendSpeed") == 0) {return PIVariant::fromValue<PIString >(object->sendSpeed());}
	if (strcmp(function, "sendSpeed_ptr") == 0) {return PIVariant::fromValue<const PIString * >(object->sendSpeed_ptr());}
	if (strcmp(function, "receiverHistorySize") == 0) {return PIVariant::fromValue<PIString >(object->receiverHistorySize());}
	if (strcmp(function, "receiverHistorySize_ptr") == 0) {return PIVariant::fromValue<const PIString * >(object->receiverHistorySize_ptr());}
	if (strcmp(function, "senderHistorySize") == 0) {return PIVariant::fromValue<PIString >(object->senderHistorySize());}
	if (strcmp(function, "senderHistorySize_ptr") == 0) {return PIVariant::fromValue<const PIString * >(object->senderHistorySize_ptr());}
	if (strcmp(function, "writeReceiverHistory") == 0) {return PIVariant::fromValue<bool >(object->writeReceiverHistory());}
	if (strcmp(function, "writeReceiverHistory_ptr") == 0) {return PIVariant::fromValue<const bool * >(object->writeReceiverHistory_ptr());}
	if (strcmp(function, "writeSenderHistory") == 0) {return PIVariant::fromValue<bool >(object->writeSenderHistory());}
	if (strcmp(function, "writeSenderHistory_ptr") == 0) {return PIVariant::fromValue<const bool * >(object->writeSenderHistory_ptr());}
	if (strcmp(function, "receiveData") == 0) {return PIVariant::fromValue<void * >(object->receiveData());}
	if (strcmp(function, "sendData") == 0) {return PIVariant::fromValue<void * >(object->sendData());}
	if (strcmp(function, "packetExtractor") == 0) {return PIVariant::fromValue<PIPacketExtractor * >(object->packetExtractor());}
	if (strcmp(function, "lastHeader") == 0) {return PIVariant::fromValue<PIByteArray >(object->lastHeader());}
	if (strcmp(function, "receiverStarted") == 0) {object->receiverStarted(); return PIVariant();}
	if (strcmp(function, "receiverStopped") == 0) {object->receiverStopped(); return PIVariant();}
	if (strcmp(function, "senderStarted") == 0) {object->senderStarted(); return PIVariant();}
	if (strcmp(function, "senderStopped") == 0) {object->senderStopped(); return PIVariant();}
	if (strcmp(function, "received") == 0) {object->received(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "qualityChanged") == 0) {object->qualityChanged(arg0.toValue<PIProtocol::Quality >(), arg1.toValue<PIProtocol::Quality >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIProtocol\"!";
	return PIVariant();
}

PIVariant execFunction(PIDiagnostics * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "immediateFrequency") == 0) {return PIVariant::fromValue<float >(object->immediateFrequency());}
	if (strcmp(function, "integralFrequency") == 0) {return PIVariant::fromValue<float >(object->integralFrequency());}
	if (strcmp(function, "receiveCountPerSec") == 0) {return PIVariant::fromValue<ullong >(object->receiveCountPerSec());}
	if (strcmp(function, "sendCountPerSec") == 0) {return PIVariant::fromValue<ullong >(object->sendCountPerSec());}
	if (strcmp(function, "receiveBytesPerSec") == 0) {return PIVariant::fromValue<ullong >(object->receiveBytesPerSec());}
	if (strcmp(function, "sendBytesPerSec") == 0) {return PIVariant::fromValue<ullong >(object->sendBytesPerSec());}
	if (strcmp(function, "receiveCount") == 0) {return PIVariant::fromValue<ullong >(object->receiveCount());}
	if (strcmp(function, "wrongCount") == 0) {return PIVariant::fromValue<ullong >(object->wrongCount());}
	if (strcmp(function, "sendCount") == 0) {return PIVariant::fromValue<ullong >(object->sendCount());}
	if (strcmp(function, "quality") == 0) {return PIVariant::fromValue<PIDiagnostics::Quality >(object->quality());}
	if (strcmp(function, "receiveSpeed") == 0) {return PIVariant::fromValue<PIString >(object->receiveSpeed());}
	if (strcmp(function, "sendSpeed") == 0) {return PIVariant::fromValue<PIString >(object->sendSpeed());}
	if (strcmp(function, "immediateFrequency_ptr") == 0) {return PIVariant::fromValue<const float * >(object->immediateFrequency_ptr());}
	if (strcmp(function, "integralFrequency_ptr") == 0) {return PIVariant::fromValue<const float * >(object->integralFrequency_ptr());}
	if (strcmp(function, "receiveCountPerSec_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->receiveCountPerSec_ptr());}
	if (strcmp(function, "sendCountPerSec_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->sendCountPerSec_ptr());}
	if (strcmp(function, "receiveBytesPerSec_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->receiveBytesPerSec_ptr());}
	if (strcmp(function, "sendBytesPerSec_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->sendBytesPerSec_ptr());}
	if (strcmp(function, "receiveCount_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->receiveCount_ptr());}
	if (strcmp(function, "wrongCount_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->wrongCount_ptr());}
	if (strcmp(function, "sendCount_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->sendCount_ptr());}
	if (strcmp(function, "quality_ptr") == 0) {return PIVariant::fromValue<const int * >(object->quality_ptr());}
	if (strcmp(function, "receiveSpeed_ptr") == 0) {return PIVariant::fromValue<const PIString * >(object->receiveSpeed_ptr());}
	if (strcmp(function, "sendSpeed_ptr") == 0) {return PIVariant::fromValue<const PIString * >(object->sendSpeed_ptr());}
	if (strcmp(function, "start") == 0) {object->start(); return PIVariant();}
	if (strcmp(function, "start") == 0) {object->start(arg0.toValue<double >()); return PIVariant();}
	if (strcmp(function, "reset") == 0) {object->reset(); return PIVariant();}
	if (strcmp(function, "received") == 0) {object->received(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "received") == 0) {object->received(arg0.toValue<int >(), arg1.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "sended") == 0) {object->sended(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "qualityChanged") == 0) {object->qualityChanged(arg0.toValue<PIDiagnostics::Quality >(), arg1.toValue<PIDiagnostics::Quality >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIDiagnostics\"!";
	return PIVariant();
}

PIVariant execFunction(PISystemMonitor * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "startOnProcess") == 0) {return PIVariant::fromValue<bool >(object->startOnProcess(arg0.toValue<int >()));}
	if (strcmp(function, "startOnSelf") == 0) {return PIVariant::fromValue<bool >(object->startOnSelf());}
	if (strcmp(function, "statistic") == 0) {return PIVariant::fromValue<PISystemMonitor::ProcessStats >(object->statistic());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PISystemMonitor\"!";
	return PIVariant();
}

PIVariant execFunction(PIConsole * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "addString") == 0) {object->addString(arg0.toValue<PIString >(), arg1.toValue<int >(), arg2.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const PIString * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const char * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const bool * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const short * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const int * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const long * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const llong * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const uchar * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const ushort * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const uint * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const ulong * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const ullong * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const float * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const double * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const PISystemTime * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const PIProtocol * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const PIDiagnostics * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<const PISystemMonitor * >(), arg2.toValue<int >(), arg3.toValue<PIFlags<PIConsole::Format> >()); return PIVariant();}
	if (strcmp(function, "addEmptyLine") == 0) {object->addEmptyLine(arg0.toValue<int >(), arg1.toValue<uint >()); return PIVariant();}
	if (strcmp(function, "getString") == 0) {return PIVariant::fromValue<PIString >(object->getString(arg0.toValue<int >(), arg1.toValue<int >()));}
	if (strcmp(function, "getShort") == 0) {return PIVariant::fromValue<short >(object->getShort(arg0.toValue<int >(), arg1.toValue<int >()));}
	if (strcmp(function, "getInt") == 0) {return PIVariant::fromValue<int >(object->getInt(arg0.toValue<int >(), arg1.toValue<int >()));}
	if (strcmp(function, "getFloat") == 0) {return PIVariant::fromValue<float >(object->getFloat(arg0.toValue<int >(), arg1.toValue<int >()));}
	if (strcmp(function, "getDouble") == 0) {return PIVariant::fromValue<double >(object->getDouble(arg0.toValue<int >(), arg1.toValue<int >()));}
	if (strcmp(function, "getString") == 0) {return PIVariant::fromValue<PIString >(object->getString(arg0.toValue<PIString >()));}
	if (strcmp(function, "getShort") == 0) {return PIVariant::fromValue<short >(object->getShort(arg0.toValue<PIString >()));}
	if (strcmp(function, "getInt") == 0) {return PIVariant::fromValue<int >(object->getInt(arg0.toValue<PIString >()));}
	if (strcmp(function, "getFloat") == 0) {return PIVariant::fromValue<float >(object->getFloat(arg0.toValue<PIString >()));}
	if (strcmp(function, "getDouble") == 0) {return PIVariant::fromValue<double >(object->getDouble(arg0.toValue<PIString >()));}
	if (strcmp(function, "tabsCount") == 0) {return PIVariant::fromValue<uint >(object->tabsCount());}
	if (strcmp(function, "currentTab") == 0) {return PIVariant::fromValue<PIString >(object->currentTab());}
	if (strcmp(function, "addTab") == 0) {return PIVariant::fromValue<int >(object->addTab(arg0.toValue<PIString >(), arg1.toValue<char >()));}
	if (strcmp(function, "removeTab") == 0) {object->removeTab(arg0.toValue<uint >()); return PIVariant();}
	if (strcmp(function, "removeTab") == 0) {object->removeTab(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setTab") == 0) {return PIVariant::fromValue<bool >(object->setTab(arg0.toValue<uint >()));}
	if (strcmp(function, "setTab") == 0) {return PIVariant::fromValue<bool >(object->setTab(arg0.toValue<PIString >()));}
	if (strcmp(function, "setTabBindKey") == 0) {return PIVariant::fromValue<bool >(object->setTabBindKey(arg0.toValue<uint >(), arg1.toValue<char >()));}
	if (strcmp(function, "setTabBindKey") == 0) {return PIVariant::fromValue<bool >(object->setTabBindKey(arg0.toValue<PIString >(), arg1.toValue<char >()));}
	if (strcmp(function, "clearTabs") == 0) {object->clearTabs(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "addCustomStatus") == 0) {object->addCustomStatus(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "clearCustomStatus") == 0) {object->clearCustomStatus(); return PIVariant();}
	if (strcmp(function, "defaultAlignment") == 0) {return PIVariant::fromValue<PIConsole::Alignment >(object->defaultAlignment());}
	if (strcmp(function, "setDefaultAlignment") == 0) {object->setDefaultAlignment(arg0.toValue<PIConsole::Alignment >()); return PIVariant();}
	if (strcmp(function, "setColumnAlignment") == 0) {object->setColumnAlignment(arg0.toValue<int >(), arg1.toValue<PIConsole::Alignment >()); return PIVariant();}
	if (strcmp(function, "setColumnAlignmentToAll") == 0) {object->setColumnAlignmentToAll(arg0.toValue<PIConsole::Alignment >()); return PIVariant();}
	if (strcmp(function, "fstr") == 0) {return PIVariant::fromValue<PIString >(object->fstr(arg0.toValue<PIFlags<PIConsole::Format> >()));}
	if (strcmp(function, "enableExitCapture") == 0) {object->enableExitCapture(arg0.toValue<char >()); return PIVariant();}
	if (strcmp(function, "disableExitCapture") == 0) {object->disableExitCapture(); return PIVariant();}
	if (strcmp(function, "exitCaptured") == 0) {return PIVariant::fromValue<bool >(object->exitCaptured());}
	if (strcmp(function, "exitKey") == 0) {return PIVariant::fromValue<char >(object->exitKey());}
	if (strcmp(function, "startServer") == 0) {object->startServer(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "stopPeer") == 0) {object->stopPeer(); return PIVariant();}
	if (strcmp(function, "isServerStarted") == 0) {return PIVariant::fromValue<bool >(object->isServerStarted());}
	if (strcmp(function, "clients") == 0) {return PIVariant::fromValue<PIStringList >(object->clients());}
	if (strcmp(function, "listenServers") == 0) {object->listenServers(); return PIVariant();}
	if (strcmp(function, "availableServers") == 0) {return PIVariant::fromValue<PIStringList >(object->availableServers());}
	if (strcmp(function, "selectedServer") == 0) {return PIVariant::fromValue<PIString >(object->selectedServer());}
	if (strcmp(function, "connectToServer") == 0) {object->connectToServer(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "disconnect") == 0) {object->disconnect(); return PIVariant();}
	if (strcmp(function, "isConnected") == 0) {return PIVariant::fromValue<bool >(object->isConnected());}
	if (strcmp(function, "toUpperLeft") == 0) {object->toUpperLeft(); return PIVariant();}
	if (strcmp(function, "moveRight") == 0) {object->moveRight(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "moveLeft") == 0) {object->moveLeft(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "moveTo") == 0) {object->moveTo(arg0.toValue<int >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "clearScreen") == 0) {object->clearScreen(); return PIVariant();}
	if (strcmp(function, "clearScreenLower") == 0) {object->clearScreenLower(); return PIVariant();}
	if (strcmp(function, "clearLine") == 0) {object->clearLine(); return PIVariant();}
	if (strcmp(function, "newLine") == 0) {object->newLine(); return PIVariant();}
	if (strcmp(function, "hideCursor") == 0) {object->hideCursor(); return PIVariant();}
	if (strcmp(function, "showCursor") == 0) {object->showCursor(); return PIVariant();}
	if (strcmp(function, "clearVariables") == 0) {object->clearVariables(); return PIVariant();}
	if (strcmp(function, "clearVariables") == 0) {object->clearVariables(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "waitForFinish") == 0) {object->waitForFinish(); return PIVariant();}
	if (strcmp(function, "start") == 0) {object->start(); return PIVariant();}
	if (strcmp(function, "start") == 0) {object->start(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "stop") == 0) {object->stop(); return PIVariant();}
	if (strcmp(function, "stop") == 0) {object->stop(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "keyPressed") == 0) {object->keyPressed(arg0.toValue<char >(), arg1.toValue<void * >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIConsole\"!";
	return PIVariant();
}

PIVariant execFunction(PICLI * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "addArgument") == 0) {object->addArgument(arg0.toValue<PIString >(), arg1.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "addArgument") == 0) {object->addArgument(arg0.toValue<PIString >(), arg1.toValue<PIChar >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "addArgument") == 0) {object->addArgument(arg0.toValue<PIString >(), arg1.toValue<const char * >(), arg2.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "addArgument") == 0) {object->addArgument(arg0.toValue<PIString >(), arg1.toValue<PIChar >(), arg2.toValue<PIString >(), arg3.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "addArgument") == 0) {object->addArgument(arg0.toValue<PIString >(), arg1.toValue<const char * >(), arg2.toValue<PIString >(), arg3.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "rawArgument") == 0) {return PIVariant::fromValue<PIString >(object->rawArgument(arg0.toValue<int >()));}
	if (strcmp(function, "mandatoryArgument") == 0) {return PIVariant::fromValue<PIString >(object->mandatoryArgument(arg0.toValue<int >()));}
	if (strcmp(function, "optionalArgument") == 0) {return PIVariant::fromValue<PIString >(object->optionalArgument(arg0.toValue<int >()));}
	if (strcmp(function, "rawArguments") == 0) {return PIVariant::fromValue<PIStringList >(object->rawArguments());}
	if (strcmp(function, "mandatoryArguments") == 0) {return PIVariant::fromValue<PIStringList >(object->mandatoryArguments());}
	if (strcmp(function, "optionalArguments") == 0) {return PIVariant::fromValue<PIStringList >(object->optionalArguments());}
	if (strcmp(function, "programCommand") == 0) {return PIVariant::fromValue<PIString >(object->programCommand());}
	if (strcmp(function, "hasArgument") == 0) {return PIVariant::fromValue<bool >(object->hasArgument(arg0.toValue<PIString >()));}
	if (strcmp(function, "argumentValue") == 0) {return PIVariant::fromValue<PIString >(object->argumentValue(arg0.toValue<PIString >()));}
	if (strcmp(function, "argumentShortKey") == 0) {return PIVariant::fromValue<PIString >(object->argumentShortKey(arg0.toValue<PIString >()));}
	if (strcmp(function, "argumentFullKey") == 0) {return PIVariant::fromValue<PIString >(object->argumentFullKey(arg0.toValue<PIString >()));}
	if (strcmp(function, "shortKeyPrefix") == 0) {return PIVariant::fromValue<PIString >(object->shortKeyPrefix());}
	if (strcmp(function, "fullKeyPrefix") == 0) {return PIVariant::fromValue<PIString >(object->fullKeyPrefix());}
	if (strcmp(function, "mandatoryArgumentsCount") == 0) {return PIVariant::fromValue<int >(object->mandatoryArgumentsCount());}
	if (strcmp(function, "optionalArgumentsCount") == 0) {return PIVariant::fromValue<int >(object->optionalArgumentsCount());}
	if (strcmp(function, "setShortKeyPrefix") == 0) {object->setShortKeyPrefix(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setFullKeyPrefix") == 0) {object->setFullKeyPrefix(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setMandatoryArgumentsCount") == 0) {object->setMandatoryArgumentsCount(arg0.toValue<const int >()); return PIVariant();}
	if (strcmp(function, "setOptionalArgumentsCount") == 0) {object->setOptionalArgumentsCount(arg0.toValue<const int >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PICLI\"!";
	return PIVariant();
}

PIVariant execFunction(PIEvaluatorContent * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "addFunction") == 0) {object->addFunction(arg0.toValue<PIString >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "addVariable") == 0) {object->addVariable(arg0.toValue<PIString >(), arg1.toValue<complexd >()); return PIVariant();}
	if (strcmp(function, "addCustomFunction") == 0) {object->addCustomFunction(arg0.toValue<PIString >(), arg1.toValue<int >(), arg2.toValue<FuncFunc >()); return PIVariant();}
	if (strcmp(function, "functionsCount") == 0) {return PIVariant::fromValue<int >(object->functionsCount());}
	if (strcmp(function, "variablesCount") == 0) {return PIVariant::fromValue<int >(object->variablesCount());}
	if (strcmp(function, "customVariablesCount") == 0) {return PIVariant::fromValue<int >(object->customVariablesCount());}
	if (strcmp(function, "findFunction") == 0) {return PIVariant::fromValue<int >(object->findFunction(arg0.toValue<PIString >()));}
	if (strcmp(function, "findVariable") == 0) {return PIVariant::fromValue<int >(object->findVariable(arg0.toValue<PIString >()));}
	if (strcmp(function, "function") == 0) {return PIVariant::fromValue<PIEvaluatorTypes::Function >(object->function(arg0.toValue<int >()));}
	if (strcmp(function, "variable") == 0) {return PIVariant::fromValue<PIEvaluatorTypes::Variable >(object->variable(arg0.toValue<int >()));}
	if (strcmp(function, "function") == 0) {return PIVariant::fromValue<PIEvaluatorTypes::Function >(object->function(arg0.toValue<PIString >()));}
	if (strcmp(function, "variable") == 0) {return PIVariant::fromValue<PIEvaluatorTypes::Variable >(object->variable(arg0.toValue<PIString >()));}
	if (strcmp(function, "customVariable") == 0) {return PIVariant::fromValue<PIEvaluatorTypes::Variable >(object->customVariable(arg0.toValue<int >()));}
	if (strcmp(function, "setVariableValue") == 0) {return PIVariant::fromValue<bool >(object->setVariableValue(arg0.toValue<int >(), arg1.toValue<complexd >()));}
	if (strcmp(function, "setVariableName") == 0) {return PIVariant::fromValue<bool >(object->setVariableName(arg0.toValue<int >(), arg1.toValue<PIString >()));}
	if (strcmp(function, "setVariableValue") == 0) {return PIVariant::fromValue<bool >(object->setVariableValue(arg0.toValue<PIString >(), arg1.toValue<complexd >()));}
	if (strcmp(function, "setVariableName") == 0) {return PIVariant::fromValue<bool >(object->setVariableName(arg0.toValue<PIString >(), arg1.toValue<PIString >()));}
	if (strcmp(function, "removeVariable") == 0) {object->removeVariable(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "removeVariable") == 0) {object->removeVariable(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "clearCustomVariables") == 0) {object->clearCustomVariables(); return PIVariant();}
	if (strcmp(function, "sortVariables") == 0) {object->sortVariables(); return PIVariant();}
	if (strcmp(function, "getBaseFunction") == 0) {return PIVariant::fromValue<PIEvaluatorTypes::BaseFunctions >(object->getBaseFunction(arg0.toValue<PIString >()));}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIEvaluatorContent\"!";
	return PIVariant();
}

PIVariant execFunction(PIEvaluator * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "data") == 0) {return PIVariant::fromValue<void * >(object->data());}
	if (strcmp(function, "setData") == 0) {object->setData(arg0.toValue<void * >()); return PIVariant();}
	if (strcmp(function, "check") == 0) {return PIVariant::fromValue<bool >(object->check(arg0.toValue<PIString >()));}
	if (strcmp(function, "isCorrect") == 0) {return PIVariant::fromValue<bool >(object->isCorrect());}
	if (strcmp(function, "setVariable") == 0) {return PIVariant::fromValue<int >(object->setVariable(arg0.toValue<PIString >(), arg1.toValue<complexd >()));}
	if (strcmp(function, "setVariable") == 0) {object->setVariable(arg0.toValue<int >(), arg1.toValue<complexd >()); return PIVariant();}
	if (strcmp(function, "setCustomVariableValue") == 0) {object->setCustomVariableValue(arg0.toValue<int >(), arg1.toValue<complexd >()); return PIVariant();}
	if (strcmp(function, "evaluate") == 0) {return PIVariant::fromValue<complexd >(object->evaluate());}
	if (strcmp(function, "removeVariable") == 0) {object->removeVariable(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "clearCustomVariables") == 0) {object->clearCustomVariables(); return PIVariant();}
	if (strcmp(function, "variableIndex") == 0) {return PIVariant::fromValue<int >(object->variableIndex(arg0.toValue<PIString >()));}
	if (strcmp(function, "unknownVariables") == 0) {return PIVariant::fromValue<PIStringList >(object->unknownVariables());}
	if (strcmp(function, "expression") == 0) {return PIVariant::fromValue<PIString >(object->expression());}
	if (strcmp(function, "error") == 0) {return PIVariant::fromValue<PIString >(object->error());}
	if (strcmp(function, "lastResult") == 0) {return PIVariant::fromValue<complexd >(object->lastResult());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIEvaluator\"!";
	return PIVariant();
}

PIVariant execFunction(PIMultiProtocol * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "addProtocol") == 0) {object->addProtocol(arg0.toValue<PIProtocol * >()); return PIVariant();}
	if (strcmp(function, "protocol") == 0) {return PIVariant::fromValue<PIProtocol * >(object->protocol(arg0.toValue<PIString >()));}
	if (strcmp(function, "protocol") == 0) {return PIVariant::fromValue<PIProtocol * >(object->protocol(arg0.toValue<const int >()));}
	if (strcmp(function, "startSend") == 0) {object->startSend(); return PIVariant();}
	if (strcmp(function, "startReceive") == 0) {object->startReceive(); return PIVariant();}
	if (strcmp(function, "start") == 0) {object->start(); return PIVariant();}
	if (strcmp(function, "stopSend") == 0) {object->stopSend(); return PIVariant();}
	if (strcmp(function, "stopReceive") == 0) {object->stopReceive(); return PIVariant();}
	if (strcmp(function, "stop") == 0) {object->stop(); return PIVariant();}
	if (strcmp(function, "worseQuality") == 0) {return PIVariant::fromValue<PIProtocol::Quality >(object->worseQuality());}
	if (strcmp(function, "bestQuality") == 0) {return PIVariant::fromValue<PIProtocol::Quality >(object->bestQuality());}
	if (strcmp(function, "count") == 0) {return PIVariant::fromValue<int >(object->count());}
	if (strcmp(function, "clear") == 0) {object->clear(); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIMultiProtocol\"!";
	return PIVariant();
}

PIVariant execFunction(PIRepeater * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "firstChannelName") == 0) {return PIVariant::fromValue<PIString >(object->firstChannelName());}
	if (strcmp(function, "secondChannelName") == 0) {return PIVariant::fromValue<PIString >(object->secondChannelName());}
	if (strcmp(function, "receiveCount") == 0) {return PIVariant::fromValue<ullong >(object->receiveCount());}
	if (strcmp(function, "receiveCount_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->receiveCount_ptr());}
	if (strcmp(function, "sendCount") == 0) {return PIVariant::fromValue<ullong >(object->sendCount());}
	if (strcmp(function, "sendCount_ptr") == 0) {return PIVariant::fromValue<const ullong * >(object->sendCount_ptr());}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIRepeater\"!";
	return PIVariant();
}

PIVariant execFunction(PICodec * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "setFromCoding") == 0) {object->setFromCoding(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setToCoding") == 0) {object->setToCoding(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setCodings") == 0) {object->setCodings(arg0.toValue<PIString >(), arg1.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "availableCodecs") == 0) {return PIVariant::fromValue<PIStringList >(object->availableCodecs());}
	if (strcmp(function, "encode") == 0) {return PIVariant::fromValue<PIString >(object->encode(arg0.toValue<PIByteArray >()));}
	if (strcmp(function, "decode") == 0) {return PIVariant::fromValue<PIString >(object->decode(arg0.toValue<PIByteArray >()));}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PICodec\"!";
	return PIVariant();
}

PIVariant execFunction(PIPeer * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<PIString >(), arg1.toValue<PIByteArray >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<PIString >(), arg1.toValue<PIString >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<PIString >(), arg1.toValue<const void * >(), arg2.toValue<int >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<PIPeer::PeerInfo >(), arg1.toValue<PIByteArray >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<PIPeer::PeerInfo >(), arg1.toValue<PIString >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<PIPeer::PeerInfo >(), arg1.toValue<const void * >(), arg2.toValue<int >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<const PIPeer::PeerInfo * >(), arg1.toValue<PIByteArray >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<const PIPeer::PeerInfo * >(), arg1.toValue<PIString >()));}
	if (strcmp(function, "send") == 0) {return PIVariant::fromValue<bool >(object->send(arg0.toValue<const PIPeer::PeerInfo * >(), arg1.toValue<const void * >(), arg2.toValue<int >()));}
	if (strcmp(function, "sendToAll") == 0) {object->sendToAll(arg0.toValue<PIByteArray >()); return PIVariant();}
	if (strcmp(function, "sendToAll") == 0) {object->sendToAll(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "sendToAll") == 0) {object->sendToAll(arg0.toValue<const void * >(), arg1.toValue<int >()); return PIVariant();}
	if (strcmp(function, "isMulticastReceive") == 0) {return PIVariant::fromValue<bool >(object->isMulticastReceive());}
	if (strcmp(function, "isBroadcastReceive") == 0) {return PIVariant::fromValue<bool >(object->isBroadcastReceive());}
	if (strcmp(function, "allPeers") == 0) {return PIVariant::fromValue<PIVector<PIPeer::PeerInfo> >(object->allPeers());}
	if (strcmp(function, "isPeerExists") == 0) {return PIVariant::fromValue<bool >(object->isPeerExists(arg0.toValue<PIString >()));}
	if (strcmp(function, "getPeerByName") == 0) {return PIVariant::fromValue<const PIPeer::PeerInfo * >(object->getPeerByName(arg0.toValue<PIString >()));}
	if (strcmp(function, "lock") == 0) {object->lock(); return PIVariant();}
	if (strcmp(function, "unlock") == 0) {object->unlock(); return PIVariant();}
	if (strcmp(function, "dataReceivedEvent") == 0) {object->dataReceivedEvent(arg0.toValue<PIString >(), arg1.toValue<PIByteArray >()); return PIVariant();}
	if (strcmp(function, "peerConnectedEvent") == 0) {object->peerConnectedEvent(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "peerDisconnectedEvent") == 0) {object->peerDisconnectedEvent(arg0.toValue<PIString >()); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIPeer\"!";
	return PIVariant();
}

PIVariant execFunction(PIBinaryLog * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "playMode") == 0) {return PIVariant::fromValue<PIBinaryLog::PlayMode >(object->playMode());}
	if (strcmp(function, "logDir") == 0) {return PIVariant::fromValue<PIString >(object->logDir());}
	if (strcmp(function, "filePrefix") == 0) {return PIVariant::fromValue<PIString >(object->filePrefix());}
	if (strcmp(function, "defaultID") == 0) {return PIVariant::fromValue<int >(object->defaultID());}
	if (strcmp(function, "playSpeed") == 0) {return PIVariant::fromValue<float >(object->playSpeed());}
	if (strcmp(function, "rapidStart") == 0) {return PIVariant::fromValue<bool >(object->rapidStart());}
	if (strcmp(function, "setPlayMode") == 0) {object->setPlayMode(arg0.toValue<PIBinaryLog::PlayMode >()); return PIVariant();}
	if (strcmp(function, "setLogDir") == 0) {object->setLogDir(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setFilePrefix") == 0) {object->setFilePrefix(arg0.toValue<PIString >()); return PIVariant();}
	if (strcmp(function, "setDefaultID") == 0) {object->setDefaultID(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setRapidStart") == 0) {object->setRapidStart(arg0.toValue<bool >()); return PIVariant();}
	if (strcmp(function, "setPlaySpeed") == 0) {object->setPlaySpeed(arg0.toValue<float >()); return PIVariant();}
	if (strcmp(function, "writeBinLog") == 0) {return PIVariant::fromValue<int >(object->writeBinLog(arg0.toValue<int >(), arg1.toValue<PIByteArray >()));}
	if (strcmp(function, "writeBinLog") == 0) {return PIVariant::fromValue<int >(object->writeBinLog(arg0.toValue<int >(), arg1.toValue<const void * >(), arg2.toValue<int >()));}
	if (strcmp(function, "readBinLog") == 0) {return PIVariant::fromValue<PIByteArray >(object->readBinLog(arg0.toValue<int >()));}
	if (strcmp(function, "readBinLog") == 0) {return PIVariant::fromValue<int >(object->readBinLog(arg0.toValue<int >(), arg1.toValue<void * >(), arg2.toValue<int >()));}
	if (strcmp(function, "isEnd") == 0) {return PIVariant::fromValue<bool >(object->isEnd());}
	if (strcmp(function, "isEmpty") == 0) {return PIVariant::fromValue<bool >(object->isEmpty());}
	if (strcmp(function, "lastReadedID") == 0) {return PIVariant::fromValue<int >(object->lastReadedID());}
	if (strcmp(function, "read") == 0) {return PIVariant::fromValue<int >(object->read(arg0.toValue<void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "write") == 0) {return PIVariant::fromValue<int >(object->write(arg0.toValue<const void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "restart") == 0) {object->restart(); return PIVariant();}
	if (strcmp(function, "createNewFile") == 0) {return PIVariant::fromValue<PIString >(object->createNewFile());}
	if (strcmp(function, "fileEnd") == 0) {object->fileEnd(); return PIVariant();}
	if (strcmp(function, "fileError") == 0) {object->fileError(); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIBinaryLog\"!";
	return PIVariant();
}

PIVariant execFunction(PIUSB * object, const char * function, const PIVariant & arg0, const PIVariant & arg1, const PIVariant & arg2, const PIVariant & arg3) {
	if (strcmp(function, "className") == 0) {return PIVariant::fromValue<const char * >(object->className());}
	if (strcmp(function, "currentDescriptor") == 0) {return PIVariant::fromValue<PIUSB::Descriptor >(object->currentDescriptor());}
	if (strcmp(function, "currentConfiguration") == 0) {return PIVariant::fromValue<PIUSB::Configuration >(object->currentConfiguration());}
	if (strcmp(function, "currentInterface") == 0) {return PIVariant::fromValue<PIUSB::Interface >(object->currentInterface());}
	if (strcmp(function, "vendorID") == 0) {return PIVariant::fromValue<ushort >(object->vendorID());}
	if (strcmp(function, "productID") == 0) {return PIVariant::fromValue<ushort >(object->productID());}
	if (strcmp(function, "deviceNumber") == 0) {return PIVariant::fromValue<int >(object->deviceNumber());}
	if (strcmp(function, "timeoutRead") == 0) {return PIVariant::fromValue<int >(object->timeoutRead());}
	if (strcmp(function, "timeoutWrite") == 0) {return PIVariant::fromValue<int >(object->timeoutWrite());}
	if (strcmp(function, "endpointRead") == 0) {return PIVariant::fromValue<PIUSB::Endpoint >(object->endpointRead());}
	if (strcmp(function, "endpointWrite") == 0) {return PIVariant::fromValue<PIUSB::Endpoint >(object->endpointWrite());}
	if (strcmp(function, "endpoints") == 0) {return PIVariant::fromValue<PIVector<PIUSB::Endpoint> >(object->endpoints());}
	if (strcmp(function, "endpointsRead") == 0) {return PIVariant::fromValue<PIVector<PIUSB::Endpoint> >(object->endpointsRead());}
	if (strcmp(function, "endpointsWrite") == 0) {return PIVariant::fromValue<PIVector<PIUSB::Endpoint> >(object->endpointsWrite());}
	if (strcmp(function, "getEndpointByAddress") == 0) {return PIVariant::fromValue<PIUSB::Endpoint >(object->getEndpointByAddress(arg0.toValue<uchar >()));}
	if (strcmp(function, "setVendorID") == 0) {object->setVendorID(arg0.toValue<ushort >()); return PIVariant();}
	if (strcmp(function, "setProductID") == 0) {object->setProductID(arg0.toValue<ushort >()); return PIVariant();}
	if (strcmp(function, "setConfiguration") == 0) {return PIVariant::fromValue<bool >(object->setConfiguration(arg0.toValue<uchar >()));}
	if (strcmp(function, "setInterface") == 0) {return PIVariant::fromValue<bool >(object->setInterface(arg0.toValue<uchar >()));}
	if (strcmp(function, "setEndpointRead") == 0) {object->setEndpointRead(arg0.toValue<PIUSB::Endpoint >()); return PIVariant();}
	if (strcmp(function, "setEndpointWrite") == 0) {object->setEndpointWrite(arg0.toValue<PIUSB::Endpoint >()); return PIVariant();}
	if (strcmp(function, "setDeviceNumber") == 0) {object->setDeviceNumber(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setTimeoutRead") == 0) {object->setTimeoutRead(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "setTimeoutWrite") == 0) {object->setTimeoutWrite(arg0.toValue<int >()); return PIVariant();}
	if (strcmp(function, "read") == 0) {return PIVariant::fromValue<int >(object->read(arg0.toValue<void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "write") == 0) {return PIVariant::fromValue<int >(object->write(arg0.toValue<const void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "controlWrite") == 0) {return PIVariant::fromValue<int >(object->controlWrite(arg0.toValue<const void * >(), arg1.toValue<int >()));}
	if (strcmp(function, "flush") == 0) {object->flush(); return PIVariant();}
	PICout(AddNewLine) << "Can`t find function \"" << function << "\" in class \"PIUSB\"!";
	return PIVariant();
}


__ClassInfo_TEST_H_Initializer__::__ClassInfo_TEST_H_Initializer__() {
	if (_inited_) return;
	_inited_ = true;

	ClassInfo * ci;
	TypeInfo * ni;
	FunctionInfo * fi;
	EnumInfo * ei;

// Classes

	ci = new ClassInfo();
	(*classesInfo)["PIMonitor"] = ci;
	ci->name = "PIMonitor";
	ci->variables << TypeInfo("containers", "int");
	ci->variables << TypeInfo("strings", "int");
	ci->variables << TypeInfo("threads", "int");
	ci->variables << TypeInfo("timers", "int");
	ci->variables << TypeInfo("serials", "int");
	ci->variables << TypeInfo("ethernets", "int");
	ci->variables << TypeInfo("files", "int");
	ci->variables << TypeInfo("objects", "int");

	ci = new ClassInfo();
	(*classesInfo)["PIInit"] = ci;
	ci->name = "PIInit";
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fileExists"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("p", "string &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PICout"] = ci;
	ci->name = "PICout";
	ci->variables << TypeInfo("fo_", "bool");
	ci->variables << TypeInfo("cc_", "bool");
	ci->variables << TypeInfo("fc_", "bool");
	ci->variables << TypeInfo("cnb_", "int");
	ci->variables << TypeInfo("attr_", "int");
	ci->variables << TypeInfo("co_", "PICoutControls");
	ci->variables << TypeInfo("cos_", "std::stack<PICoutControls>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setControl"; fi->return_type = TypeInfo("", "PICout &");
	fi->arguments << TypeInfo("c", "PICoutControl");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setControl"; fi->return_type = TypeInfo("", "PICout &");
	fi->arguments << TypeInfo("c", "PICoutControls");
	fi->arguments << TypeInfo("save", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "saveControl"; fi->return_type = TypeInfo("", "PICout &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "restoreControl"; fi->return_type = TypeInfo("", "PICout &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "space"; fi->return_type = TypeInfo("", "PICout &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "quote"; fi->return_type = TypeInfo("", "PICout &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "newLine"; fi->return_type = TypeInfo("", "PICout &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "applyFormat"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("f", "PICoutFormat");

	ci = new ClassInfo();
	(*classesInfo)["PIMutex"] = ci;
	ci->name = "PIMutex";
	ci->variables << TypeInfo("mutex", "pthread_mutex_t");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "lock"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "unlock"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "tryLock"; fi->return_type = TypeInfo("", "bool");

	ci = new ClassInfo();
	(*classesInfo)["PIMutexLocker"] = ci;
	ci->name = "PIMutexLocker";
	ci->variables << TypeInfo("mutex", "PIMutex*");

	ci = new ClassInfo();
	(*classesInfo)["PIBitArray"] = ci;
	ci->name = "PIBitArray";
	ci->variables << TypeInfo("data_", "PIVector<uchar>");
	ci->variables << TypeInfo("size_", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "bitSize"; fi->return_type = TypeInfo("", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "byteSize"; fi->return_type = TypeInfo("", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "resize"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("size", "uint &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearBit"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("index", "uint &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setBit"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("index", "uint &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBit"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("index", "uint &", Const);
	fi->arguments << TypeInfo("value", "bool &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBit"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("index", "uint &", Const);
	fi->arguments << TypeInfo("value", "uchar &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "push_back"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("value", "bool &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "push_back"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("value", "uchar &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "insert"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("index", "uint &", Const);
	fi->arguments << TypeInfo("value", "bool &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "insert"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("index", "uint &", Const);
	fi->arguments << TypeInfo("value", "uchar &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "push_front"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("value", "bool &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "push_front"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("value", "uchar &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "pop_back"; fi->return_type = TypeInfo("", "PIBitArray &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "pop_front"; fi->return_type = TypeInfo("", "PIBitArray &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "append"; fi->return_type = TypeInfo("", "PIBitArray &");
	fi->arguments << TypeInfo("ba", "PIBitArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "data"; fi->return_type = TypeInfo("", "uchar *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toUChar"; fi->return_type = TypeInfo("", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toUShort"; fi->return_type = TypeInfo("", "ushort");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toUInt"; fi->return_type = TypeInfo("", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toULong"; fi->return_type = TypeInfo("", "ulong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toULLong"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "at"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("index", "uint &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "bytesInBits"; fi->return_type = TypeInfo("", "uint");
	fi->arguments << TypeInfo("bits", "uint &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIHuffman"] = ci;
	ci->name = "PIHuffman";
	ci->variables << TypeInfo("nodes", "PIVector<node>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "compress"; fi->return_type = TypeInfo("", "PIVector<uchar>");
	fi->arguments << TypeInfo("src", "PIVector<uchar> &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "nodeCompare"; fi->return_type = TypeInfo("", "int", Static);
	fi->arguments << TypeInfo("f", "void *", Const);
	fi->arguments << TypeInfo("s", "void *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "calcFrequencies"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("src", "PIVector<uchar> &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIHuffman::node"] = ci;
	ci->name = "PIHuffman::node";
	ci->variables << TypeInfo("freq", "int");
	ci->variables << TypeInfo("word", "PIVector<uchar>");
	ci->variables << TypeInfo("path", "PIBitArray");
	ci->variables << TypeInfo("parent", "node*");
	ci->variables << TypeInfo("right", "node*");
	ci->variables << TypeInfo("left", "node*");

	ci = new ClassInfo();
	(*classesInfo)["PIByteArray"] = ci;
	ci->name = "PIByteArray";
	ci->variables << TypeInfo("base64HelpStruct", "union");
	ci->variables << TypeInfo("base64Table", "char[64]", Const | Static);
	ci->variables << TypeInfo("base64InvTable", "char[256]", Const | Static);
	ci->variables << TypeInfo("huffman", "PIHuffman", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "resized"; fi->return_type = TypeInfo("", "PIByteArray");
	fi->arguments << TypeInfo("new_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "convertToBase64"; fi->return_type = TypeInfo("", "PIByteArray &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "convertFromBase64"; fi->return_type = TypeInfo("", "PIByteArray &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toBase64"; fi->return_type = TypeInfo("", "PIByteArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromBase64"; fi->return_type = TypeInfo("", "PIByteArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "compressRLE"; fi->return_type = TypeInfo("", "PIByteArray &");
	fi->arguments << TypeInfo("threshold", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "decompressRLE"; fi->return_type = TypeInfo("", "PIByteArray &");
	fi->arguments << TypeInfo("threshold", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "compressedRLE"; fi->return_type = TypeInfo("", "PIByteArray");
	fi->arguments << TypeInfo("threshold", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "decompressedRLE"; fi->return_type = TypeInfo("", "PIByteArray");
	fi->arguments << TypeInfo("threshold", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "compressHuffman"; fi->return_type = TypeInfo("", "PIByteArray &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "append"; fi->return_type = TypeInfo("", "PIByteArray &");
	fi->arguments << TypeInfo("data_", "void *", Const);
	fi->arguments << TypeInfo("size_", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "append"; fi->return_type = TypeInfo("", "PIByteArray &");
	fi->arguments << TypeInfo("data_", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checksumPlain8"; fi->return_type = TypeInfo("", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checksumPlain32"; fi->return_type = TypeInfo("", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checksumCRC8"; fi->return_type = TypeInfo("", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checksumCRC16"; fi->return_type = TypeInfo("", "ushort");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checksumCRC32"; fi->return_type = TypeInfo("", "uint");

	ci = new ClassInfo();
	(*classesInfo)["PIByteArray::RawData"] = ci;
	ci->name = "PIByteArray::RawData";
	ci->variables << TypeInfo("d", "void*");
	ci->variables << TypeInfo("s", "int");

	ci = new ClassInfo();
	(*classesInfo)["PIChar"] = ci;
	ci->name = "PIChar";
	ci->variables << TypeInfo("ch", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isDigit"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isHex"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isGraphical"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isControl"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isLower"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isUpper"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isPrint"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isSpace"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isAlpha"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isAscii"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toInt"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toWCharPtr"; fi->return_type = TypeInfo("", "const wchar_t *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toCharPtr"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toWChar"; fi->return_type = TypeInfo("", "wchar_t");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toAscii"; fi->return_type = TypeInfo("", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "unicode16Code"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toUpper"; fi->return_type = TypeInfo("", "PIChar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toLower"; fi->return_type = TypeInfo("", "PIChar");

	ci = new ClassInfo();
	(*classesInfo)["PIString"] = ci;
	ci->name = "PIString";
	ci->variables << TypeInfo("toBaseN", "char[]", Const | Static);
	ci->variables << TypeInfo("fromBaseN", "int[]", Const | Static);
	ci->variables << TypeInfo("data_", "PIByteArray", Mutable);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "mid"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("start", "int", Const);
	fi->arguments << TypeInfo("len", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "left"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("len", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "right"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("len", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "cutMid"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("start", "int", Const);
	fi->arguments << TypeInfo("len", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "cutLeft"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("len", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "cutRight"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("len", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "trim"; fi->return_type = TypeInfo("", "PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "trimmed"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "replace"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("from", "int", Const);
	fi->arguments << TypeInfo("count", "int", Const);
	fi->arguments << TypeInfo("with", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "replaced"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("from", "int", Const);
	fi->arguments << TypeInfo("count", "int", Const);
	fi->arguments << TypeInfo("with", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "replace"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("what", "PIString &", Const);
	fi->arguments << TypeInfo("with", "PIString &", Const);
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "replaced"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("what", "PIString &", Const);
	fi->arguments << TypeInfo("with", "PIString &", Const);
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "replaceAll"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("what", "PIString &", Const);
	fi->arguments << TypeInfo("with", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "replaceAll"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("what", "PIString &", Const);
	fi->arguments << TypeInfo("with", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "insert"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("index", "int", Const);
	fi->arguments << TypeInfo("c", "PIChar &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "insert"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("index", "int", Const);
	fi->arguments << TypeInfo("c", "char &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "insert"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("index", "int", Const);
	fi->arguments << TypeInfo("str", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "insert"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("index", "int", Const);
	fi->arguments << TypeInfo("c", "char *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "expandRightTo"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("len", "int", Const);
	fi->arguments << TypeInfo("c", "PIChar &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "expandLeftTo"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("len", "int", Const);
	fi->arguments << TypeInfo("c", "PIChar &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "reverse"; fi->return_type = TypeInfo("", "PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "reversed"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "takeMid"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("start", "int", Const);
	fi->arguments << TypeInfo("len", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "takeLeft"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("len", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "takeRight"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("len", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "takeSymbol"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "takeWord"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "takeCWord"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "takeLine"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "takeNumber"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "takeRange"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("start", "PIChar &", Const);
	fi->arguments << TypeInfo("end", "PIChar &", Const);
	fi->arguments << TypeInfo("shield", "PIChar &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "lengthAscii"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "data"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stdString"; fi->return_type = TypeInfo("", "std::string");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toByteArray"; fi->return_type = TypeInfo("", "PIByteArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "split"; fi->return_type = TypeInfo("", "PIStringList");
	fi->arguments << TypeInfo("delim", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toUpperCase"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toLowerCase"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toNativeDecimalPoints"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "find"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("str", "char", Const);
	fi->arguments << TypeInfo("start", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "find"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("str", "PIString", Const);
	fi->arguments << TypeInfo("start", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "find"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("str", "char *", Const);
	fi->arguments << TypeInfo("start", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "find"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("str", "string", Const);
	fi->arguments << TypeInfo("start", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findLast"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("str", "char", Const);
	fi->arguments << TypeInfo("start", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findLast"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("str", "PIString", Const);
	fi->arguments << TypeInfo("start", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findLast"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("str", "char *", Const);
	fi->arguments << TypeInfo("start", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findLast"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("str", "string", Const);
	fi->arguments << TypeInfo("start", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findWord"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("word", "PIString &", Const);
	fi->arguments << TypeInfo("start", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findCWord"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("word", "PIString &", Const);
	fi->arguments << TypeInfo("start", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startsWith"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("str", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "endsWith"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("str", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "length"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isEmpty"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toBool"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toChar"; fi->return_type = TypeInfo("", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toShort"; fi->return_type = TypeInfo("", "short");
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toUShort"; fi->return_type = TypeInfo("", "ushort");
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toInt"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toUInt"; fi->return_type = TypeInfo("", "uint");
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toLong"; fi->return_type = TypeInfo("", "long");
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toULong"; fi->return_type = TypeInfo("", "ulong");
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toLLong"; fi->return_type = TypeInfo("", "llong");
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toULLong"; fi->return_type = TypeInfo("", "ullong");
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toFloat"; fi->return_type = TypeInfo("", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toDouble"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toLDouble"; fi->return_type = TypeInfo("", "ldouble");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "short", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "ushort", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "int", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "uint", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "long", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "ulong", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "llong &", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "ullong &", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "float", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "double &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setNumber"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("value", "ldouble &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReadableSize"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("bytes", "llong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "short", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "ushort", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "int", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "uint", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "long", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "ulong", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "llong &", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "ullong &", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "float", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "double &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumber"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "ldouble &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromBool"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "bool", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readableSize"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("bytes", "llong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeAll"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("v", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeAll"; fi->return_type = TypeInfo("", "PIString &");
	fi->arguments << TypeInfo("v", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumberBaseS"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "llong", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNumberBaseU"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("value", "ullong", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toNumberBase"; fi->return_type = TypeInfo("", "llong", Static);
	fi->arguments << TypeInfo("value", "PIString &", Const);
	fi->arguments << TypeInfo("base", "int");
	fi->arguments << TypeInfo("ok", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "appendFromChars"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("c", "char *", Const);
	fi->arguments << TypeInfo("s", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "convertToStd"; fi->return_type = TypeInfo("", "string");

	ci = new ClassInfo();
	(*classesInfo)["PIStringList"] = ci;
	ci->name = "PIStringList";
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "join"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("delim", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeStrings"; fi->return_type = TypeInfo("", "PIStringList &");
	fi->arguments << TypeInfo("value", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "remove"; fi->return_type = TypeInfo("", "PIStringList &");
	fi->arguments << TypeInfo("num", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "remove"; fi->return_type = TypeInfo("", "PIStringList &");
	fi->arguments << TypeInfo("num", "uint");
	fi->arguments << TypeInfo("count", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeDuplicates"; fi->return_type = TypeInfo("", "PIStringList &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "trim"; fi->return_type = TypeInfo("", "PIStringList &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "contentSize"; fi->return_type = TypeInfo("", "uint");

	ci = new ClassInfo();
	(*classesInfo)["PISystemTime"] = ci;
	ci->name = "PISystemTime";
	ci->variables << TypeInfo("seconds", "long");
	ci->variables << TypeInfo("nanoseconds", "long");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toSeconds"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toMilliseconds"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toMicroseconds"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toNanoseconds"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addSeconds"; fi->return_type = TypeInfo("", "PISystemTime &");
	fi->arguments << TypeInfo("v", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addMilliseconds"; fi->return_type = TypeInfo("", "PISystemTime &");
	fi->arguments << TypeInfo("v", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addMicroseconds"; fi->return_type = TypeInfo("", "PISystemTime &");
	fi->arguments << TypeInfo("v", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addNanoseconds"; fi->return_type = TypeInfo("", "PISystemTime &");
	fi->arguments << TypeInfo("v", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sleep"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "abs"; fi->return_type = TypeInfo("", "PISystemTime");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromSeconds"; fi->return_type = TypeInfo("", "PISystemTime", Static);
	fi->arguments << TypeInfo("v", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromMilliseconds"; fi->return_type = TypeInfo("", "PISystemTime", Static);
	fi->arguments << TypeInfo("v", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromMicroseconds"; fi->return_type = TypeInfo("", "PISystemTime", Static);
	fi->arguments << TypeInfo("v", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromNanoseconds"; fi->return_type = TypeInfo("", "PISystemTime", Static);
	fi->arguments << TypeInfo("v", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checkOverflows"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PITime"] = ci;
	ci->name = "PITime";
	ci->variables << TypeInfo("milliseconds", "int");
	ci->variables << TypeInfo("seconds", "int");
	ci->variables << TypeInfo("minutes", "int");
	ci->variables << TypeInfo("hours", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toString"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("format", "PIString &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIDate"] = ci;
	ci->name = "PIDate";
	ci->variables << TypeInfo("day", "int");
	ci->variables << TypeInfo("month", "int");
	ci->variables << TypeInfo("year", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toString"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("format", "PIString &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIDateTime"] = ci;
	ci->name = "PIDateTime";
	ci->variables << TypeInfo("milliseconds", "int");
	ci->variables << TypeInfo("seconds", "int");
	ci->variables << TypeInfo("minutes", "int");
	ci->variables << TypeInfo("hours", "int");
	ci->variables << TypeInfo("day", "int");
	ci->variables << TypeInfo("month", "int");
	ci->variables << TypeInfo("year", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "normalized"; fi->return_type = TypeInfo("", "PIDateTime");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "normalize"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toString"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("format", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toSecondSinceEpoch"; fi->return_type = TypeInfo("", "time_t");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toSystemTime"; fi->return_type = TypeInfo("", "PISystemTime");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromSecondSinceEpoch"; fi->return_type = TypeInfo("", "PIDateTime", Static);
	fi->arguments << TypeInfo("sec", "time_t", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromSystemTime"; fi->return_type = TypeInfo("", "PIDateTime", Static);
	fi->arguments << TypeInfo("st", "PISystemTime &", Const);

	ci = new ClassInfo();
	(*classesInfo)["TransferFunction"] = ci;
	ci->name = "TransferFunction";
	ci->variables << TypeInfo("vector_Bm", "PIVector<double>");
	ci->variables << TypeInfo("vector_An", "PIVector<double>");

	ci = new ClassInfo();
	(*classesInfo)["Solver"] = ci;
	ci->name = "Solver";
	ci->variables << TypeInfo("X", "PIMathVectord");
	ci->variables << TypeInfo("method_global", "Solver::Method", Static);
	ci->variables << TypeInfo("methods_desc", "char[]", Const | Static);
	ci->variables << TypeInfo("A", "PIMathMatrixd");
	ci->variables << TypeInfo("M", "PIMathMatrixd");
	ci->variables << TypeInfo("d", "PIMathVectord");
	ci->variables << TypeInfo("a1", "PIMathVectord");
	ci->variables << TypeInfo("b1", "PIMathVectord");
	ci->variables << TypeInfo("k1", "PIMathVectord");
	ci->variables << TypeInfo("k2", "PIMathVectord");
	ci->variables << TypeInfo("k3", "PIMathVectord");
	ci->variables << TypeInfo("k4", "PIMathVectord");
	ci->variables << TypeInfo("xx", "PIMathVectord");
	ci->variables << TypeInfo("XX", "PIMathVectord");
	ci->variables << TypeInfo("Y", "PIMathVectord");
	ci->variables << TypeInfo("pY", "PIMathVectord");
	ci->variables << TypeInfo("F", "PIVector<PIMathVectord>");
	ci->variables << TypeInfo("times", "PIVector<double>");
	ci->variables << TypeInfo("size", "uint");
	ci->variables << TypeInfo("step", "uint");
	ci->variables << TypeInfo("method", "Solver::Method");
	ci->variables << TypeInfo("sum", "double");
	ci->variables << TypeInfo("td", "double");
	ci->variables << TypeInfo("ct", "double");
	ci->variables << TypeInfo("lp", "double");
	ci->variables << TypeInfo("dh", "double");
	ci->variables << TypeInfo("t", "double");
	ci->variables << TypeInfo("x1", "double");
	ci->variables << TypeInfo("x0", "double");
	ci->variables << TypeInfo("ok", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solve"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fromTF"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("TF", "TransferFunction &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setMethod"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("m", "Method");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setTime"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("time", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solveEyler1"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solveEyler2"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solveRK4"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solveABM2"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solveABM3"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solveABM4"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solvePA"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	fi->arguments << TypeInfo("deg", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solvePA2"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solvePA3"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solvePA4"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "solvePA5"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("u", "double");
	fi->arguments << TypeInfo("h", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "moveF"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PIFFT"] = ci;
	ci->name = "PIFFT";
	ci->variables << TypeInfo("result", "PIVector<complexd>");
	ci->variables << TypeInfo("prepared", "bool");
	ci->variables << TypeInfo("curplan", "PIFFT::ftplan");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "calcFFT"; fi->return_type = TypeInfo("", "PIVector<complexd> *");
	fi->arguments << TypeInfo("val", "PIVector<complexd> &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "calcFFT"; fi->return_type = TypeInfo("", "PIVector<complexd> *");
	fi->arguments << TypeInfo("val", "PIVector<double> &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "calcFFTinverse"; fi->return_type = TypeInfo("", "PIVector<complexd> *");
	fi->arguments << TypeInfo("val", "PIVector<complexd> &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "calcHilbert"; fi->return_type = TypeInfo("", "PIVector<complexd> *");
	fi->arguments << TypeInfo("val", "PIVector<double> &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getAmplitude"; fi->return_type = TypeInfo("", "PIVector<double>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "calc_coefs"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("cnt2", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "calc_indexes"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("cnt2", "uint");
	fi->arguments << TypeInfo("deep2", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "coef"; fi->return_type = TypeInfo("", "complexd");
	fi->arguments << TypeInfo("n", "uint");
	fi->arguments << TypeInfo("k", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fftc1d"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("a", "PIVector<complexd> &", Const);
	fi->arguments << TypeInfo("n", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fftc1r"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("a", "PIVector<double> &", Const);
	fi->arguments << TypeInfo("n", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fftc1dinv"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("a", "PIVector<complexd> &", Const);
	fi->arguments << TypeInfo("n", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "createPlan"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("n", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbasegeneratecomplexfftplan"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("n", "uint");
	fi->arguments << TypeInfo("plan", "ftplan *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbase_ftbasegenerateplanrec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("n", "int");
	fi->arguments << TypeInfo("tasktype", "int");
	fi->arguments << TypeInfo("plan", "ftplan *");
	fi->arguments << TypeInfo("plansize", "int *");
	fi->arguments << TypeInfo("precomputedsize", "int *");
	fi->arguments << TypeInfo("planarraysize", "int *");
	fi->arguments << TypeInfo("tmpmemsize", "int *");
	fi->arguments << TypeInfo("stackmemsize", "int *");
	fi->arguments << TypeInfo("stackptr", "ae_int_t");
	fi->arguments << TypeInfo("debugi", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbase_ftbaseprecomputeplanrec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("plan", "ftplan *");
	fi->arguments << TypeInfo("entryoffset", "int");
	fi->arguments << TypeInfo("stackptr", "ae_int_t");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbasefactorize"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("n", "int");
	fi->arguments << TypeInfo("n1", "int *");
	fi->arguments << TypeInfo("n2", "int *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbase_ftbasefindsmoothrec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("n", "int");
	fi->arguments << TypeInfo("seed", "int");
	fi->arguments << TypeInfo("leastfactor", "int");
	fi->arguments << TypeInfo("best", "int *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbasefindsmooth"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("n", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbaseexecuteplan"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("a", "PIVector<double> *");
	fi->arguments << TypeInfo("aoffset", "int");
	fi->arguments << TypeInfo("n", "int");
	fi->arguments << TypeInfo("plan", "ftplan *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbaseexecuteplanrec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("a", "PIVector<double> *");
	fi->arguments << TypeInfo("aoffset", "int");
	fi->arguments << TypeInfo("plan", "ftplan *");
	fi->arguments << TypeInfo("entryoffset", "int");
	fi->arguments << TypeInfo("stackptr", "ae_int_t");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbase_internalcomplexlintranspose"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("a", "PIVector<double> *");
	fi->arguments << TypeInfo("m", "int");
	fi->arguments << TypeInfo("n", "int");
	fi->arguments << TypeInfo("astart", "int");
	fi->arguments << TypeInfo("buf", "PIVector<double> *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbase_ffticltrec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("a", "PIVector<double> *");
	fi->arguments << TypeInfo("astart", "int");
	fi->arguments << TypeInfo("astride", "int");
	fi->arguments << TypeInfo("b", "PIVector<double> *");
	fi->arguments << TypeInfo("bstart", "int");
	fi->arguments << TypeInfo("bstride", "int");
	fi->arguments << TypeInfo("m", "int");
	fi->arguments << TypeInfo("n", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbase_internalreallintranspose"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("a", "PIVector<double> *");
	fi->arguments << TypeInfo("m", "int");
	fi->arguments << TypeInfo("n", "int");
	fi->arguments << TypeInfo("astart", "int");
	fi->arguments << TypeInfo("buf", "PIVector<double> *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbase_fftirltrec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("a", "PIVector<double> *");
	fi->arguments << TypeInfo("astart", "int");
	fi->arguments << TypeInfo("astride", "int");
	fi->arguments << TypeInfo("b", "PIVector<double> *");
	fi->arguments << TypeInfo("bstart", "int");
	fi->arguments << TypeInfo("bstride", "int");
	fi->arguments << TypeInfo("m", "int");
	fi->arguments << TypeInfo("n", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ftbase_ffttwcalc"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("a", "PIVector<double> *");
	fi->arguments << TypeInfo("aoffset", "int");
	fi->arguments << TypeInfo("n1", "int");
	fi->arguments << TypeInfo("n2", "int");

	ci = new ClassInfo();
	(*classesInfo)["PIFFT::ftplan"] = ci;
	ci->name = "PIFFT::ftplan";
	ci->variables << TypeInfo("plan", "PIVector<int>");
	ci->variables << TypeInfo("precomputed", "PIVector<double>");
	ci->variables << TypeInfo("tmpbuf", "PIVector<double>");
	ci->variables << TypeInfo("stackbuf", "PIVector<double>");

	ci = new ClassInfo();
	(*classesInfo)["PIVariant"] = ci;
	ci->name = "PIVariant";
	ci->variables << TypeInfo("nion", "u");
	ci->variables << TypeInfo("_vbitarray", "PIBitArray");
	ci->variables << TypeInfo("_vbytearray", "PIByteArray");
	ci->variables << TypeInfo("_vstring", "PIString");
	ci->variables << TypeInfo("_vstringlist", "PIStringList");
	ci->variables << TypeInfo("_vcustom", "PIByteArray");
	ci->variables << TypeInfo("type_", "PIVariant::Type");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "char *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "bool", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "char", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "uchar", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "short", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "ushort", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "int &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "uint &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "long &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "ulong &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "llong &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "ullong &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "float &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "double &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "ldouble &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "complexd &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "complexld &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "PIBitArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "PIStringList &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "PITime &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "PIDate &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "PIDateTime &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "PISystemTime &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toBool"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toInt"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toLLong"; fi->return_type = TypeInfo("", "llong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toFloat"; fi->return_type = TypeInfo("", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toDouble"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toLDouble"; fi->return_type = TypeInfo("", "ldouble");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toComplexd"; fi->return_type = TypeInfo("", "complexd");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toComplexld"; fi->return_type = TypeInfo("", "complexld");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toTime"; fi->return_type = TypeInfo("", "PITime");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toDate"; fi->return_type = TypeInfo("", "PIDate");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toDateTime"; fi->return_type = TypeInfo("", "PIDateTime");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toSystemTime"; fi->return_type = TypeInfo("", "PISystemTime");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toString"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toStringList"; fi->return_type = TypeInfo("", "PIStringList");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toBitArray"; fi->return_type = TypeInfo("", "PIBitArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toByteArray"; fi->return_type = TypeInfo("", "PIByteArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "type"; fi->return_type = TypeInfo("", "PIVariant::Type");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "typeName"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isValid"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "typeFromName"; fi->return_type = TypeInfo("", "PIVariant::Type", Static);
	fi->arguments << TypeInfo("tname", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "typeName"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("type", "PIVariant::Type");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "destroy"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PIObject"] = ci;
	ci->name = "PIObject";
	ci->variables << TypeInfo("connections", "PIVector<Connection>");
	ci->variables << TypeInfo("properties_", "PIMap<PIString, PIVariant>");
	ci->variables << TypeInfo("objects", "PIVector<PIObject * >", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "name"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "debug"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setName"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDebug"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("debug", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "properties"; fi->return_type = TypeInfo("", "const PIMap<PIString, PIVariant> &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "propertiesCount"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "property"; fi->return_type = TypeInfo("", "PIVariant");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setProperty"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "PIVariant &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isPropertyExists"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piConnect"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("src", "PIObject *");
	fi->arguments << TypeInfo("sig", "PIString &", Const);
	fi->arguments << TypeInfo("dest", "void *");
	fi->arguments << TypeInfo("ev_h", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piConnect"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("src", "PIObject *");
	fi->arguments << TypeInfo("sig", "PIString &", Const);
	fi->arguments << TypeInfo("dest", "void *");
	fi->arguments << TypeInfo("ev_h", "void *");
	fi->arguments << TypeInfo("e_h", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piConnect"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("src", "PIString &", Const);
	fi->arguments << TypeInfo("sig", "PIString &", Const);
	fi->arguments << TypeInfo("dest", "void *");
	fi->arguments << TypeInfo("ev_h", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piConnect"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("src", "PIObject *");
	fi->arguments << TypeInfo("sig", "PIString &", Const);
	fi->arguments << TypeInfo("dest", "PIString &", Const);
	fi->arguments << TypeInfo("ev_h", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piConnect"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("src", "PIString &", Const);
	fi->arguments << TypeInfo("sig", "PIString &", Const);
	fi->arguments << TypeInfo("dest", "PIString &", Const);
	fi->arguments << TypeInfo("ev_h", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piDisconnect"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("src", "PIObject *");
	fi->arguments << TypeInfo("sig", "PIString &", Const);
	fi->arguments << TypeInfo("dest", "void *");
	fi->arguments << TypeInfo("ev_h", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piDisconnect"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("src", "PIObject *");
	fi->arguments << TypeInfo("sig", "PIString &", Const);
	fi->arguments << TypeInfo("dest", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piDisconnect"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("src", "PIObject *");
	fi->arguments << TypeInfo("sig", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piDisconnect"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("src", "PIObject *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "raiseEvent"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("sender", "PIObject *");
	fi->arguments << TypeInfo("event", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "raiseEvent"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("destObject", "PIString &", Const);
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findByName"; fi->return_type = TypeInfo("", "PIObject *", Static);
	fi->arguments << TypeInfo("name", "PIString &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIObject::Connection"] = ci;
	ci->name = "PIObject::Connection";
	ci->variables << TypeInfo("slot", "void*");
	ci->variables << TypeInfo("signal", "void*");
	ci->variables << TypeInfo("event", "PIString");
	ci->variables << TypeInfo("dest", "void*");

	ci = new ClassInfo();
	(*classesInfo)["PIThread"] = ci;
	ci->name = "PIThread";
	ci->parents << "PIObject";
	ci->variables << TypeInfo("terminating", "bool", Volatile);
	ci->variables << TypeInfo("running", "bool", Volatile);
	ci->variables << TypeInfo("lockRun", "bool", Volatile);
	ci->variables << TypeInfo("timer", "int");
	ci->variables << TypeInfo("policy", "int");
	ci->variables << TypeInfo("data_", "void*");
	ci->variables << TypeInfo("mutex_", "PIMutex");
	ci->variables << TypeInfo("priority_", "PIThread::Priority");
	ci->variables << TypeInfo("ret_func", "ThreadFunc");
	ci->variables << TypeInfo("thread", "pthread_t");
	ci->variables << TypeInfo("sparam", "sched_param");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("timer_delay", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("timer_delay", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("func", "ThreadFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("func", "ThreadFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("func", "ThreadFunc");
	fi->arguments << TypeInfo("timer_delay", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("func", "ThreadFunc");
	fi->arguments << TypeInfo("timer_delay", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_startOnce__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startOnce"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_startOnce__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("func", "ThreadFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startOnce"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("func", "ThreadFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_stop__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stop"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_stop__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("wait", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stop"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("wait", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_terminate__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "terminate"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("d", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSlot"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("func", "ThreadFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setPriority"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("prior", "PIThread::Priority");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "priority"; fi->return_type = TypeInfo("", "PIThread::Priority");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isRunning"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isStopping"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_waitForStart__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "waitForStart"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_waitForStart__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("timeout_msecs", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "waitForStart"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("timeout_msecs", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_waitForFinish__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "waitForFinish"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_waitForFinish__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("timeout_msecs", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "waitForFinish"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("timeout_msecs", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "needLockRun"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("need", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_lock__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "lock"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_unlock__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "unlock"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "mutex"; fi->return_type = TypeInfo("", "PIMutex &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_started__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "started"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_stopped__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stopped"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "thread_function"; fi->return_type = TypeInfo("", "void *", Static);
	fi->arguments << TypeInfo("t", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "thread_function_once"; fi->return_type = TypeInfo("", "void *", Static);
	fi->arguments << TypeInfo("t", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "begin"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "run"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "end"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PITimer"] = ci;
	ci->name = "PITimer";
	ci->parents << "PIThread";
	ci->variables << TypeInfo("st_time", "PISystemTime");
	ci->variables << TypeInfo("inc_time", "PISystemTime");
	ci->variables << TypeInfo("deferred_", "bool");
	ci->variables << TypeInfo("running_", "bool");
	ci->variables << TypeInfo("interval_", "double");
	ci->variables << TypeInfo("t_st", "timespec");
	ci->variables << TypeInfo("t_cur", "timespec");
	ci->variables << TypeInfo("data", "void*");
	ci->variables << TypeInfo("ret_func", "TimerEvent");
	ci->variables << TypeInfo("ret_funcs", "PIVector<TimerSlot>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data_", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSlot"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("slot", "TimerEvent");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "interval"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_reset__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "reset"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("msecs", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("msecs", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("msecs", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("msecs", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_deferredStart__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("interval_msecs", "double");
	fi->arguments << TypeInfo("delay_msecs", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "deferredStart"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("interval_msecs", "double");
	fi->arguments << TypeInfo("delay_msecs", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_deferredStart__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("interval_msecs", "double");
	fi->arguments << TypeInfo("start_datetime", "PIDateTime &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "deferredStart"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("interval_msecs", "double");
	fi->arguments << TypeInfo("start_datetime", "PIDateTime &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_stop__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stop"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addDelimiter"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("delim", "int");
	fi->arguments << TypeInfo("slot", "TimerEvent");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeDelimiter"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("delim", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeDelimiter"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("slot", "TimerEvent");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeDelimiter"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("delim", "int");
	fi->arguments << TypeInfo("slot", "TimerEvent");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDelimiterValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("delim", "int");
	fi->arguments << TypeInfo("value", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDelimiterValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("slot", "TimerEvent");
	fi->arguments << TypeInfo("value", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDelimiterValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("delim", "int");
	fi->arguments << TypeInfo("slot", "TimerEvent");
	fi->arguments << TypeInfo("value", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "delimiterValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("delim", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "delimiterValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("delim", "int");
	fi->arguments << TypeInfo("slot", "TimerEvent");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_clearDelimiters__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearDelimiters"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "elapsed_n"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "elapsed_u"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "elapsed_m"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "elapsed_s"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "reset_time_n"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "reset_time_u"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "reset_time_m"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "reset_time_s"; fi->return_type = TypeInfo("", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "reset_time"; fi->return_type = TypeInfo("", "PISystemTime");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "elapsed_system_n"; fi->return_type = TypeInfo("", "double", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "elapsed_system_u"; fi->return_type = TypeInfo("", "double", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "elapsed_system_m"; fi->return_type = TypeInfo("", "double", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "elapsed_system_s"; fi->return_type = TypeInfo("", "double", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_timeout__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("delimiter", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "timeout"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("delimiter", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "tick"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("delimiter", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "run"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "end"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PITimer::TimerSlot"] = ci;
	ci->name = "PITimer::TimerSlot";
	ci->variables << TypeInfo("slot", "TimerEvent");
	ci->variables << TypeInfo("delim", "int");
	ci->variables << TypeInfo("tick", "int");

	ci = new ClassInfo();
	(*classesInfo)["PIKbdListener"] = ci;
	ci->name = "PIKbdListener";
	ci->parents << "PIThread";
	ci->variables << TypeInfo("exiting", "bool", Static);
	ci->variables << TypeInfo("ret_func", "KBFunc");
	ci->variables << TypeInfo("exit_key", "char");
	ci->variables << TypeInfo("exit_enabled", "bool");
	ci->variables << TypeInfo("is_active", "bool");
	ci->variables << TypeInfo("data_", "void*");
	ci->variables << TypeInfo("rc", "int");
	ci->variables << TypeInfo("ret", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "data"; fi->return_type = TypeInfo("", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("_data", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSlot"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("slot", "KBFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exitCaptured"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exitKey"; fi->return_type = TypeInfo("", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isActive"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_enableExitCapture__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "enableExitCapture"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_enableExitCapture__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("key", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "enableExitCapture"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("key", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_disableExitCapture__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "disableExitCapture"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_setActive__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setActive"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_setActive__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("yes", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setActive"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("yes", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_keyPressed__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("key", "char");
	fi->arguments << TypeInfo("data", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "keyPressed"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("key", "char");
	fi->arguments << TypeInfo("data", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "begin"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "run"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "end"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PICollection"] = ci;
	ci->name = "PICollection";
	ci->variables << TypeInfo("_groups", "PIVector<Group>*", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "groups"; fi->return_type = TypeInfo("", "PIStringList", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "groupElements"; fi->return_type = TypeInfo("", "PIVector<const PIObject * >", Static);
	fi->arguments << TypeInfo("group", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addToGroup"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("group", "PIString &", Const);
	fi->arguments << TypeInfo("element", "PIObject *", Const);

	ci = new ClassInfo();
	(*classesInfo)["PICollection::CollectionAdder"] = ci;
	ci->name = "PICollection::CollectionAdder";

	ci = new ClassInfo();
	(*classesInfo)["PICollection::Group"] = ci;
	ci->name = "PICollection::Group";
	ci->variables << TypeInfo("name", "PIString");
	ci->variables << TypeInfo("elements", "PIVector<const PIObject * >");

	ci = new ClassInfo();
	(*classesInfo)["__PICollectionInitializer"] = ci;
	ci->name = "__PICollectionInitializer";
	ci->variables << TypeInfo("_inited_", "bool", Static);

	ci = new ClassInfo();
	(*classesInfo)["PIIODevice"] = ci;
	ci->name = "PIIODevice";
	ci->parents << "PIThread";
	ci->variables << TypeInfo("mode_", "PIIODevice::DeviceMode");
	ci->variables << TypeInfo("ret_func_", "ReadRetFunc");
	ci->variables << TypeInfo("init_", "bool");
	ci->variables << TypeInfo("opened_", "bool");
	ci->variables << TypeInfo("thread_started_", "bool");
	ci->variables << TypeInfo("raise_threaded_read_", "bool");
	ci->variables << TypeInfo("ret_data_", "void*");
	ci->variables << TypeInfo("timer", "PITimer");
	ci->variables << TypeInfo("write_thread", "PIThread");
	ci->variables << TypeInfo("buffer_in", "PIByteArray");
	ci->variables << TypeInfo("buffer_tr", "PIByteArray");
	ci->variables << TypeInfo("write_queue", "PIQueue<PIPair<PIByteArray, ullong> >");
	ci->variables << TypeInfo("tri", "ullong");
	ci->variables << TypeInfo("readed_", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "mode"; fi->return_type = TypeInfo("", "PIIODevice::DeviceMode");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "path"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setPath"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isReadable"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isWriteable"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isInitialized"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isOpened"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isClosed"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "canRead"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "canWrite"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReopenEnabled"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("yes", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReopenTimeout"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("msecs", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isReopenEnabled"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "reopenTimeout"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setThreadedReadSlot"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("func", "ReadRetFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setThreadedReadData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("d", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setThreadedReadBufferSize"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("new_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "threadedReadBufferSize"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "threadedReadBuffer"; fi->return_type = TypeInfo("", "const uchar *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isThreadedRead"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startThreadedRead"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startThreadedRead"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("func", "ReadRetFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stopThreadedRead"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isThreadedWrite"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startThreadedWrite"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stopThreadedWrite"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearThreadedWriteQueue"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stop"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("wait", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "read"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("read_to", "void *");
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "read"; fi->return_type = TypeInfo("", "PIByteArray");
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readForTime"; fi->return_type = TypeInfo("", "PIByteArray");
	fi->arguments << TypeInfo("timeout_ms", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeThreaded"; fi->return_type = TypeInfo("", "ullong");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeThreaded"; fi->return_type = TypeInfo("", "ullong");
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configure"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("config_file", "PIString &", Const);
	fi->arguments << TypeInfo("section", "PIString &", Const);
	fi->arguments << TypeInfo("parent_section", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "createFromFullPath"; fi->return_type = TypeInfo("", "PIIODevice *", Static);
	fi->arguments << TypeInfo("full_path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_open__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "open"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_open__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("_path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "open"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("_path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_open__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("_type", "DeviceMode &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "open"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("_type", "DeviceMode &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_open__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("_path", "PIString &", Const);
	fi->arguments << TypeInfo("_mode", "DeviceMode &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "open"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("_path", "PIString &", Const);
	fi->arguments << TypeInfo("_mode", "DeviceMode &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_close__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "close"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_initialize__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "initialize"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_flush__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "flush"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_opened__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "opened"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_closed__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "closed"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_threadedReadEvent__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("readed", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "threadedReadEvent"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("readed", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_threadedWriteEvent__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("id", "ullong");
	fi->arguments << TypeInfo("written_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "threadedWriteEvent"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("id", "ullong");
	fi->arguments << TypeInfo("written_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "init"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configureDevice"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("e_main", "void *", Const);
	fi->arguments << TypeInfo("e_parent", "void *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "openDevice"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "closeDevice"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "threadedRead"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("readed", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fullPathPrefix"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "constructFullPath"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configureFromFullPath"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("full_path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "terminate"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_check_start__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("delim", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "check_start"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("delim", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_write_func__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write_func"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "copy"; fi->return_type = TypeInfo("", "PIIODevice *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "_init"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "begin"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "run"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "end"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PISerial"] = ci;
	ci->name = "PISerial";
	ci->parents << "PIIODevice";
	ci->variables << TypeInfo("desc", "termios");
	ci->variables << TypeInfo("sdesc", "termios");
	ci->variables << TypeInfo("readed", "uint");
	ci->variables << TypeInfo("fd", "int");
	ci->variables << TypeInfo("vtime", "int");
	ci->variables << TypeInfo("block_read", "bool");
	ci->variables << TypeInfo("timer", "PITimer");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "copy"; fi->return_type = TypeInfo("", "PIIODevice *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSpeed"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("speed", "PISerial::Speed");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setOutSpeed"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("speed", "PISerial::Speed");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setInSpeed"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("speed", "PISerial::Speed");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDevice"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("dev", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setParameters"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("parameters_", "PIFlags<PISerial::Parameters>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setParameter"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("parameter", "PISerial::Parameters");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isParameterSet"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("parameter", "PISerial::Parameters");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "parameters"; fi->return_type = TypeInfo("", "PIFlags<PISerial::Parameters>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDataBitsCount"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("bits", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "dataBitsCount"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setPin"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("number", "int");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isPin"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("number", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setLE"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDTR"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setRTS"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setCTS"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setST"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSR"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setCAR"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setRNG"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDSR"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isLE"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isDTR"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isRTS"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isCTS"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isST"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isSR"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isCAR"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isRNG"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isDSR"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setVTime"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("t", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReadIsBlocking"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("yes", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "device"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "outSpeed"; fi->return_type = TypeInfo("", "PISerial::Speed");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "inSpeed"; fi->return_type = TypeInfo("", "PISerial::Speed");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "VTime"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "flush"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "read"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("read_to", "void *");
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "read"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("read_to", "void *");
	fi->arguments << TypeInfo("max_size", "int");
	fi->arguments << TypeInfo("timeout_ms", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "read"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("size", "int");
	fi->arguments << TypeInfo("timeout_ms", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readData"; fi->return_type = TypeInfo("", "PIByteArray");
	fi->arguments << TypeInfo("size", "int");
	fi->arguments << TypeInfo("timeout_ms", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("max_size", "int");
	fi->arguments << TypeInfo("wait", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	fi->arguments << TypeInfo("wait", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("data", "PIString &", Const);
	fi->arguments << TypeInfo("wait", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	fi->arguments << TypeInfo("wait", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "availableSpeeds"; fi->return_type = TypeInfo("", "PIVector<int>", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "availableDevices"; fi->return_type = TypeInfo("", "PIStringList", Static);
	fi->arguments << TypeInfo("test", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fullPathPrefix"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configureFromFullPath"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("full_path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configureDevice"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("e_main", "void *", Const);
	fi->arguments << TypeInfo("e_parent", "void *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "received"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "_init"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "applySettings"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "convertSpeed"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("speed", "PISerial::Speed");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setBit"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("bit", "int");
	fi->arguments << TypeInfo("on", "bool");
	fi->arguments << TypeInfo("bname", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isBit"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("bit", "int");
	fi->arguments << TypeInfo("bname", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "openDevice"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "closeDevice"; fi->return_type = TypeInfo("", "bool");

	ci = new ClassInfo();
	(*classesInfo)["PIFile"] = ci;
	ci->name = "PIFile";
	ci->parents << "PIIODevice";
	ci->variables << TypeInfo("fd", "FILE*");
	ci->variables << TypeInfo("ret", "int");
	ci->variables << TypeInfo("prec_", "int");
	ci->variables << TypeInfo("prec_str", "string");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "copy"; fi->return_type = TypeInfo("", "PIIODevice *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "flush"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "seek"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("position", "llong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "seekToBegin"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "seekToEnd"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "seekToLine"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("line", "llong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readChar"; fi->return_type = TypeInfo("", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readLine"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readAll"; fi->return_type = TypeInfo("", "llong");
	fi->arguments << TypeInfo("data", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readAll"; fi->return_type = TypeInfo("", "PIByteArray");
	fi->arguments << TypeInfo("forceRead", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setPath"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "size"; fi->return_type = TypeInfo("", "llong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "pos"; fi->return_type = TypeInfo("", "llong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isEnd"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isEmpty"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "precision"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setPrecision"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("prec", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "read"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("read_to", "void *");
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeToBinLog"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("id", "ushort");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "char", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "short", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "long", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "llong", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "uchar", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "ushort", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "uint", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "ulong", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "ullong", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "float", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinary"; fi->return_type = TypeInfo("", "PIFile &");
	fi->arguments << TypeInfo("v", "double", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_clear__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clear"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_remove__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "remove"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_resize__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("new_size", "llong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "resize"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("new_size", "llong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_resize__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("new_size", "llong");
	fi->arguments << TypeInfo("fill", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "resize"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("new_size", "llong");
	fi->arguments << TypeInfo("fill", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "openTemporary"; fi->return_type = TypeInfo("", "PIFile", Static);
	fi->arguments << TypeInfo("mode", "PIIODevice::DeviceMode");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isExists"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "remove"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fullPathPrefix"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configureFromFullPath"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("full_path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "openDevice"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "closeDevice"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "strType"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("type", "PIIODevice::DeviceMode", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIProcess"] = ci;
	ci->name = "PIProcess";
	ci->parents << "PIThread";
	ci->variables << TypeInfo("args", "PIStringList");
	ci->variables << TypeInfo("env", "PIStringList");
	ci->variables << TypeInfo("wd", "PIString");
	ci->variables << TypeInfo("out", "PIByteArray");
	ci->variables << TypeInfo("f_in", "PIFile");
	ci->variables << TypeInfo("f_out", "PIFile");
	ci->variables << TypeInfo("f_err", "PIFile");
	ci->variables << TypeInfo("g_in", "bool");
	ci->variables << TypeInfo("g_out", "bool");
	ci->variables << TypeInfo("g_err", "bool");
	ci->variables << TypeInfo("t_in", "bool");
	ci->variables << TypeInfo("t_out", "bool");
	ci->variables << TypeInfo("t_err", "bool");
	ci->variables << TypeInfo("pid", "pid_t");
	ci->variables << TypeInfo("tf_in", "FILE*");
	ci->variables << TypeInfo("tf_out", "FILE*");
	ci->variables << TypeInfo("tf_err", "FILE*");
	ci->variables << TypeInfo("exit_code", "int");
	ci->variables << TypeInfo("sz", "int");
	ci->variables << TypeInfo("as", "int");
	ci->variables << TypeInfo("is_exec", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exitCode"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "pID"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setGrabInput"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("yes", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setGrabOutput"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("yes", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setGrabError"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("yes", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setInputFile"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setOutputFile"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setErrorFile"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "unsetInputFile"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "unsetOutputFile"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "unsetErrorFile"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "workingDirectory"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setWorkingDirectory"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "resetWorkingDirectory"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readOutput"; fi->return_type = TypeInfo("", "PIByteArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readError"; fi->return_type = TypeInfo("", "PIByteArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "environment"; fi->return_type = TypeInfo("", "PIStringList");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearEnvironment"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeEnvironmentVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("variable", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setEnvironmentVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("variable", "PIString &", Const);
	fi->arguments << TypeInfo("value", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_exec__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("program", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("program", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_exec__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("program", "PIString &", Const);
	fi->arguments << TypeInfo("arg", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("program", "PIString &", Const);
	fi->arguments << TypeInfo("arg", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_exec__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("program", "PIString &", Const);
	fi->arguments << TypeInfo("arg1", "PIString &", Const);
	fi->arguments << TypeInfo("arg2", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("program", "PIString &", Const);
	fi->arguments << TypeInfo("arg1", "PIString &", Const);
	fi->arguments << TypeInfo("arg2", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_exec__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("program", "PIString &", Const);
	fi->arguments << TypeInfo("arg1", "PIString &", Const);
	fi->arguments << TypeInfo("arg2", "PIString &", Const);
	fi->arguments << TypeInfo("arg3", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("program", "PIString &", Const);
	fi->arguments << TypeInfo("arg1", "PIString &", Const);
	fi->arguments << TypeInfo("arg2", "PIString &", Const);
	fi->arguments << TypeInfo("arg3", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_exec__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("program", "PIString &", Const);
	fi->arguments << TypeInfo("args_", "PIStringList &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exec"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("program", "PIString &", Const);
	fi->arguments << TypeInfo("args_", "PIStringList &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_terminate__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "terminate"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_waitForFinish__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "waitForFinish"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_waitForFinish__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("timeout_msecs", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "waitForFinish"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("timeout_msecs", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_execStarted__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("program", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "execStarted"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("program", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_execFinished__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("program", "PIString");
	fi->arguments << TypeInfo("exit_code", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "execFinished"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("program", "PIString");
	fi->arguments << TypeInfo("exit_code", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "currentEnvironment"; fi->return_type = TypeInfo("", "PIStringList", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "currentPID"; fi->return_type = TypeInfo("", "int", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "run"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exec_"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PIEthernet"] = ci;
	ci->name = "PIEthernet";
	ci->parents << "PIIODevice";
	ci->variables << TypeInfo("sock", "int");
	ci->variables << TypeInfo("sock_s", "int");
	ci->variables << TypeInfo("port_", "int");
	ci->variables << TypeInfo("port_s", "int");
	ci->variables << TypeInfo("port_c", "int");
	ci->variables << TypeInfo("wrote", "int");
	ci->variables << TypeInfo("connected_", "bool");
	ci->variables << TypeInfo("connecting_", "bool");
	ci->variables << TypeInfo("addr_", "sockaddr_in");
	ci->variables << TypeInfo("saddr_", "sockaddr_in");
	ci->variables << TypeInfo("ip_", "PIString");
	ci->variables << TypeInfo("ip_s", "PIString");
	ci->variables << TypeInfo("ip_c", "PIString");
	ci->variables << TypeInfo("server_thread_", "PIThread");
	ci->variables << TypeInfo("clients_", "PIVector<PIEthernet * >");
	ci->variables << TypeInfo("mcast_queue", "PIQueue<PIString>");
	ci->variables << TypeInfo("mcast_groups", "PIStringList");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "copy"; fi->return_type = TypeInfo("", "PIIODevice *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReadAddress"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	fi->arguments << TypeInfo("port", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReadAddress"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ip_port", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReadIP"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReadPort"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("port", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSendAddress"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	fi->arguments << TypeInfo("port", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSendAddress"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ip_port", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSendIP"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSendPort"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("port", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readAddress"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readIP"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readPort"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendAddress"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendIP"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendPort"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setParameters"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("parameters_", "PIFlags<PIEthernet::Parameters>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setParameter"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("parameter", "PIEthernet::Parameters");
	fi->arguments << TypeInfo("on", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isParameterSet"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("parameter", "PIEthernet::Parameters");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "parameters"; fi->return_type = TypeInfo("", "PIFlags<PIEthernet::Parameters>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "type"; fi->return_type = TypeInfo("", "PIEthernet::Type");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "joinMulticastGroup"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("group", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "leaveMulticastGroup"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("group", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "multicastGroups"; fi->return_type = TypeInfo("", "const PIStringList &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "connect"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "connect"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	fi->arguments << TypeInfo("port", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "connect"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("ip_port", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isConnected"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "listen"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "listen"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	fi->arguments << TypeInfo("port", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "listen"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("ip_port", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "client"; fi->return_type = TypeInfo("", "PIEthernet *");
	fi->arguments << TypeInfo("index", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clientsCount"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clients"; fi->return_type = TypeInfo("", "PIVector<PIEthernet * >");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	fi->arguments << TypeInfo("port", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	fi->arguments << TypeInfo("threaded", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("ip_port", "PIString &", Const);
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	fi->arguments << TypeInfo("threaded", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	fi->arguments << TypeInfo("threaded", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	fi->arguments << TypeInfo("threaded", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "read"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("read_to", "void *");
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_newConnection__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("client", "PIEthernet *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "newConnection"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("client", "PIEthernet *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_connected__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "connected"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_disconnected__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("withError", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "disconnected"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("withError", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "interfaces"; fi->return_type = TypeInfo("", "PIEthernet::InterfaceList", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "interfaceAddress"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("interface_", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "allAddresses"; fi->return_type = TypeInfo("", "PIStringList", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "parseAddress"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("ipp", "PIString &", Const);
	fi->arguments << TypeInfo("ip", "PIString *");
	fi->arguments << TypeInfo("port", "int *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "macFromBytes"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("mac", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "macToBytes"; fi->return_type = TypeInfo("", "PIByteArray", Static);
	fi->arguments << TypeInfo("mac", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "applyMask"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	fi->arguments << TypeInfo("mask", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getBroadcast"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	fi->arguments << TypeInfo("mask", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fullPathPrefix"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configureFromFullPath"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("full_path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configureDevice"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("e_main", "void *", Const);
	fi->arguments << TypeInfo("e_parent", "void *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "received"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "init"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "openDevice"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "closeDevice"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "closeSocket"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("sd", "int &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getSockAddr"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("s", "sockaddr *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "server_func"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("eth", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setType"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("t", "Type");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "ethErrorString"; fi->return_type = TypeInfo("", "std::string", Static);

	ci = new ClassInfo();
	(*classesInfo)["PIEthernet::Interface"] = ci;
	ci->name = "PIEthernet::Interface";
	ci->variables << TypeInfo("index", "int");
	ci->variables << TypeInfo("name", "PIString");
	ci->variables << TypeInfo("mac", "PIString");
	ci->variables << TypeInfo("address", "PIString");
	ci->variables << TypeInfo("netmask", "PIString");
	ci->variables << TypeInfo("broadcast", "PIString");
	ci->variables << TypeInfo("ptp", "PIString");
	ci->variables << TypeInfo("flags", "InterfaceFlags");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isActive"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isRunning"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isBroadcast"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isMulticast"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isLoopback"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isPTP"; fi->return_type = TypeInfo("", "bool");

	ci = new ClassInfo();
	(*classesInfo)["PIEthernet::InterfaceList"] = ci;
	ci->name = "PIEthernet::InterfaceList";
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getByIndex"; fi->return_type = TypeInfo("", "const Interface *");
	fi->arguments << TypeInfo("index", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getByName"; fi->return_type = TypeInfo("", "const Interface *");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getByAddress"; fi->return_type = TypeInfo("", "const Interface *");
	fi->arguments << TypeInfo("address", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getLoopback"; fi->return_type = TypeInfo("", "const Interface *");

	ci = new ClassInfo();
	(*classesInfo)["PIPacketExtractor"] = ci;
	ci->name = "PIPacketExtractor";
	ci->parents << "PIIODevice";
	ci->variables << TypeInfo("dev", "PIIODevice*");
	ci->variables << TypeInfo("mheader", "PIByteArray");
	ci->variables << TypeInfo("buffer", "PIByteArray");
	ci->variables << TypeInfo("sbuffer", "PIByteArray");
	ci->variables << TypeInfo("ret_func_header", "HeaderCheckFunc");
	ci->variables << TypeInfo("headerPtr", "void*");
	ci->variables << TypeInfo("data", "void*");
	ci->variables << TypeInfo("buffer_size", "int");
	ci->variables << TypeInfo("dataSize", "int");
	ci->variables << TypeInfo("headerSize", "int");
	ci->variables << TypeInfo("packetSize", "int");
	ci->variables << TypeInfo("allReaded", "int");
	ci->variables << TypeInfo("addSize", "int");
	ci->variables << TypeInfo("curInd", "int");
	ci->variables << TypeInfo("missed", "ullong");
	ci->variables << TypeInfo("missed_packets", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "copy"; fi->return_type = TypeInfo("", "PIIODevice *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "device"; fi->return_type = TypeInfo("", "PIIODevice *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDevice"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("device_", "PIIODevice *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "bufferSize"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setBufferSize"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("new_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setHeaderCheckSlot"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("f", "HeaderCheckFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setPacketData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("recHeaderPtr", "void *");
	fi->arguments << TypeInfo("recHeaderSize", "int");
	fi->arguments << TypeInfo("recDataSize", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "missedBytes"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "missedPackets"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "missedBytes_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "missedPackets_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "lastHeader"; fi->return_type = TypeInfo("", "PIByteArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "read"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("read_to", "void *");
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_packetReceived__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("data", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "packetReceived"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "packetHeaderValidate"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("src", "uchar *");
	fi->arguments << TypeInfo("rec", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "packetValidate"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("rec", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "threadedRead"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("readed", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fullPathPrefix"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "openDevice"; fi->return_type = TypeInfo("", "bool");

	ci = new ClassInfo();
	(*classesInfo)["PIConfig"] = ci;
	ci->name = "PIConfig";
	ci->parents << "PIFile";
	ci->variables << TypeInfo("centry", "int");
	ci->variables << TypeInfo("delim", "PIString");
	ci->variables << TypeInfo("root", "PIConfig::Entry");
	ci->variables << TypeInfo("empty", "PIConfig::Entry");
	ci->variables << TypeInfo("lines", "uint");
	ci->variables << TypeInfo("other", "PIStringList");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIString &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIString &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "char *", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIStringList &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "bool", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "short", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "int", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "long", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uchar", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ushort", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uint", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ulong", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "float", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "double", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "char *", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIStringList &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "bool", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "short", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "int", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "long", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uchar", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ushort", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uint", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ulong", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "float", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "double", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValues"; fi->return_type = TypeInfo("", "PIConfig::Branch");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "PIString &", Const);
	fi->arguments << TypeInfo("type", "PIString &", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "PIStringList &", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "char *", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "bool", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "short", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "int", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "long", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "uchar", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "ushort", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "uint", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "ulong", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "float", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "double", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "rootEntry"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "entriesCount"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isEntryExists"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "allTree"; fi->return_type = TypeInfo("", "PIConfig::Branch");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "allLeaves"; fi->return_type = TypeInfo("", "PIConfig::Branch");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "entryIndex"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getName"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("number", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("number", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getType"; fi->return_type = TypeInfo("", "PIChar");
	fi->arguments << TypeInfo("number", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getComment"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("number", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addEntry"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "PIString &", Const);
	fi->arguments << TypeInfo("type", "PIString &", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setName"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("number", "uint");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("number", "uint");
	fi->arguments << TypeInfo("value", "PIString &", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setType"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("number", "uint");
	fi->arguments << TypeInfo("type", "PIString &", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setComment"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("number", "uint");
	fi->arguments << TypeInfo("comment", "PIString &", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeEntry"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeEntry"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("number", "uint");
	fi->arguments << TypeInfo("write", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clear"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readAll"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeAll"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "delimiter"; fi->return_type = TypeInfo("", "const PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDelimiter"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("d", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "childCount"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("e", "Entry *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "entryExists"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("e", "Entry *", Const);
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "buildFullNames"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("e", "Entry *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "allLeaves"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("b", "Branch &");
	fi->arguments << TypeInfo("e", "Entry *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setEntryDelim"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("e", "Entry *");
	fi->arguments << TypeInfo("d", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "entryByIndex"; fi->return_type = TypeInfo("", "PIConfig::Entry &");
	fi->arguments << TypeInfo("index", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeEntry"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("b", "Branch &");
	fi->arguments << TypeInfo("e", "Entry *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "deleteEntry"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("e", "Entry *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getPrefixFromLine"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("line", "PIString");
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "parse"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PIConfig::Branch"] = ci;
	ci->name = "PIConfig::Branch";
	ci->variables << TypeInfo("_empty", "Entry", Static);
	ci->variables << TypeInfo("delim", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIString &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIString &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "char *", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIStringList &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "bool", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "short", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "int", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "long", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uchar", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ushort", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uint", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ulong", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "float", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "double", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "char *", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIStringList &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "bool", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "short", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "int", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "long", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uchar", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ushort", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uint", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ulong", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "float", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "double", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "allLeaves"; fi->return_type = TypeInfo("", "Branch");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValues"; fi->return_type = TypeInfo("", "Branch");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getLeaves"; fi->return_type = TypeInfo("", "Branch");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getBranches"; fi->return_type = TypeInfo("", "Branch");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "filter"; fi->return_type = TypeInfo("", "Branch &");
	fi->arguments << TypeInfo("f", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isEntryExists"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "indexOf"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("e", "Entry *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "entryExists"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("e", "Entry *", Const);
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "allLeaves"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("b", "Branch &");
	fi->arguments << TypeInfo("e", "Entry *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "coutt"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("s", "std::ostream &");
	fi->arguments << TypeInfo("p", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piCoutt"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("s", "PICout");
	fi->arguments << TypeInfo("p", "PIString &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIConfig::Entry"] = ci;
	ci->name = "PIConfig::Entry";
	ci->variables << TypeInfo("_empty", "PIConfig::Entry::EntryPtr", Static);
	ci->variables << TypeInfo("_parent", "PIConfig::Entry::EntryPtr*");
	ci->variables << TypeInfo("_children", "Branch");
	ci->variables << TypeInfo("_tab", "PIString");
	ci->variables << TypeInfo("_name", "PIString");
	ci->variables << TypeInfo("_value", "PIString");
	ci->variables << TypeInfo("_type", "PIString");
	ci->variables << TypeInfo("_comment", "PIString");
	ci->variables << TypeInfo("_all", "PIString");
	ci->variables << TypeInfo("_full_name", "PIString");
	ci->variables << TypeInfo("delim", "PIString");
	ci->variables << TypeInfo("_line", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "parent"; fi->return_type = TypeInfo("", "Entry *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "childCount"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "children"; fi->return_type = TypeInfo("", "Branch &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "child"; fi->return_type = TypeInfo("", "Entry *");
	fi->arguments << TypeInfo("index", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findChild"; fi->return_type = TypeInfo("", "Entry *");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findChild"; fi->return_type = TypeInfo("", "const Entry *");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isLeaf"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "name"; fi->return_type = TypeInfo("", "const PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "value"; fi->return_type = TypeInfo("", "const PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "type"; fi->return_type = TypeInfo("", "const PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "comment"; fi->return_type = TypeInfo("", "const PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fullName"; fi->return_type = TypeInfo("", "const PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setName"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setType"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setComment"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "PIStringList &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "char *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "bool", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "char", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "short", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "long", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "uchar", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "ushort", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "uint", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "ulong", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "float", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("value", "double", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIString &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIString &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "char *", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIStringList &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "bool", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "short", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "int", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "long", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uchar", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ushort", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uint", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ulong", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "float", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "double", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "char *", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "PIStringList &", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "bool", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "short", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "int", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "long", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uchar", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ushort", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "uint", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "ulong", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "float", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValue"; fi->return_type = TypeInfo("", "Entry &");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	fi->arguments << TypeInfo("def", "double", Const);
	fi->arguments << TypeInfo("exists", "bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getValues"; fi->return_type = TypeInfo("", "Branch");
	fi->arguments << TypeInfo("vname", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isEntryExists"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "compare"; fi->return_type = TypeInfo("", "int", Static);
	fi->arguments << TypeInfo("f", "EntryPtr *", Const);
	fi->arguments << TypeInfo("s", "EntryPtr *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "entryExists"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("e", "Entry *", Const);
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "buildLine"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clear"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "coutt"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("s", "std::ostream &");
	fi->arguments << TypeInfo("p", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "piCoutt"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("s", "PICout");
	fi->arguments << TypeInfo("p", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "deleteBranch"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PIMultiProtocolBase"] = ci;
	ci->name = "PIMultiProtocolBase";
	ci->parents << "PIObject";
	ci->variables << TypeInfo("mutex_receive", "PIMutex");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "received"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("prot", "PIProtocol *");
	fi->arguments << TypeInfo("corrected", "bool");
	fi->arguments << TypeInfo("data", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveEvent"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("p", "PIMultiProtocolBase *");
	fi->arguments << TypeInfo("prot", "PIProtocol *");
	fi->arguments << TypeInfo("corrected", "bool");
	fi->arguments << TypeInfo("data", "uchar *");
	fi->arguments << TypeInfo("size", "int");

	ci = new ClassInfo();
	(*classesInfo)["PIProtocol"] = ci;
	ci->name = "PIProtocol";
	ci->parents << "PIObject";
	ci->variables << TypeInfo("ser", "PISerial*");
	ci->variables << TypeInfo("eth", "PIEthernet*");
	ci->variables << TypeInfo("dataSize", "uint");
	ci->variables << TypeInfo("headerSize", "uint");
	ci->variables << TypeInfo("sendDataSize", "uint");
	ci->variables << TypeInfo("dataPtr", "uchar*");
	ci->variables << TypeInfo("headerPtr", "uchar*");
	ci->variables << TypeInfo("sendDataPtr", "uchar*");
	ci->variables << TypeInfo("ret_func", "ReceiveFunc");
	ci->variables << TypeInfo("packet_ext", "PIPacketExtractor*");
	ci->variables << TypeInfo("diagTimer", "PITimer*");
	ci->variables << TypeInfo("sendTimer", "PITimer*");
	ci->variables << TypeInfo("secTimer", "PITimer*");
	ci->variables << TypeInfo("mp_owner", "PIMultiProtocolBase*");
	ci->variables << TypeInfo("type_send", "PIProtocol::Type");
	ci->variables << TypeInfo("type_rec", "PIProtocol::Type");
	ci->variables << TypeInfo("net_diag", "PIProtocol::Quality");
	ci->variables << TypeInfo("last_freq", "PIDeque<float>");
	ci->variables << TypeInfo("last_packets", "PIDeque<char>");
	ci->variables << TypeInfo("protName", "PIString");
	ci->variables << TypeInfo("devReceiverName", "PIString");
	ci->variables << TypeInfo("devReceiverState", "PIString");
	ci->variables << TypeInfo("devSenderName", "PIString");
	ci->variables << TypeInfo("devSenderState", "PIString");
	ci->variables << TypeInfo("speedIn", "PIString");
	ci->variables << TypeInfo("speedOut", "PIString");
	ci->variables << TypeInfo("history_path_rec", "PIString");
	ci->variables << TypeInfo("history_path_send", "PIString");
	ci->variables << TypeInfo("history_rsize_rec", "PIString");
	ci->variables << TypeInfo("history_rsize_send", "PIString");
	ci->variables << TypeInfo("history_file_rec", "PIFile");
	ci->variables << TypeInfo("history_file_send", "PIFile");
	ci->variables << TypeInfo("history_id_rec", "ushort");
	ci->variables << TypeInfo("history_id_send", "ushort");
	ci->variables << TypeInfo("work", "bool");
	ci->variables << TypeInfo("new_mp_prot", "bool");
	ci->variables << TypeInfo("history_write_rec", "bool");
	ci->variables << TypeInfo("history_write_send", "bool");
	ci->variables << TypeInfo("exp_freq", "float");
	ci->variables << TypeInfo("send_freq", "float");
	ci->variables << TypeInfo("ifreq", "float");
	ci->variables << TypeInfo("immediate_freq", "float");
	ci->variables << TypeInfo("integral_freq", "float");
	ci->variables << TypeInfo("timeout_", "float");
	ci->variables << TypeInfo("packets", "int[2]");
	ci->variables << TypeInfo("pckt_cnt", "int");
	ci->variables << TypeInfo("pckt_cnt_max", "int");
	ci->variables << TypeInfo("cur_pckt", "char");
	ci->variables << TypeInfo("wrong_count", "ullong");
	ci->variables << TypeInfo("receive_count", "ullong");
	ci->variables << TypeInfo("send_count", "ullong");
	ci->variables << TypeInfo("missed_count", "ullong");
	ci->variables << TypeInfo("packets_in_sec", "ullong");
	ci->variables << TypeInfo("packets_out_sec", "ullong");
	ci->variables << TypeInfo("bytes_in_sec", "ullong");
	ci->variables << TypeInfo("bytes_out_sec", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_startReceive__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startReceive"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_startReceive__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("exp_frequency", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startReceive"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("exp_frequency", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_stopReceive__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stopReceive"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setExpectedFrequency"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("frequency", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReceiverDevice"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("device", "PIString &", Const);
	fi->arguments << TypeInfo("speed", "PISerial::Speed");
	fi->arguments << TypeInfo("force", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReceiverData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("dataPtr", "void *");
	fi->arguments << TypeInfo("dataSize", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReceiverDataHeader"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("headerPtr", "void *");
	fi->arguments << TypeInfo("headerSize", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReceiverAddress"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	fi->arguments << TypeInfo("port", "int");
	fi->arguments << TypeInfo("force", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReceiverParameters"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("parameters", "PIFlags<PISerial::Parameters>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setReceiveSlot"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("slot", "ReceiveFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "expectedFrequency"; fi->return_type = TypeInfo("", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_startSend__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startSend"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_startSend__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("frequency", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startSend"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("frequency", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_stopSend__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stopSend"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSenderFrequency"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("frequency", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSenderDevice"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("device", "PIString &", Const);
	fi->arguments << TypeInfo("speed", "PISerial::Speed");
	fi->arguments << TypeInfo("force", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSenderData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("dataPtr", "void *");
	fi->arguments << TypeInfo("dataSize", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSenderAddress"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	fi->arguments << TypeInfo("port", "int");
	fi->arguments << TypeInfo("force", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSenderIP"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ip", "PIString &", Const);
	fi->arguments << TypeInfo("force", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSenderPort"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("port", "int");
	fi->arguments << TypeInfo("force", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSenderParameters"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("parameters", "PIFlags<PISerial::Parameters>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "senderFrequency"; fi->return_type = TypeInfo("", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_stop__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stop"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_send__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_send__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_send__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	fi->arguments << TypeInfo("direct", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	fi->arguments << TypeInfo("direct", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setName"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "name"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDisconnectTimeout"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("timeout", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "disconnectTimeout"; fi->return_type = TypeInfo("", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "disconnectTimeout_ptr"; fi->return_type = TypeInfo("", "const float *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "immediateFrequency"; fi->return_type = TypeInfo("", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "integralFrequency"; fi->return_type = TypeInfo("", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "immediateFrequency_ptr"; fi->return_type = TypeInfo("", "const float *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "integralFrequency_ptr"; fi->return_type = TypeInfo("", "const float *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveCountPerSec"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveCountPerSec_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendCountPerSec"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendCountPerSec_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveBytesPerSec"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveBytesPerSec_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendBytesPerSec"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendBytesPerSec_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveCount"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveCount_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "wrongCount"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "wrongCount_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendCount"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendCount_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "missedCount"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "missedCount_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "quality"; fi->return_type = TypeInfo("", "PIProtocol::Quality");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "quality_ptr"; fi->return_type = TypeInfo("", "const int *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiverDeviceName"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "senderDeviceName"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiverDeviceState"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiverDeviceState_ptr"; fi->return_type = TypeInfo("", "const PIString *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "senderDeviceState"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "senderDeviceState_ptr"; fi->return_type = TypeInfo("", "const PIString *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveSpeed"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveSpeed_ptr"; fi->return_type = TypeInfo("", "const PIString *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendSpeed"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendSpeed_ptr"; fi->return_type = TypeInfo("", "const PIString *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiverHistorySize"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiverHistorySize_ptr"; fi->return_type = TypeInfo("", "const PIString *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "senderHistorySize"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "senderHistorySize_ptr"; fi->return_type = TypeInfo("", "const PIString *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeReceiverHistory"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeReceiverHistory_ptr"; fi->return_type = TypeInfo("", "const bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeSenderHistory"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeSenderHistory_ptr"; fi->return_type = TypeInfo("", "const bool *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveData"; fi->return_type = TypeInfo("", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendData"; fi->return_type = TypeInfo("", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "packetExtractor"; fi->return_type = TypeInfo("", "PIPacketExtractor *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "lastHeader"; fi->return_type = TypeInfo("", "PIByteArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_receiverStarted__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiverStarted"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_receiverStopped__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiverStopped"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_senderStarted__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "senderStarted"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_senderStopped__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "senderStopped"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_received__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("validate_is_ok", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "received"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("validate_is_ok", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_qualityChanged__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("new_quality", "PIProtocol::Quality");
	fi->arguments << TypeInfo("old_quality", "PIProtocol::Quality");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "qualityChanged"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("new_quality", "PIProtocol::Quality");
	fi->arguments << TypeInfo("old_quality", "PIProtocol::Quality");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receive"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("data", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "validate"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "headerValidate"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("src", "uchar *");
	fi->arguments << TypeInfo("rec", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checksum_i"; fi->return_type = TypeInfo("", "uint");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checksum_c"; fi->return_type = TypeInfo("", "uchar");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "aboutSend"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "init"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "init_sender"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("b", "PIConfig::Entry &");
	fi->arguments << TypeInfo("sb", "PIConfig::Entry &");
	fi->arguments << TypeInfo("config", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "init_receiver"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("b", "PIConfig::Entry &");
	fi->arguments << TypeInfo("rb", "PIConfig::Entry &");
	fi->arguments << TypeInfo("config", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "check_state"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "calc_freq"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "calc_diag"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendEvent"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("e", "void *");
	fi->arguments << TypeInfo("nt", "i");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveEvent"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("t", "void *");
	fi->arguments << TypeInfo("data", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "headerValidateEvent"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("t", "void *");
	fi->arguments << TypeInfo("src", "uchar *");
	fi->arguments << TypeInfo("rec", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "diagEvent"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("t", "void *");
	fi->arguments << TypeInfo("nt", "i");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "secEvent"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("t", "void *");
	fi->arguments << TypeInfo("nt", "i");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setMultiProtocolOwner"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("mp", "PIMultiProtocolBase *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "multiProtocolOwner"; fi->return_type = TypeInfo("", "PIMultiProtocolBase *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "changeDisconnectTimeout"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PIDiagnostics"] = ci;
	ci->name = "PIDiagnostics";
	ci->parents << "PITimer";
	ci->variables << TypeInfo("qual", "PIDiagnostics::Quality");
	ci->variables << TypeInfo("speedIn", "PIString");
	ci->variables << TypeInfo("speedOut", "PIString");
	ci->variables << TypeInfo("ifreq", "float");
	ci->variables << TypeInfo("immediate_freq", "float");
	ci->variables << TypeInfo("integral_freq", "float");
	ci->variables << TypeInfo("packets", "int[2]");
	ci->variables << TypeInfo("cur_pckt", "char");
	ci->variables << TypeInfo("rec_once", "char");
	ci->variables << TypeInfo("wrong_count", "ullong");
	ci->variables << TypeInfo("receive_count", "ullong");
	ci->variables << TypeInfo("send_count", "ullong");
	ci->variables << TypeInfo("packets_in_sec", "ullong");
	ci->variables << TypeInfo("packets_out_sec", "ullong");
	ci->variables << TypeInfo("bytes_in_sec", "ullong");
	ci->variables << TypeInfo("bytes_out_sec", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "immediateFrequency"; fi->return_type = TypeInfo("", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "integralFrequency"; fi->return_type = TypeInfo("", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveCountPerSec"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendCountPerSec"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveBytesPerSec"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendBytesPerSec"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveCount"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "wrongCount"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendCount"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "quality"; fi->return_type = TypeInfo("", "PIDiagnostics::Quality");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveSpeed"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendSpeed"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "immediateFrequency_ptr"; fi->return_type = TypeInfo("", "const float *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "integralFrequency_ptr"; fi->return_type = TypeInfo("", "const float *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveCountPerSec_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendCountPerSec_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveBytesPerSec_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendBytesPerSec_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveCount_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "wrongCount_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendCount_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "quality_ptr"; fi->return_type = TypeInfo("", "const int *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveSpeed_ptr"; fi->return_type = TypeInfo("", "const PIString *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendSpeed_ptr"; fi->return_type = TypeInfo("", "const PIString *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("msecs", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("msecs", "double");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_reset__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "reset"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_received__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "received"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_received__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("size", "int");
	fi->arguments << TypeInfo("correct", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "received"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("size", "int");
	fi->arguments << TypeInfo("correct", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_sended__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sended"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_qualityChanged__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("new_quality", "PIDiagnostics::Quality");
	fi->arguments << TypeInfo("old_quality", "PIDiagnostics::Quality");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "qualityChanged"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("new_quality", "PIDiagnostics::Quality");
	fi->arguments << TypeInfo("old_quality", "PIDiagnostics::Quality");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "tick"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("delimiter", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "changeDisconnectTimeout"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PISystemMonitor"] = ci;
	ci->name = "PISystemMonitor";
	ci->parents << "PIThread";
	ci->variables << TypeInfo("file", "PIFile");
	ci->variables << TypeInfo("filem", "PIFile");
	ci->variables << TypeInfo("stat", "PISystemMonitor::ProcessStats");
	ci->variables << TypeInfo("pID_", "int");
	ci->variables << TypeInfo("page_size", "int");
	ci->variables << TypeInfo("cpu_count", "int");
	ci->variables << TypeInfo("cycle", "int");
	ci->variables << TypeInfo("cpu_u_cur", "llong");
	ci->variables << TypeInfo("cpu_u_prev", "llong");
	ci->variables << TypeInfo("cpu_s_cur", "llong");
	ci->variables << TypeInfo("cpu_s_prev", "llong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startOnProcess"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("pID", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startOnSelf"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "statistic"; fi->return_type = TypeInfo("", "const PISystemMonitor::ProcessStats &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "run"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PISystemMonitor::ProcessStats"] = ci;
	ci->name = "PISystemMonitor::ProcessStats";
	ci->variables << TypeInfo("exec_name", "PIString");
	ci->variables << TypeInfo("state", "PIString");
	ci->variables << TypeInfo("ID", "int");
	ci->variables << TypeInfo("parent_ID", "int");
	ci->variables << TypeInfo("group_ID", "int");
	ci->variables << TypeInfo("session_ID", "int");
	ci->variables << TypeInfo("priority", "int");
	ci->variables << TypeInfo("threads", "int");
	ci->variables << TypeInfo("physical_memsize", "ulong");
	ci->variables << TypeInfo("resident_memsize", "ulong");
	ci->variables << TypeInfo("share_memsize", "ulong");
	ci->variables << TypeInfo("virtual_memsize", "ulong");
	ci->variables << TypeInfo("data_memsize", "ulong");
	ci->variables << TypeInfo("physical_memsize_readable", "PIString");
	ci->variables << TypeInfo("resident_memsize_readable", "PIString");
	ci->variables << TypeInfo("share_memsize_readable", "PIString");
	ci->variables << TypeInfo("virtual_memsize_readable", "PIString");
	ci->variables << TypeInfo("data_memsize_readable", "PIString");
	ci->variables << TypeInfo("cpu_load_system", "float");
	ci->variables << TypeInfo("cpu_load_user", "float");

	ci = new ClassInfo();
	(*classesInfo)["PIConsole"] = ci;
	ci->name = "PIConsole";
	ci->parents << "PIThread";
	ci->variables << TypeInfo("tabs", "PIVector<Tab>");
	ci->variables << TypeInfo("binstr", "PIString");
	ci->variables << TypeInfo("rstr", "PIString");
	ci->variables << TypeInfo("rba", "PIByteArray");
	ci->variables << TypeInfo("tv", "PIConsole::Variable");
	ci->variables << TypeInfo("listener", "PIKbdListener*");
	ci->variables << TypeInfo("def_align", "PIConsole::Alignment");
	ci->variables << TypeInfo("ret_func", "KBFunc");
	ci->variables << TypeInfo("width", "int");
	ci->variables << TypeInfo("height", "int");
	ci->variables << TypeInfo("pwidth", "int");
	ci->variables << TypeInfo("pheight", "int");
	ci->variables << TypeInfo("ret", "int");
	ci->variables << TypeInfo("col_wid", "int");
	ci->variables << TypeInfo("num_format", "int");
	ci->variables << TypeInfo("systime_format", "int");
	ci->variables << TypeInfo("max_y", "uint");
	ci->variables << TypeInfo("vid", "int");
	ci->variables << TypeInfo("cur_tab", "uint");
	ci->variables << TypeInfo("col_cnt", "uint");
	ci->variables << TypeInfo("peer", "PIPeer*");
	ci->variables << TypeInfo("peer_timer", "PITimer");
	ci->variables << TypeInfo("server_name", "PIString");
	ci->variables << TypeInfo("server_mode", "bool");
	ci->variables << TypeInfo("state", "PIConsole::ConnectedState");
	ci->variables << TypeInfo("remote_clients", "PIVector<RemoteClient>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addString"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "PIString *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "char *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "bool *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "short *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "int *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "long *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "llong *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "uchar *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "ushort *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "uint *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "ulong *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "ullong *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "float *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "double *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "PISystemTime *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "PIProtocol *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "PIDiagnostics *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "PISystemMonitor *", Const);
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addBitVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("ptr", "void *", Const);
	fi->arguments << TypeInfo("fromBit", "int");
	fi->arguments << TypeInfo("bitsCount", "int");
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addEmptyLine"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("column", "int");
	fi->arguments << TypeInfo("count", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getString"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("x", "int");
	fi->arguments << TypeInfo("y", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getShort"; fi->return_type = TypeInfo("", "short");
	fi->arguments << TypeInfo("x", "int");
	fi->arguments << TypeInfo("y", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getInt"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("x", "int");
	fi->arguments << TypeInfo("y", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getFloat"; fi->return_type = TypeInfo("", "float");
	fi->arguments << TypeInfo("x", "int");
	fi->arguments << TypeInfo("y", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getDouble"; fi->return_type = TypeInfo("", "double");
	fi->arguments << TypeInfo("x", "int");
	fi->arguments << TypeInfo("y", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getString"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getShort"; fi->return_type = TypeInfo("", "short");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getInt"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getFloat"; fi->return_type = TypeInfo("", "float");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getDouble"; fi->return_type = TypeInfo("", "double");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "tabsCount"; fi->return_type = TypeInfo("", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "currentTab"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addTab"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("bind_key", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeTab"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("index", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeTab"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setTab"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("index", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setTab"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setTabBindKey"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("index", "uint");
	fi->arguments << TypeInfo("bind_key", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setTabBindKey"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("bind_key", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearTabs"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("clearScreen", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addCustomStatus"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("str", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearCustomStatus"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "defaultAlignment"; fi->return_type = TypeInfo("", "PIConsole::Alignment");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDefaultAlignment"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("align", "Alignment");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setColumnAlignment"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("col", "int");
	fi->arguments << TypeInfo("align", "Alignment");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setColumnAlignmentToAll"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("align", "Alignment");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fstr"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("f", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "enableExitCapture"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("key", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "disableExitCapture"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exitCaptured"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exitKey"; fi->return_type = TypeInfo("", "char");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startServer"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stopPeer"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isServerStarted"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clients"; fi->return_type = TypeInfo("", "PIStringList");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "listenServers"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "availableServers"; fi->return_type = TypeInfo("", "PIStringList");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "selectedServer"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "connectToServer"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "disconnect"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isConnected"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toUpperLeft"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "moveRight"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("n", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "moveLeft"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("n", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "moveTo"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("x", "int");
	fi->arguments << TypeInfo("y", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearScreen"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearScreenLower"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearLine"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "newLine"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "hideCursor"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "showCursor"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_clearVariables__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearVariables"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_clearVariables__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("clearScreen", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearVariables"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("clearScreen", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_waitForFinish__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "waitForFinish"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_start__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("wait", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("wait", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_stop__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stop"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_stop__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("clear", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stop"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("clear", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_keyPressed__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("key", "char");
	fi->arguments << TypeInfo("data", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "keyPressed"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("key", "char");
	fi->arguments << TypeInfo("data", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "begin"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "run"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fillLabels"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "status"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checkColumn"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("col", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "bitsValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("src", "void *", Const);
	fi->arguments << TypeInfo("offset", "int");
	fi->arguments << TypeInfo("count", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "toBin"; fi->return_type = TypeInfo("", "const char *");
	fi->arguments << TypeInfo("d", "void *", Const);
	fi->arguments << TypeInfo("s", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printLine"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("str", "PIString &", Const);
	fi->arguments << TypeInfo("dx", "int");
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("str", "PIString &", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("str", "char *", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "bool", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "int", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "long", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "llong", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "float", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "double", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "char", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "short", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "uchar", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "ushort", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "uint", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "ulong", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "ullong", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "printValue"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("value", "PISystemTime &", Const);
	fi->arguments << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "key_event"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("key", "char");
	fi->arguments << TypeInfo("t", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "columns"; fi->return_type = TypeInfo("", "PIVector<Column> &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "column"; fi->return_type = TypeInfo("", "PIConsole::Column &");
	fi->arguments << TypeInfo("index", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "char *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "bool", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "char", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "short", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "long", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "llong", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "uchar", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "ushort", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "uint", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "ulong", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "ullong", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "float", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "double", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "couts"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("v", "PISystemTime &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "serverSendInfo"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "serverSendData"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "remoteClient"; fi->return_type = TypeInfo("", "RemoteClient &");
	fi->arguments << TypeInfo("fname", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_peerReceived__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("from", "PIString &", Const);
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "peerReceived"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("from", "PIString &", Const);
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_peerTimer__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("delim", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "peerTimer"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("delim", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_peerDisconnectedEvent__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "peerDisconnectedEvent"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIConsole::Variable"] = ci;
	ci->name = "PIConsole::Variable";
	ci->variables << TypeInfo("name", "PIString");
	ci->variables << TypeInfo("format", "PIFlags<PIConsole::Format>");
	ci->variables << TypeInfo("nx", "int");
	ci->variables << TypeInfo("ny", "int");
	ci->variables << TypeInfo("type", "int");
	ci->variables << TypeInfo("offset", "int");
	ci->variables << TypeInfo("bitFrom", "int");
	ci->variables << TypeInfo("bitCount", "int");
	ci->variables << TypeInfo("size", "int");
	ci->variables << TypeInfo("id", "int");
	ci->variables << TypeInfo("remote", "bool");
	ci->variables << TypeInfo("ptr", "void*", Const);
	ci->variables << TypeInfo("rdata", "PIByteArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isEmpty"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "data"; fi->return_type = TypeInfo("", "const void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ba", "PIByteArray &");

	ci = new ClassInfo();
	(*classesInfo)["PIConsole::VariableContent"] = ci;
	ci->name = "PIConsole::VariableContent";
	ci->variables << TypeInfo("id", "int");
	ci->variables << TypeInfo("rdata", "PIByteArray");

	ci = new ClassInfo();
	(*classesInfo)["PIConsole::Column"] = ci;
	ci->name = "PIConsole::Column";
	ci->variables << TypeInfo("variables", "PIVector<Variable>");
	ci->variables << TypeInfo("alignment", "Alignment");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "size"; fi->return_type = TypeInfo("", "uint");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "push_back"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("v", "Variable &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIConsole::Tab"] = ci;
	ci->name = "PIConsole::Tab";
	ci->variables << TypeInfo("columns", "PIVector<Column>");
	ci->variables << TypeInfo("name", "PIString");
	ci->variables << TypeInfo("status", "PIString");
	ci->variables << TypeInfo("key", "char");

	ci = new ClassInfo();
	(*classesInfo)["PIConsole::RemoteClient"] = ci;
	ci->name = "PIConsole::RemoteClient";
	ci->variables << TypeInfo("name", "PIString");
	ci->variables << TypeInfo("state", "ConnectedState");

	ci = new ClassInfo();
	(*classesInfo)["PICLI"] = ci;
	ci->name = "PICLI";
	ci->parents << "PIObject";
	ci->variables << TypeInfo("_prefix_short", "PIString");
	ci->variables << TypeInfo("_prefix_full", "PIString");
	ci->variables << TypeInfo("_args_raw", "PIStringList");
	ci->variables << TypeInfo("_args_mand", "PIStringList");
	ci->variables << TypeInfo("_args_opt", "PIStringList");
	ci->variables << TypeInfo("keys_full", "PISet<PIString>");
	ci->variables << TypeInfo("keys_short", "PISet<PIString>");
	ci->variables << TypeInfo("_args", "PIVector<Argument>");
	ci->variables << TypeInfo("_count_mand", "int");
	ci->variables << TypeInfo("_count_opt", "int");
	ci->variables << TypeInfo("needParse", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addArgument"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addArgument"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("shortKey", "PIChar &", Const);
	fi->arguments << TypeInfo("value", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addArgument"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("shortKey", "char *", Const);
	fi->arguments << TypeInfo("value", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addArgument"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("shortKey", "PIChar &", Const);
	fi->arguments << TypeInfo("fullKey", "PIString &", Const);
	fi->arguments << TypeInfo("value", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addArgument"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("shortKey", "char *", Const);
	fi->arguments << TypeInfo("fullKey", "PIString &", Const);
	fi->arguments << TypeInfo("value", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "rawArgument"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("index", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "mandatoryArgument"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("index", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "optionalArgument"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("index", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "rawArguments"; fi->return_type = TypeInfo("", "const PIStringList &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "mandatoryArguments"; fi->return_type = TypeInfo("", "const PIStringList &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "optionalArguments"; fi->return_type = TypeInfo("", "const PIStringList &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "programCommand"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "hasArgument"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "argumentValue"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "argumentShortKey"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "argumentFullKey"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "shortKeyPrefix"; fi->return_type = TypeInfo("", "const PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fullKeyPrefix"; fi->return_type = TypeInfo("", "const PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "mandatoryArgumentsCount"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "optionalArgumentsCount"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setShortKeyPrefix"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("prefix", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setFullKeyPrefix"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("prefix", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setMandatoryArgumentsCount"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("count", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setOptionalArgumentsCount"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("count", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "parse"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PICLI::Argument"] = ci;
	ci->name = "PICLI::Argument";
	ci->variables << TypeInfo("name", "PIString");
	ci->variables << TypeInfo("short_key", "PIChar");
	ci->variables << TypeInfo("full_key", "PIString");
	ci->variables << TypeInfo("value", "PIString");
	ci->variables << TypeInfo("has_value", "bool");
	ci->variables << TypeInfo("found", "bool");

	ci = new ClassInfo();
	(*classesInfo)["Instruction"] = ci;
	ci->name = "Instruction";
	ci->variables << TypeInfo("operation", "Operation");
	ci->variables << TypeInfo("out", "int");
	ci->variables << TypeInfo("function", "int");

	ci = new ClassInfo();
	(*classesInfo)["Function"] = ci;
	ci->name = "Function";
	ci->variables << TypeInfo("identifier", "PIString");
	ci->variables << TypeInfo("type", "BaseFunctions");
	ci->variables << TypeInfo("handler", "FuncFunc");
	ci->variables << TypeInfo("arguments", "int");

	ci = new ClassInfo();
	(*classesInfo)["PIEvaluatorContent"] = ci;
	ci->name = "PIEvaluatorContent";
	ci->variables << TypeInfo("functions", "PIVector<PIEvaluatorTypes::Function>");
	ci->variables << TypeInfo("variables", "PIVector<PIEvaluatorTypes::Variable>");
	ci->variables << TypeInfo("cv_count", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addFunction"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("args", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("val", "complexd &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addCustomFunction"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("args_count", "int");
	fi->arguments << TypeInfo("func", "FuncFunc");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "functionsCount"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "variablesCount"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "customVariablesCount"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findFunction"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findVariable"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("var_name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "function"; fi->return_type = TypeInfo("", "PIEvaluatorTypes::Function");
	fi->arguments << TypeInfo("index", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "variable"; fi->return_type = TypeInfo("", "PIEvaluatorTypes::Variable");
	fi->arguments << TypeInfo("index", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "function"; fi->return_type = TypeInfo("", "PIEvaluatorTypes::Function");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "variable"; fi->return_type = TypeInfo("", "PIEvaluatorTypes::Variable");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "customVariable"; fi->return_type = TypeInfo("", "PIEvaluatorTypes::Variable");
	fi->arguments << TypeInfo("index", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setVariableValue"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("index", "int");
	fi->arguments << TypeInfo("new_value", "complexd");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setVariableName"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("index", "int");
	fi->arguments << TypeInfo("new_name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setVariableValue"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("var_name", "PIString &", Const);
	fi->arguments << TypeInfo("new_value", "complexd &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setVariableName"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("var_name", "PIString &", Const);
	fi->arguments << TypeInfo("new_name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("index", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("var_name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearCustomVariables"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sortVariables"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getBaseFunction"; fi->return_type = TypeInfo("", "PIEvaluatorTypes::BaseFunctions");
	fi->arguments << TypeInfo("name", "PIString &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIEvaluator"] = ci;
	ci->name = "PIEvaluator";
	ci->variables << TypeInfo("content", "PIEvaluatorContent");
	ci->variables << TypeInfo("elements", "PIVector<PIEvaluatorTypes::Element>");
	ci->variables << TypeInfo("currentVariables", "PIVector<PIEvaluatorTypes::Variable>");
	ci->variables << TypeInfo("variables", "PIVector<PIEvaluatorTypes::Variable>");
	ci->variables << TypeInfo("tmpvars", "PIVector<PIEvaluatorTypes::Variable>");
	ci->variables << TypeInfo("kvars", "PIVector<PIEvaluatorTypes::Variable>*");
	ci->variables << TypeInfo("instructions", "PIVector<PIEvaluatorTypes::Instruction>");
	ci->variables << TypeInfo("unknownVars", "PIStringList");
	ci->variables << TypeInfo("currentString", "PIString");
	ci->variables << TypeInfo("lastError", "PIString");
	ci->variables << TypeInfo("out", "complexd");
	ci->variables << TypeInfo("correct", "bool");
	ci->variables << TypeInfo("data_", "void*");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "data"; fi->return_type = TypeInfo("", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("_data", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "check"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("string", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isCorrect"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setVariable"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("value", "complexd");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("index", "int");
	fi->arguments << TypeInfo("value", "complexd");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setCustomVariableValue"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("index", "int");
	fi->arguments << TypeInfo("value", "complexd");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "evaluate"; fi->return_type = TypeInfo("", "complexd");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeVariable"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clearCustomVariables"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "variableIndex"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "unknownVariables"; fi->return_type = TypeInfo("", "const PIStringList &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "expression"; fi->return_type = TypeInfo("", "const PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "error"; fi->return_type = TypeInfo("", "const PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "lastResult"; fi->return_type = TypeInfo("", "const complexd &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "prepare"; fi->return_type = TypeInfo("", "const PIString &");
	fi->arguments << TypeInfo("string", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "preprocess"; fi->return_type = TypeInfo("", "const PIString &");
	fi->arguments << TypeInfo("string", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "parse"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("string", "PIString &", Const);
	fi->arguments << TypeInfo("offset", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "convert"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checkBrackets"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeSpaces"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findUnknownVariables"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeJunk"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "replaceOperators"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "makeOutput"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("string", "PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fillElements"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSignes"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isSign"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("ch", "PIChar &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "inverse"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("string", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "check"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "execInstructions"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "inBrackets"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("string", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "operationChar"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("operation", "PIEvaluatorTypes::Operation &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "operationInOrder"; fi->return_type = TypeInfo("", "PIEvaluatorTypes::Operation");
	fi->arguments << TypeInfo("index", "int &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "value"; fi->return_type = TypeInfo("", "complexd");
	fi->arguments << TypeInfo("index", "int &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "residue"; fi->return_type = TypeInfo("", "complexd");
	fi->arguments << TypeInfo("f", "complexd &", Const);
	fi->arguments << TypeInfo("s", "complexd &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "execFunction"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ci", "PIEvaluatorTypes::Instruction &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIMultiProtocol"] = ci;
	ci->name = "PIMultiProtocol";
	ci->parents << "PIMultiProtocolBase";
	ci->variables << TypeInfo("prots", "PIVector<PIProtocol * >");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addProtocol"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("prot", "PIProtocol &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addProtocol"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("prot", "PIProtocol *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addProtocol"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("config", "PIString &", Const);
	fi->arguments << TypeInfo("name", "PIString &", Const);
	fi->arguments << TypeInfo("recHeaderPtr", "void *");
	fi->arguments << TypeInfo("recHeaderSize", "int");
	fi->arguments << TypeInfo("recDataPtr", "void *");
	fi->arguments << TypeInfo("recDataSize", "int");
	fi->arguments << TypeInfo("sendDataPtr", "void *");
	fi->arguments << TypeInfo("sendDataSize", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "protocol"; fi->return_type = TypeInfo("", "PIProtocol *");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "protocol"; fi->return_type = TypeInfo("", "PIProtocol *");
	fi->arguments << TypeInfo("index", "int", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startSend"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "startReceive"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "start"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stopSend"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stopReceive"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "stop"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "worseQuality"; fi->return_type = TypeInfo("", "PIProtocol::Quality");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "bestQuality"; fi->return_type = TypeInfo("", "PIProtocol::Quality");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "count"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clear"; fi->return_type = TypeInfo("", "void");

	ci = new ClassInfo();
	(*classesInfo)["PIRepeater"] = ci;
	ci->name = "PIRepeater";
	ci->parents << "PIMultiProtocol";
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "firstChannelName"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "secondChannelName"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveCount"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "receiveCount_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendCount"; fi->return_type = TypeInfo("", "ullong");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendCount_ptr"; fi->return_type = TypeInfo("", "const ullong *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "received"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("prot", "PIProtocol *");
	fi->arguments << TypeInfo("ool", "b");
	fi->arguments << TypeInfo("data", "uchar *");
	fi->arguments << TypeInfo("size", "int");

	ci = new ClassInfo();
	(*classesInfo)["PICodec"] = ci;
	ci->name = "PICodec";
	ci->parents << "PIProcess";
	ci->variables << TypeInfo("c_from", "PIString");
	ci->variables << TypeInfo("c_to", "PIString");
	ci->variables << TypeInfo("tf", "PIFile");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setFromCoding"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("from", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setToCoding"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("to", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setCodings"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("from", "PIString &", Const);
	fi->arguments << TypeInfo("to", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "availableCodecs"; fi->return_type = TypeInfo("", "PIStringList");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "encode"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("str", "PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "encode"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("str", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "decode"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("str", "PIString &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "decode"; fi->return_type = TypeInfo("", "PIString");
	fi->arguments << TypeInfo("str", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "exec_iconv"; fi->return_type = TypeInfo("", "PIByteArray");
	fi->arguments << TypeInfo("from", "PIString &", Const);
	fi->arguments << TypeInfo("to", "PIString &", Const);
	fi->arguments << TypeInfo("str", "PIByteArray &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PISignals"] = ci;
	ci->name = "PISignals";
	ci->variables << TypeInfo("ret_func", "PISignals::SignalEvent", Static);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setSlot"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("slot", "SignalEvent");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "grabSignals"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("signals_", "PIFlags<PISignals::Signal>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "raiseSignal"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("signal", "PISignals::Signal");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "signalCode"; fi->return_type = TypeInfo("", "int", Static);
	fi->arguments << TypeInfo("signal", "PISignals::Signal");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "signalFromCode"; fi->return_type = TypeInfo("", "PISignals::Signal", Static);
	fi->arguments << TypeInfo("signal", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "signal_event"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("signal", "int");

	ci = new ClassInfo();
	(*classesInfo)["PIPeer"] = ci;
	ci->name = "PIPeer";
	ci->parents << "PIObject";
	ci->variables << TypeInfo("eths", "PIVector<PIEthernet * >");
	ci->variables << TypeInfo("mc_eths", "PIVector<PIEthernet * >");
	ci->variables << TypeInfo("eth_send", "PIEthernet*");
	ci->variables << TypeInfo("timer", "PITimer");
	ci->variables << TypeInfo("mc_mutex", "PIMutex");
	ci->variables << TypeInfo("eth_mutex", "PIMutex");
	ci->variables << TypeInfo("rec_mc", "bool");
	ci->variables << TypeInfo("rec_bc", "bool");
	ci->variables << TypeInfo("self_info", "PIPeer::PeerInfo");
	ci->variables << TypeInfo("peers", "PIVector<PeerInfo>");
	ci->variables << TypeInfo("addresses_map", "PIMap<PIString, PIVector<PeerInfo * > >");
	ci->variables << TypeInfo("diag_s", "PIDiagnostics");
	ci->variables << TypeInfo("diag_d", "PIDiagnostics");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("to", "PIString &", Const);
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("to", "PIString &", Const);
	fi->arguments << TypeInfo("data", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("to", "PIString &", Const);
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("to", "PeerInfo &", Const);
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("to", "PeerInfo &", Const);
	fi->arguments << TypeInfo("data", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("to", "PeerInfo &", Const);
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("to", "PeerInfo *", Const);
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("to", "PeerInfo *", Const);
	fi->arguments << TypeInfo("data", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "send"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("to", "PeerInfo *", Const);
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendToAll"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendToAll"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendToAll"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isMulticastReceive"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isBroadcastReceive"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "diagnosticService"; fi->return_type = TypeInfo("", "PIDiagnostics &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "diagnosticData"; fi->return_type = TypeInfo("", "PIDiagnostics &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "allPeers"; fi->return_type = TypeInfo("", "const PIVector<PIPeer::PeerInfo> &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isPeerExists"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getPeerByName"; fi->return_type = TypeInfo("", "const PIPeer::PeerInfo *");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "lock"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "unlock"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_dataReceivedEvent__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("from", "PIString &", Const);
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "dataReceivedEvent"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("from", "PIString &", Const);
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_peerConnectedEvent__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "peerConnectedEvent"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_peerDisconnectedEvent__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "peerDisconnectedEvent"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "dataReceived"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("from", "PIString &", Const);
	fi->arguments << TypeInfo("data", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "peerConnected"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "peerDisconnected"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_dataRead__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("readed", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "dataRead"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("readed", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_multicastRead__"; fi->return_type = TypeInfo("", "bool", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("readed", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "multicastRead"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("readed", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_timerEvent__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("delim", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "timerEvent"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("data", "void *");
	fi->arguments << TypeInfo("delim", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "hasPeer"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removePeer"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("name", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendPeerInfo"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("info", "PeerInfo &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendPeerRemove"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("peer", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendSelfInfo"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendSelfRemove"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "syncPeers"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "findNearestAddresses"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "initEths"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("al", "PIStringList &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "initMulticasts"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("al", "PIStringList &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "destroyMulticasts"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendMulticast"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ba", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "quickestPeer"; fi->return_type = TypeInfo("", "PIPeer::PeerInfo *");
	fi->arguments << TypeInfo("to", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "sendToNeighbour"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("peer", "PeerInfo *");
	fi->arguments << TypeInfo("ba", "PIByteArray &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIPeer::PeerData"] = ci;
	ci->name = "PIPeer::PeerData";
	ci->variables << TypeInfo("data", "PIByteArray");
	ci->variables << TypeInfo("msg_count", "int");
	ci->variables << TypeInfo("msg_rec", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "clear"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isEmpty"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isFullReceived"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ba", "PIByteArray &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setData"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ba", "PIByteArray &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIPeer::PeerInfo"] = ci;
	ci->name = "PIPeer::PeerInfo";
	ci->variables << TypeInfo("name", "PIString");
	ci->variables << TypeInfo("addresses", "PIStringList");
	ci->variables << TypeInfo("dist", "int");
	ci->variables << TypeInfo("ping", "int");
	ci->variables << TypeInfo("nearest_address", "PIString");
	ci->variables << TypeInfo("netmasks", "PIStringList");
	ci->variables << TypeInfo("neighbours", "PIStringList");
	ci->variables << TypeInfo("sync", "int");
	ci->variables << TypeInfo("_naddress", "PIString");
	ci->variables << TypeInfo("_neth", "PIEthernet*");
	ci->variables << TypeInfo("_nuses", "PIVector<uchar>");
	ci->variables << TypeInfo("_first", "PeerInfo*");
	ci->variables << TypeInfo("_data", "PeerData");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isNeighbour"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addNeighbour"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("n", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "addNeighbours"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("l", "PIStringList &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "removeNeighbour"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("n", "PIString &", Const);

	ci = new ClassInfo();
	(*classesInfo)["PIPeer::PeerPacket"] = ci;
	ci->name = "PIPeer::PeerPacket";
	ci->variables << TypeInfo("header", "int");

	ci = new ClassInfo();
	(*classesInfo)["PIBinaryLog"] = ci;
	ci->name = "PIBinaryLog";
	ci->parents << "PIIODevice";
	ci->variables << TypeInfo("filterID", "PIVector<int>");
	ci->variables << TypeInfo("file", "PIFile");
	ci->variables << TypeInfo("lastrecord", "PIBinaryLog::BinLogRecord");
	ci->variables << TypeInfo("startlogtime", "PISystemTime");
	ci->variables << TypeInfo("play_time", "double");
	ci->variables << TypeInfo("is_started", "bool");
	ci->variables << TypeInfo("is_thread_ok", "bool");
	ci->variables << TypeInfo("binlog_sig", "uchar[6]");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "copy"; fi->return_type = TypeInfo("", "PIIODevice *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "playMode"; fi->return_type = TypeInfo("", "PIBinaryLog::PlayMode");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "logDir"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "filePrefix"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "defaultID"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "playSpeed"; fi->return_type = TypeInfo("", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "rapidStart"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setPlayMode"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("mode", "PlayMode");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setLogDir"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setFilePrefix"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("prefix", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDefaultID"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("id", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setRapidStart"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("enabled", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setPlaySpeed"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("speed", "float");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinLog"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("id", "int");
	fi->arguments << TypeInfo("data", "PIByteArray");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeBinLog"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("id", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readBinLog"; fi->return_type = TypeInfo("", "PIByteArray");
	fi->arguments << TypeInfo("id", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readBinLog"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("id", "int");
	fi->arguments << TypeInfo("read_to", "void *");
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isEnd"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isEmpty"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "lastReadedID"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "read"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("read_to", "void *");
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "restart"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_createNewFile__"; fi->return_type = TypeInfo("", "PIString", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "createNewFile"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_fileEnd__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fileEnd"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "__stat_eh_fileError__"; fi->return_type = TypeInfo("", "void", Static);
	fi->arguments << TypeInfo("o", "void *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fileError"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fullPathPrefix"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configureFromFullPath"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("full_path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "openDevice"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "closeDevice"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "threadedRead"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("readed", "uchar *");
	fi->arguments << TypeInfo("size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "writeFileHeader"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "checkFileHeader"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "readRecord"; fi->return_type = TypeInfo("", "PIBinaryLog::BinLogRecord");

	ci = new ClassInfo();
	(*classesInfo)["PIBinaryLog::BinLogRecord"] = ci;
	ci->name = "PIBinaryLog::BinLogRecord";
	ci->variables << TypeInfo("id", "int");
	ci->variables << TypeInfo("size", "int");
	ci->variables << TypeInfo("timestamp", "PISystemTime");
	ci->variables << TypeInfo("data", "PIByteArray");

	ci = new ClassInfo();
	(*classesInfo)["PIUSB"] = ci;
	ci->name = "PIUSB";
	ci->parents << "PIIODevice";
	ci->variables << TypeInfo("eps", "PIVector<PIUSB::Endpoint>");
	ci->variables << TypeInfo("vid_", "ushort");
	ci->variables << TypeInfo("pid_", "ushort");
	ci->variables << TypeInfo("intefrace_", "int");
	ci->variables << TypeInfo("timeout_r", "int");
	ci->variables << TypeInfo("timeout_w", "int");
	ci->variables << TypeInfo("interface_claimed", "int");
	ci->variables << TypeInfo("ep_read", "PIUSB::Endpoint");
	ci->variables << TypeInfo("ep_write", "PIUSB::Endpoint");
	ci->variables << TypeInfo("desc_", "PIUSB::Descriptor");
	ci->variables << TypeInfo("conf_", "PIUSB::Configuration");
	ci->variables << TypeInfo("iface_", "PIUSB::Interface");
	ci->variables << TypeInfo("hdev", "usb_dev_handle*");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "className"; fi->return_type = TypeInfo("", "const char *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "copy"; fi->return_type = TypeInfo("", "PIIODevice *");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "currentDescriptor"; fi->return_type = TypeInfo("", "const PIUSB::Descriptor &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "currentConfiguration"; fi->return_type = TypeInfo("", "const PIUSB::Configuration &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "currentInterface"; fi->return_type = TypeInfo("", "const PIUSB::Interface &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "vendorID"; fi->return_type = TypeInfo("", "ushort");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "productID"; fi->return_type = TypeInfo("", "ushort");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "deviceNumber"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "timeoutRead"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "timeoutWrite"; fi->return_type = TypeInfo("", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "endpointRead"; fi->return_type = TypeInfo("", "const PIUSB::Endpoint &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "endpointWrite"; fi->return_type = TypeInfo("", "const PIUSB::Endpoint &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "endpoints"; fi->return_type = TypeInfo("", "const PIVector<PIUSB::Endpoint> &");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "endpointsRead"; fi->return_type = TypeInfo("", "PIVector<PIUSB::Endpoint>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "endpointsWrite"; fi->return_type = TypeInfo("", "PIVector<PIUSB::Endpoint>");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "getEndpointByAddress"; fi->return_type = TypeInfo("", "PIUSB::Endpoint");
	fi->arguments << TypeInfo("address", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setVendorID"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("vid", "ushort");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setProductID"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("pid", "ushort");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setConfiguration"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("value", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setInterface"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("value", "uchar");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setEndpointRead"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ep", "PIUSB::Endpoint &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setEndpointWrite"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("ep", "PIUSB::Endpoint &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setDeviceNumber"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("dn", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setTimeoutRead"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("t", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "setTimeoutWrite"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("t", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "read"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("read_to", "void *");
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "write"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "controlWrite"; fi->return_type = TypeInfo("", "int");
	fi->arguments << TypeInfo("data", "void *", Const);
	fi->arguments << TypeInfo("max_size", "int");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "flush"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "fullPathPrefix"; fi->return_type = TypeInfo("", "PIString");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configureFromFullPath"; fi->return_type = TypeInfo("", "void");
	fi->arguments << TypeInfo("full_path", "PIString &", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "configureDevice"; fi->return_type = TypeInfo("", "bool");
	fi->arguments << TypeInfo("e_main", "void *", Const);
	fi->arguments << TypeInfo("e_parent", "void *", Const);
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "openDevice"; fi->return_type = TypeInfo("", "bool");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "closeDevice"; fi->return_type = TypeInfo("", "bool");

	ci = new ClassInfo();
	(*classesInfo)["PIUSB::Endpoint"] = ci;
	ci->name = "PIUSB::Endpoint";
	ci->variables << TypeInfo("address", "uchar");
	ci->variables << TypeInfo("attributes", "uchar");
	ci->variables << TypeInfo("max_packet_size", "ushort");
	ci->variables << TypeInfo("direction", "PIUSB::Endpoint::Direction");
	ci->variables << TypeInfo("transfer_type", "PIUSB::Endpoint::TransferType");
	ci->variables << TypeInfo("synchronisation_type", "PIUSB::Endpoint::SynchronisationType");
	ci->variables << TypeInfo("usage_type", "PIUSB::Endpoint::UsageType");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "parse"; fi->return_type = TypeInfo("", "void");
	ci->functions.push_back(FunctionInfo()); fi = &(ci->functions.back());
	fi->name = "isNull"; fi->return_type = TypeInfo("", "bool");

	ci = new ClassInfo();
	(*classesInfo)["PIUSB::Interface"] = ci;
	ci->name = "PIUSB::Interface";
	ci->variables << TypeInfo("index", "uchar");
	ci->variables << TypeInfo("value_to_select", "uchar");
	ci->variables << TypeInfo("class_code", "ushort");
	ci->variables << TypeInfo("subclass_code", "ushort");
	ci->variables << TypeInfo("protocol_code", "ushort");
	ci->variables << TypeInfo("endpoints", "PIVector<PIUSB::Endpoint>");

	ci = new ClassInfo();
	(*classesInfo)["PIUSB::Configuration"] = ci;
	ci->name = "PIUSB::Configuration";
	ci->variables << TypeInfo("index", "uchar");
	ci->variables << TypeInfo("value_to_select", "uchar");
	ci->variables << TypeInfo("attributes", "uchar");
	ci->variables << TypeInfo("max_power", "ushort");
	ci->variables << TypeInfo("self_powered", "bool");
	ci->variables << TypeInfo("remote_wakeup", "bool");
	ci->variables << TypeInfo("interfaces", "PIVector<PIUSB::Interface>");

	ci = new ClassInfo();
	(*classesInfo)["PIUSB::Descriptor"] = ci;
	ci->name = "PIUSB::Descriptor";
	ci->variables << TypeInfo("usb_spec_number", "ushort");
	ci->variables << TypeInfo("device_class", "uchar");
	ci->variables << TypeInfo("device_subclass", "uchar");
	ci->variables << TypeInfo("device_protocol", "uchar");
	ci->variables << TypeInfo("max_packet_size", "uchar");
	ci->variables << TypeInfo("id_vendor", "ushort");
	ci->variables << TypeInfo("id_product", "ushort");
	ci->variables << TypeInfo("id_device_release", "ushort");
	ci->variables << TypeInfo("index_manufacturer", "uchar");
	ci->variables << TypeInfo("index_product", "uchar");
	ci->variables << TypeInfo("index_serial", "uchar");
	ci->variables << TypeInfo("configurations", "PIVector<PIUSB::Configuration>");

// Enums

	ei = new EnumInfo();
	(*enumsInfo)["PICoutSpecialChar"] = ei;
	ei->name = "PICoutSpecialChar";
	ei->members << PICodeInfo::EnumeratorInfo("Null", 0);
	ei->members << PICodeInfo::EnumeratorInfo("NewLine", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Tab", 2);
	ei->members << PICodeInfo::EnumeratorInfo("Esc", 3);
	ei->members << PICodeInfo::EnumeratorInfo("Quote", 4);

	ei = new EnumInfo();
	(*enumsInfo)["PICoutAction"] = ei;
	ei->name = "PICoutAction";
	ei->members << PICodeInfo::EnumeratorInfo("Flush", 0);
	ei->members << PICodeInfo::EnumeratorInfo("Backspace", 1);
	ei->members << PICodeInfo::EnumeratorInfo("ShowCursor", 2);
	ei->members << PICodeInfo::EnumeratorInfo("HideCursor", 3);
	ei->members << PICodeInfo::EnumeratorInfo("ClearScreen", 4);
	ei->members << PICodeInfo::EnumeratorInfo("SaveContol", 5);
	ei->members << PICodeInfo::EnumeratorInfo("RestoreControl", 6);

	ei = new EnumInfo();
	(*enumsInfo)["PICoutControl"] = ei;
	ei->name = "PICoutControl";
	ei->members << PICodeInfo::EnumeratorInfo("AddNone", 0);
	ei->members << PICodeInfo::EnumeratorInfo("AddSpaces", 1);
	ei->members << PICodeInfo::EnumeratorInfo("AddNewLine", 2);
	ei->members << PICodeInfo::EnumeratorInfo("AddQuotes", 4);
	ei->members << PICodeInfo::EnumeratorInfo("AddAll", -1);

	ei = new EnumInfo();
	(*enumsInfo)["PICoutFormat"] = ei;
	ei->name = "PICoutFormat";
	ei->members << PICodeInfo::EnumeratorInfo("Bin", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Oct", 2);
	ei->members << PICodeInfo::EnumeratorInfo("Dec", 4);
	ei->members << PICodeInfo::EnumeratorInfo("Hex", 8);
	ei->members << PICodeInfo::EnumeratorInfo("Bold", 16);
	ei->members << PICodeInfo::EnumeratorInfo("Faint", 32);
	ei->members << PICodeInfo::EnumeratorInfo("Italic", 64);
	ei->members << PICodeInfo::EnumeratorInfo("Underline", 128);
	ei->members << PICodeInfo::EnumeratorInfo("Blink", 256);
	ei->members << PICodeInfo::EnumeratorInfo("Black", 1024);
	ei->members << PICodeInfo::EnumeratorInfo("Red", 2048);
	ei->members << PICodeInfo::EnumeratorInfo("Green", 4096);
	ei->members << PICodeInfo::EnumeratorInfo("Blue", 8192);
	ei->members << PICodeInfo::EnumeratorInfo("Yellow", 16384);
	ei->members << PICodeInfo::EnumeratorInfo("Magenta", 32768);
	ei->members << PICodeInfo::EnumeratorInfo("Cyan", 65536);
	ei->members << PICodeInfo::EnumeratorInfo("White", 131072);
	ei->members << PICodeInfo::EnumeratorInfo("BackBlack", 262144);
	ei->members << PICodeInfo::EnumeratorInfo("BackRed", 524288);
	ei->members << PICodeInfo::EnumeratorInfo("BackGreen", 1048576);
	ei->members << PICodeInfo::EnumeratorInfo("BackBlue", 2097152);
	ei->members << PICodeInfo::EnumeratorInfo("BackYellow", 4194304);
	ei->members << PICodeInfo::EnumeratorInfo("BackMagenta", 8388608);
	ei->members << PICodeInfo::EnumeratorInfo("BackCyan", 16777216);
	ei->members << PICodeInfo::EnumeratorInfo("BackWhite", 33554432);
	ei->members << PICodeInfo::EnumeratorInfo("Default", 67108864);

	ei = new EnumInfo();
	(*enumsInfo)["Solver::Method"] = ei;
	ei->name = "Solver::Method";
	ei->members << PICodeInfo::EnumeratorInfo("Global", -1);
	ei->members << PICodeInfo::EnumeratorInfo("Eyler_1", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Eyler_2", 2);
	ei->members << PICodeInfo::EnumeratorInfo("EylerKoshi", 3);
	ei->members << PICodeInfo::EnumeratorInfo("RungeKutta_4", 14);
	ei->members << PICodeInfo::EnumeratorInfo("AdamsBashfortMoulton_2", 22);
	ei->members << PICodeInfo::EnumeratorInfo("AdamsBashfortMoulton_3", 23);
	ei->members << PICodeInfo::EnumeratorInfo("AdamsBashfortMoulton_4", 24);
	ei->members << PICodeInfo::EnumeratorInfo("PolynomialApproximation_2", 32);
	ei->members << PICodeInfo::EnumeratorInfo("PolynomialApproximation_3", 33);
	ei->members << PICodeInfo::EnumeratorInfo("PolynomialApproximation_4", 34);
	ei->members << PICodeInfo::EnumeratorInfo("PolynomialApproximation_5", 35);

	ei = new EnumInfo();
	(*enumsInfo)["PIVariant::Type"] = ei;
	ei->name = "PIVariant::Type";
	ei->members << PICodeInfo::EnumeratorInfo("Invalid", 0);
	ei->members << PICodeInfo::EnumeratorInfo("Bool", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Char", 2);
	ei->members << PICodeInfo::EnumeratorInfo("UChar", 3);
	ei->members << PICodeInfo::EnumeratorInfo("Short", 4);
	ei->members << PICodeInfo::EnumeratorInfo("UShort", 5);
	ei->members << PICodeInfo::EnumeratorInfo("Int", 6);
	ei->members << PICodeInfo::EnumeratorInfo("UInt", 7);
	ei->members << PICodeInfo::EnumeratorInfo("Long", 8);
	ei->members << PICodeInfo::EnumeratorInfo("ULong", 9);
	ei->members << PICodeInfo::EnumeratorInfo("LLong", 10);
	ei->members << PICodeInfo::EnumeratorInfo("ULLong", 11);
	ei->members << PICodeInfo::EnumeratorInfo("Float", 12);
	ei->members << PICodeInfo::EnumeratorInfo("Double", 13);
	ei->members << PICodeInfo::EnumeratorInfo("LDouble", 14);
	ei->members << PICodeInfo::EnumeratorInfo("Complexd", 15);
	ei->members << PICodeInfo::EnumeratorInfo("Complexld", 16);
	ei->members << PICodeInfo::EnumeratorInfo("BitArray", 17);
	ei->members << PICodeInfo::EnumeratorInfo("ByteArray", 18);
	ei->members << PICodeInfo::EnumeratorInfo("String", 19);
	ei->members << PICodeInfo::EnumeratorInfo("StringList", 20);
	ei->members << PICodeInfo::EnumeratorInfo("Time", 21);
	ei->members << PICodeInfo::EnumeratorInfo("Date", 22);
	ei->members << PICodeInfo::EnumeratorInfo("DateTime", 23);
	ei->members << PICodeInfo::EnumeratorInfo("SystemTime", 24);
	ei->members << PICodeInfo::EnumeratorInfo("Custom", 255);

	ei = new EnumInfo();
	(*enumsInfo)["PIThread::Priority"] = ei;
	ei->name = "PIThread::Priority";
	ei->members << PICodeInfo::EnumeratorInfo("piHighest", -2);
	ei->members << PICodeInfo::EnumeratorInfo("piHigh", -1);
	ei->members << PICodeInfo::EnumeratorInfo("piNormal", 0);
	ei->members << PICodeInfo::EnumeratorInfo("piLow", 1);
	ei->members << PICodeInfo::EnumeratorInfo("piLowerst", 2);

	ei = new EnumInfo();
	(*enumsInfo)["PIKbdListener::SpecialSymbol"] = ei;
	ei->name = "PIKbdListener::SpecialSymbol";
	ei->members << PICodeInfo::EnumeratorInfo("UpArrow", -1);
	ei->members << PICodeInfo::EnumeratorInfo("DownArrow", -2);
	ei->members << PICodeInfo::EnumeratorInfo("RightArrow", -3);
	ei->members << PICodeInfo::EnumeratorInfo("LeftArrow", -4);
	ei->members << PICodeInfo::EnumeratorInfo("CtrlUpArrow", -5);
	ei->members << PICodeInfo::EnumeratorInfo("CtrlDownArrow", -6);
	ei->members << PICodeInfo::EnumeratorInfo("CtrlRightArrow", -7);
	ei->members << PICodeInfo::EnumeratorInfo("CtrlLeftArrow", -8);

	ei = new EnumInfo();
	(*enumsInfo)["PIIODevice::DeviceMode"] = ei;
	ei->name = "PIIODevice::DeviceMode";
	ei->members << PICodeInfo::EnumeratorInfo("ReadOnly", 1);
	ei->members << PICodeInfo::EnumeratorInfo("WriteOnly", 2);
	ei->members << PICodeInfo::EnumeratorInfo("ReadWrite", 3);

	ei = new EnumInfo();
	(*enumsInfo)["PISerial::Parameters"] = ei;
	ei->name = "PISerial::Parameters";
	ei->members << PICodeInfo::EnumeratorInfo("ParityControl", 1);
	ei->members << PICodeInfo::EnumeratorInfo("ParityOdd", 2);
	ei->members << PICodeInfo::EnumeratorInfo("TwoStopBits", 4);

	ei = new EnumInfo();
	(*enumsInfo)["PISerial::Speed"] = ei;
	ei->name = "PISerial::Speed";
	ei->members << PICodeInfo::EnumeratorInfo("S50", 50);
	ei->members << PICodeInfo::EnumeratorInfo("S75", 75);
	ei->members << PICodeInfo::EnumeratorInfo("S110", 110);
	ei->members << PICodeInfo::EnumeratorInfo("S300", 300);
	ei->members << PICodeInfo::EnumeratorInfo("S600", 600);
	ei->members << PICodeInfo::EnumeratorInfo("S1200", 1200);
	ei->members << PICodeInfo::EnumeratorInfo("S2400", 2400);
	ei->members << PICodeInfo::EnumeratorInfo("S4800", 4800);
	ei->members << PICodeInfo::EnumeratorInfo("S9600", 9600);
	ei->members << PICodeInfo::EnumeratorInfo("S19200", 19200);
	ei->members << PICodeInfo::EnumeratorInfo("S38400", 38400);
	ei->members << PICodeInfo::EnumeratorInfo("S57600", 57600);
	ei->members << PICodeInfo::EnumeratorInfo("S115200", 115200);
	ei->members << PICodeInfo::EnumeratorInfo("S1500000", 1500000);
	ei->members << PICodeInfo::EnumeratorInfo("S2000000", 2000000);
	ei->members << PICodeInfo::EnumeratorInfo("S2500000", 2500000);
	ei->members << PICodeInfo::EnumeratorInfo("S3000000", 3000000);
	ei->members << PICodeInfo::EnumeratorInfo("S3500000", 3500000);
	ei->members << PICodeInfo::EnumeratorInfo("S4000000", 4000000);

	ei = new EnumInfo();
	(*enumsInfo)["PIEthernet::Type"] = ei;
	ei->name = "PIEthernet::Type";
	ei->members << PICodeInfo::EnumeratorInfo("UDP", 0);
	ei->members << PICodeInfo::EnumeratorInfo("TCP_Client", 1);
	ei->members << PICodeInfo::EnumeratorInfo("TCP_Server", 2);
	ei->members << PICodeInfo::EnumeratorInfo("TCP_SingleTCP", 3);

	ei = new EnumInfo();
	(*enumsInfo)["PIEthernet::Parameters"] = ei;
	ei->name = "PIEthernet::Parameters";
	ei->members << PICodeInfo::EnumeratorInfo("ReuseAddress", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Broadcast", 2);

	ei = new EnumInfo();
	(*enumsInfo)["PIEthernet::InterfaceFlag"] = ei;
	ei->name = "PIEthernet::InterfaceFlag";
	ei->members << PICodeInfo::EnumeratorInfo("ifActive", 1);
	ei->members << PICodeInfo::EnumeratorInfo("ifRunning", 2);
	ei->members << PICodeInfo::EnumeratorInfo("ifBroadcast", 4);
	ei->members << PICodeInfo::EnumeratorInfo("ifMulticast", 8);
	ei->members << PICodeInfo::EnumeratorInfo("ifLoopback", 16);
	ei->members << PICodeInfo::EnumeratorInfo("ifPTP", 32);

	ei = new EnumInfo();
	(*enumsInfo)["PIProtocol::Type"] = ei;
	ei->name = "PIProtocol::Type";
	ei->members << PICodeInfo::EnumeratorInfo("None", 0);
	ei->members << PICodeInfo::EnumeratorInfo("Serial", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Ethernet", 2);

	ei = new EnumInfo();
	(*enumsInfo)["PIProtocol::Quality"] = ei;
	ei->name = "PIProtocol::Quality";
	ei->members << PICodeInfo::EnumeratorInfo("Unknown", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Failure", 2);
	ei->members << PICodeInfo::EnumeratorInfo("Bad", 3);
	ei->members << PICodeInfo::EnumeratorInfo("Average", 4);
	ei->members << PICodeInfo::EnumeratorInfo("Good", 5);

	ei = new EnumInfo();
	(*enumsInfo)["PIDiagnostics::Quality"] = ei;
	ei->name = "PIDiagnostics::Quality";
	ei->members << PICodeInfo::EnumeratorInfo("Unknown", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Failure", 2);
	ei->members << PICodeInfo::EnumeratorInfo("Bad", 3);
	ei->members << PICodeInfo::EnumeratorInfo("Average", 4);
	ei->members << PICodeInfo::EnumeratorInfo("Good", 5);

	ei = new EnumInfo();
	(*enumsInfo)["PIConsole::Format"] = ei;
	ei->name = "PIConsole::Format";
	ei->members << PICodeInfo::EnumeratorInfo("Normal", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Bold", 2);
	ei->members << PICodeInfo::EnumeratorInfo("Faint", 4);
	ei->members << PICodeInfo::EnumeratorInfo("Italic", 8);
	ei->members << PICodeInfo::EnumeratorInfo("Underline", 16);
	ei->members << PICodeInfo::EnumeratorInfo("Blink", 32);
	ei->members << PICodeInfo::EnumeratorInfo("Inverse", 64);
	ei->members << PICodeInfo::EnumeratorInfo("Black", 256);
	ei->members << PICodeInfo::EnumeratorInfo("Red", 512);
	ei->members << PICodeInfo::EnumeratorInfo("Green", 1024);
	ei->members << PICodeInfo::EnumeratorInfo("Yellow", 2048);
	ei->members << PICodeInfo::EnumeratorInfo("Blue", 4096);
	ei->members << PICodeInfo::EnumeratorInfo("Magenta", 8192);
	ei->members << PICodeInfo::EnumeratorInfo("Cyan", 16384);
	ei->members << PICodeInfo::EnumeratorInfo("White", 32768);
	ei->members << PICodeInfo::EnumeratorInfo("BackBlack", 65536);
	ei->members << PICodeInfo::EnumeratorInfo("BackRed", 131072);
	ei->members << PICodeInfo::EnumeratorInfo("BackGreen", 262144);
	ei->members << PICodeInfo::EnumeratorInfo("BackYellow", 524288);
	ei->members << PICodeInfo::EnumeratorInfo("BackBlue", 1048576);
	ei->members << PICodeInfo::EnumeratorInfo("BackMagenta", 2097152);
	ei->members << PICodeInfo::EnumeratorInfo("BackCyan", 4194304);
	ei->members << PICodeInfo::EnumeratorInfo("BackWhite", 8388608);
	ei->members << PICodeInfo::EnumeratorInfo("Dec", 16777216);
	ei->members << PICodeInfo::EnumeratorInfo("Hex", 33554432);
	ei->members << PICodeInfo::EnumeratorInfo("Oct", 67108864);
	ei->members << PICodeInfo::EnumeratorInfo("Bin", 134217728);
	ei->members << PICodeInfo::EnumeratorInfo("Scientific", 268435456);
	ei->members << PICodeInfo::EnumeratorInfo("SystemTimeSplit", 536870912);
	ei->members << PICodeInfo::EnumeratorInfo("SystemTimeSeconds", 1073741824);

	ei = new EnumInfo();
	(*enumsInfo)["PIConsole::Alignment"] = ei;
	ei->name = "PIConsole::Alignment";
	ei->members << PICodeInfo::EnumeratorInfo("Nothing", 0);
	ei->members << PICodeInfo::EnumeratorInfo("Left", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Right", 2);

	ei = new EnumInfo();
	(*enumsInfo)["PIConsole::ConnectedState"] = ei;
	ei->name = "PIConsole::ConnectedState";
	ei->members << PICodeInfo::EnumeratorInfo("Disconnected", 0);
	ei->members << PICodeInfo::EnumeratorInfo("FetchingData", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Committing", 2);
	ei->members << PICodeInfo::EnumeratorInfo("Connected", 3);

	ei = new EnumInfo();
	(*enumsInfo)["eType"] = ei;
	ei->name = "eType";
	ei->members << PICodeInfo::EnumeratorInfo("etNumber", 0);
	ei->members << PICodeInfo::EnumeratorInfo("etOperator", 1);
	ei->members << PICodeInfo::EnumeratorInfo("etVariable", 2);
	ei->members << PICodeInfo::EnumeratorInfo("etFunction", 3);

	ei = new EnumInfo();
	(*enumsInfo)["Operation"] = ei;
	ei->name = "Operation";
	ei->members << PICodeInfo::EnumeratorInfo("oNone", 0);
	ei->members << PICodeInfo::EnumeratorInfo("oAdd", 1);
	ei->members << PICodeInfo::EnumeratorInfo("oSubtract", 2);
	ei->members << PICodeInfo::EnumeratorInfo("oMultiply", 3);
	ei->members << PICodeInfo::EnumeratorInfo("oDivide", 4);
	ei->members << PICodeInfo::EnumeratorInfo("oResidue", 5);
	ei->members << PICodeInfo::EnumeratorInfo("oPower", 6);
	ei->members << PICodeInfo::EnumeratorInfo("oEqual", 7);
	ei->members << PICodeInfo::EnumeratorInfo("oNotEqual", 8);
	ei->members << PICodeInfo::EnumeratorInfo("oGreater", 9);
	ei->members << PICodeInfo::EnumeratorInfo("oSmaller", 10);
	ei->members << PICodeInfo::EnumeratorInfo("oGreaterEqual", 11);
	ei->members << PICodeInfo::EnumeratorInfo("oSmallerEqual", 12);
	ei->members << PICodeInfo::EnumeratorInfo("oAnd", 13);
	ei->members << PICodeInfo::EnumeratorInfo("oOr", 14);
	ei->members << PICodeInfo::EnumeratorInfo("oFunction", 15);

	ei = new EnumInfo();
	(*enumsInfo)["BaseFunctions"] = ei;
	ei->name = "BaseFunctions";
	ei->members << PICodeInfo::EnumeratorInfo("bfUnknown", 0);
	ei->members << PICodeInfo::EnumeratorInfo("bfSin", 1);
	ei->members << PICodeInfo::EnumeratorInfo("bfCos", 2);
	ei->members << PICodeInfo::EnumeratorInfo("bfTg", 3);
	ei->members << PICodeInfo::EnumeratorInfo("bfCtg", 4);
	ei->members << PICodeInfo::EnumeratorInfo("bfArcsin", 5);
	ei->members << PICodeInfo::EnumeratorInfo("bfArccos", 6);
	ei->members << PICodeInfo::EnumeratorInfo("bfArctg", 7);
	ei->members << PICodeInfo::EnumeratorInfo("bfArcctg", 8);
	ei->members << PICodeInfo::EnumeratorInfo("bfExp", 9);
	ei->members << PICodeInfo::EnumeratorInfo("bfRandom", 10);
	ei->members << PICodeInfo::EnumeratorInfo("bfSh", 11);
	ei->members << PICodeInfo::EnumeratorInfo("bfCh", 12);
	ei->members << PICodeInfo::EnumeratorInfo("bfTh", 13);
	ei->members << PICodeInfo::EnumeratorInfo("bfCth", 14);
	ei->members << PICodeInfo::EnumeratorInfo("bfSqrt", 15);
	ei->members << PICodeInfo::EnumeratorInfo("bfSqr", 16);
	ei->members << PICodeInfo::EnumeratorInfo("bfPow", 17);
	ei->members << PICodeInfo::EnumeratorInfo("bfAbs", 18);
	ei->members << PICodeInfo::EnumeratorInfo("bfLn", 19);
	ei->members << PICodeInfo::EnumeratorInfo("bfLg", 20);
	ei->members << PICodeInfo::EnumeratorInfo("bfLog", 21);
	ei->members << PICodeInfo::EnumeratorInfo("bfSign", 22);
	ei->members << PICodeInfo::EnumeratorInfo("bfIm", 23);
	ei->members << PICodeInfo::EnumeratorInfo("bfRe", 24);
	ei->members << PICodeInfo::EnumeratorInfo("bfArg", 25);
	ei->members << PICodeInfo::EnumeratorInfo("bfLen", 26);
	ei->members << PICodeInfo::EnumeratorInfo("bfConj", 27);
	ei->members << PICodeInfo::EnumeratorInfo("bfRad", 28);
	ei->members << PICodeInfo::EnumeratorInfo("bfDeg", 29);
	ei->members << PICodeInfo::EnumeratorInfo("bfJ0", 30);
	ei->members << PICodeInfo::EnumeratorInfo("bfJ1", 31);
	ei->members << PICodeInfo::EnumeratorInfo("bfJN", 32);
	ei->members << PICodeInfo::EnumeratorInfo("bfY0", 33);
	ei->members << PICodeInfo::EnumeratorInfo("bfY1", 34);
	ei->members << PICodeInfo::EnumeratorInfo("bfYN", 35);
	ei->members << PICodeInfo::EnumeratorInfo("bfMin", 36);
	ei->members << PICodeInfo::EnumeratorInfo("bfMax", 37);
	ei->members << PICodeInfo::EnumeratorInfo("bfClamp", 38);
	ei->members << PICodeInfo::EnumeratorInfo("bfStep", 39);
	ei->members << PICodeInfo::EnumeratorInfo("bfMix", 40);
	ei->members << PICodeInfo::EnumeratorInfo("bfDefined", 41);
	ei->members << PICodeInfo::EnumeratorInfo("bfCustom", 65535);

	ei = new EnumInfo();
	(*enumsInfo)["PISignals::Signal"] = ei;
	ei->name = "PISignals::Signal";
	ei->members << PICodeInfo::EnumeratorInfo("Interrupt", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Illegal", 2);
	ei->members << PICodeInfo::EnumeratorInfo("Abort", 4);
	ei->members << PICodeInfo::EnumeratorInfo("FPE", 8);
	ei->members << PICodeInfo::EnumeratorInfo("SegFault", 16);
	ei->members << PICodeInfo::EnumeratorInfo("Termination", 32);
	ei->members << PICodeInfo::EnumeratorInfo("Hangup", 64);
	ei->members << PICodeInfo::EnumeratorInfo("Quit", 128);
	ei->members << PICodeInfo::EnumeratorInfo("Kill", 256);
	ei->members << PICodeInfo::EnumeratorInfo("BrokenPipe", 512);
	ei->members << PICodeInfo::EnumeratorInfo("Timer", 1024);
	ei->members << PICodeInfo::EnumeratorInfo("UserDefined1", 2048);
	ei->members << PICodeInfo::EnumeratorInfo("UserDefined2", 4096);
	ei->members << PICodeInfo::EnumeratorInfo("ChildStopped", 8192);
	ei->members << PICodeInfo::EnumeratorInfo("Continue", 16384);
	ei->members << PICodeInfo::EnumeratorInfo("StopProcess", 32768);
	ei->members << PICodeInfo::EnumeratorInfo("StopTTY", 65536);
	ei->members << PICodeInfo::EnumeratorInfo("StopTTYInput", 131072);
	ei->members << PICodeInfo::EnumeratorInfo("StopTTYOutput", 262144);
	ei->members << PICodeInfo::EnumeratorInfo("All", 1048575);

	ei = new EnumInfo();
	(*enumsInfo)["PIBinaryLog::PlayMode"] = ei;
	ei->name = "PIBinaryLog::PlayMode";
	ei->members << PICodeInfo::EnumeratorInfo("PlayRealTime", 0);
	ei->members << PICodeInfo::EnumeratorInfo("PlayVariableSpeed", 1);

	ei = new EnumInfo();
	(*enumsInfo)["PIUSB::Endpoint::Direction"] = ei;
	ei->name = "PIUSB::Endpoint::Direction";
	ei->members << PICodeInfo::EnumeratorInfo("Write", 0);
	ei->members << PICodeInfo::EnumeratorInfo("Read", 1);

	ei = new EnumInfo();
	(*enumsInfo)["PIUSB::Endpoint::TransferType"] = ei;
	ei->name = "PIUSB::Endpoint::TransferType";
	ei->members << PICodeInfo::EnumeratorInfo("Control", 0);
	ei->members << PICodeInfo::EnumeratorInfo("Isochronous", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Bulk", 2);
	ei->members << PICodeInfo::EnumeratorInfo("Interrupt", 3);

	ei = new EnumInfo();
	(*enumsInfo)["PIUSB::Endpoint::SynchronisationType"] = ei;
	ei->name = "PIUSB::Endpoint::SynchronisationType";
	ei->members << PICodeInfo::EnumeratorInfo("NoSynchonisation", 0);
	ei->members << PICodeInfo::EnumeratorInfo("Asynchronous", 2);
	ei->members << PICodeInfo::EnumeratorInfo("Adaptive", 1);
	ei->members << PICodeInfo::EnumeratorInfo("Synchronous", 3);

	ei = new EnumInfo();
	(*enumsInfo)["PIUSB::Endpoint::UsageType"] = ei;
	ei->name = "PIUSB::Endpoint::UsageType";
	ei->members << PICodeInfo::EnumeratorInfo("DataEndpoint", 0);
	ei->members << PICodeInfo::EnumeratorInfo("FeedbackEndpoint", 2);
	ei->members << PICodeInfo::EnumeratorInfo("ExplicitFeedbackDataEndpoint", 1);
}


bool __ClassInfo_TEST_H_Initializer__::_inited_ = false;
