#pragma once
/*
Это была задумка, как сделать переносимый код, чтобы можно было
компилировать под линукс, где по умолчанию мультибайт и utf-8
*/
#if defined(_UNICODE)
    /* Если у нас юникод */
    #define _tcout wcout
    #define _tfopen _wfopen
    #define _tstring wstring
    #define _tregex wregex
    #define _tto_string to_wstring
    #define _tcscmp wcscmp
    #define _ttolower towlower
    #define _ttoupper towupper
    #include <cwctype>
    #include <cwchar>


    #if !defined(_MSC_VER)
        /* Если не Visual Studio, надо добавить макросов от студии */
        #define __T(x)      L ## x
        #define _T(x)       __T(x)
        #define TCHAR       wchar_t
        #define _tmain      wmain
        #define _tprintf    wprintf
        #define _ftprintf   fwprintf
    #else
        #include <tchar.h>
    #endif

#else
    /* Если не юникод */
    #define _tcout cout
    #define _tfopen fopen
    #define _tstring string
    #define _tregex regex
    #define _tto_string to_string
    #define _tcscmp strcmp
    #define _ttolower tolower
    #define _ttoupper toupper
    #include <cctype>

    #if !defined(_MSC_VER)
        /* Если не Visual Studio, надо добавить макросов от студии */
        #define _T(x)       x
        #define TCHAR       char
        #define _tmain      main
        #define _tprintf    printf
        #define _ftprintf   fprintf
    #else
        #include <tchar.h>
    #endif

#endif
