65 lines
2.5 KiB
C++
65 lines
2.5 KiB
C++
#ifndef FELIX_THE_CAT_DIFFERENT_LIBRARY_INCLUDED_AKJGNKJABVKALJGLKAJGLAKJG
|
|
#define FELIX_THE_CAT_DIFFERENT_LIBRARY_INCLUDED_AKJGNKJABVKALJGLKAJGLAKJG
|
|
|
|
#include <pthread.h>
|
|
|
|
#include <string>
|
|
#include <sstream>
|
|
#include <iostream>
|
|
#include <vector>
|
|
|
|
using namespace std;
|
|
|
|
template <class T>
|
|
string ToString(const T& a)
|
|
{
|
|
ostringstream oss;
|
|
oss.setf(ios::fixed | ios::showpoint);
|
|
oss.precision(10);
|
|
oss << a;
|
|
return oss.str();
|
|
}
|
|
|
|
ostream& operator<<(ostream &out, const pthread_mutex_t m);
|
|
|
|
void LockMutex(pthread_mutex_t &m);
|
|
void ReleaseMutex(pthread_mutex_t &m);
|
|
|
|
|
|
int Round(double v);
|
|
|
|
// конвертирует из CP866 (в котором часто девайсы шлют всякую фигню)
|
|
// в UTF-8 (в котором весь наш код), чтобы можно было сравнивать строки
|
|
// и не иметь в исходниках две кодировки
|
|
// src предполагается нуль-терминированным
|
|
void CP866ToUTF8(unsigned char *src, unsigned char *dest, int destlen);
|
|
// То же самое для CP1251
|
|
void CP1251ToUTF8(const unsigned char *src, unsigned char *dest, int destlen);
|
|
|
|
string CP1251ToUTF8(const string &src);
|
|
|
|
// распаковывает BCD-число. Сделано в виде функции, а не макроса, чтобы
|
|
// можно было подставлять в нее функции, изменяющие состояние параметров
|
|
int UnpackBCD(int a);
|
|
// аналогично, упаковывает BCD-число
|
|
int PackBCD(int a);
|
|
// проверяет, является ли a валидным BCD-байтом
|
|
bool CheckBCD(int a);
|
|
|
|
|
|
// получает количество миллисекунд с начала эпохи (иногда нужно для)
|
|
// всяких точных таймаутов при приеме/отправке
|
|
unsigned long long GetMilliseconds();
|
|
|
|
// заменяет в text все вхождения pattern на replacement
|
|
// аккуратно со случаем, когда replacement содержит pattern - может повиснуть (!)
|
|
string ReplaceAll(string text, string pattern, string replacement);
|
|
|
|
// конвертирует число в строку в заданной base
|
|
string IntToString(int a, int base = 10);
|
|
|
|
// поднимает до упора лимит на количество открытых дескрипторов
|
|
int RaiseFDLimit();
|
|
|
|
#endif
|