/* -*- coding: windows-1251-dos -*- */
#ifndef _STRING_UTIL_H_
#define _STRING_UTIL_H_

/*
  Преобразование буфера данных из кодировки UTF-8 в ANSI
IN:
  - tmp_out: куда положить результат. Буфер уже должен существовать
             и в нем должно быть достаточно места
  - UTF8_str: откуда брать данные для преобразования
  - size: сколько длина буфера для преобразования (UTF8_str)
  - fact - куда положить итоговый размер данных в буфере

OUT:  результирующий буфер.
*/
void* convUTF8_to_ANSI(char* tmp_out, char* UTF8_str, unsigned int size, int* fact);

char* convUTF8_to_ANSI_STR(char* UTF8_str);

void ascii2ws(WSHDR* ws, const char* s);

int utf8_2unicode(const char** res, const char* str);

unsigned int char8to16(int c);

// Преобразование в нижний регистр
char* str2lower(char* st);

// Функция из интернета. UTF16->UTF8
char* utf16_to_utf8(char** s, size_t* len);

// Функция из интернета. UTF8->UTF16
int utf8_to_utf16(char* utf8, int cc, char* unicode16);

// UTF8 для джаббера
char* Correct_UTF8_String(char* utf8_jid);

// А это вообще чтобы всем было хорошо (с) Чеботарёв А.А.
char* ANSI2UTF8(const char* ansi_str, int maxlen);

// Получить значение по параметру (см. описание в теле файла)
char* Get_Param_Value(char* ch, char* req, char cut_quotes);

char* Replace_Special_Syms(char* unrep_str);

char* Mask_Special_Syms(const char* unrep_str);

// Аналог strstr, но без чувствительности к регистру
//char *stristr(char *haystack, char *needle);
char* stristr(const char* s, const char* find);

// Аналог strcmp, но без чувствительности к регистру
//int stricmp(char *str1, char *str2);
int stricmp(const char* s, const char* d);

unsigned int char16to8(unsigned int c);
void utf82win(char* d, const char* s);

//разница времени
long GetIDLETime(TTime intime, TDate indate);

char* utf82filename(char* str);

//обрезает строку до заданной ширины
void CutWSStringWidth(WSHDR* ws, int width, int font);

void remove_bad_chars(char* s);

#endif
