yapf/strapi.hpp
author KUDr
Sun, 31 Dec 2006 21:13:40 +0000
branchcustombridgeheads
changeset 5616 0570ae953222
child 5619 a2f1d08e2215
permissions -rw-r--r--
(svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
5616
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
     1
/* $Id$ */
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
     2
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
     3
#ifndef  STRAPI_HPP
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
     4
#define  STRAPI_HPP
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
     5
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
     6
#include <string.h>
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
     7
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
     8
/** String API mapper base - just mapping by character type, not by case sensitivity yet.
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
     9
	* Class template CStrApiBaseT declaration is general, but following inline method
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    10
	* definitions are specialized by character type. Class is not used directly, but only
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    11
	* as a base class for template class CStrApiT */
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    12
template <typename Tchar>
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    13
class CStrApiBaseT
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    14
{
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    15
public:
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    16
	/** ::strlen wrapper */
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    17
	static size_t StrLen(const Tchar *s);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    18
	static int SPrintFL(Tchar *buf, size_t count, const Tchar *fmt, va_list args);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    19
};
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    20
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    21
/** ::strlen wrapper specialization for char */
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    22
template <> /*static*/ inline size_t CStrApiBaseT<char>::StrLen(const char *s)
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    23
{
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    24
	return ::strlen(s);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    25
}
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    26
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    27
/** ::strlen wrapper specialization for wchar_t */
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    28
template <> /*static*/ inline size_t CStrApiBaseT<wchar_t>::StrLen(const wchar_t *s)
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    29
{
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    30
	return ::wcslen(s);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    31
}
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    32
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    33
/** ::vsprintf wrapper specialization for char */
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    34
template <> /*static*/ inline int CStrApiBaseT<char>::SPrintFL(char *buf, size_t count, const char *fmt, va_list args)
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    35
{
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    36
#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC 8.0 and above
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    37
	return ::vsnprintf_s(buf, count, count - 1, fmt, args);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    38
#else // ! VC 8.0 and above
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    39
	return ::vsnprintf(buf, count, fmt, args);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    40
#endif
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    41
}
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    42
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    43
/** ::vsprintf wrapper specialization for wchar_t */
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    44
template <> /*static*/ inline int CStrApiBaseT<wchar_t>::SPrintFL(wchar_t *buf, size_t count, const wchar_t *fmt, va_list args)
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    45
{
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    46
#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC 8.0 and above
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    47
	return ::_vsnwprintf_s(buf, count, count - 1, fmt, args);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    48
#else // ! VC 8.0 and above
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    49
	return ::vswprintf(buf, count, fmt, args);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    50
#endif
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    51
}
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    52
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    53
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    54
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    55
template <typename Tchar, bool TcaseInsensitive>
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    56
class CStrApiT : public CStrApiBaseT<Tchar>
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    57
{
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    58
public:
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    59
	static int StrCmp(const Tchar *s1, const Tchar *s2);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    60
};
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    61
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    62
template <> /*static*/ inline int CStrApiT<char, false>::StrCmp(const char *s1, const char *s2)
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    63
{
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    64
	return ::strcmp(s1, s2);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    65
}
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    66
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    67
template <> /*static*/ inline int CStrApiT<char, true>::StrCmp(const char *s1, const char *s2)
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    68
{
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    69
	return ::_stricmp(s1, s2);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    70
}
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    71
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    72
template <> /*static*/ inline int CStrApiT<wchar_t, false>::StrCmp(const wchar_t *s1, const wchar_t *s2)
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    73
{
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    74
	return ::wcscmp(s1, s2);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    75
}
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    76
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    77
template <> /*static*/ inline int CStrApiT<wchar_t, true>::StrCmp(const wchar_t *s1, const wchar_t *s2)
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    78
{
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    79
	return ::_wcsicmp(s1, s2);
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    80
}
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    81
0570ae953222 (svn r7708) [cbh] - Fix: [YAPF] added some YAPF debug messages, added string support used for new debugging stuff, resolved few cbh related issues
KUDr
parents:
diff changeset
    82
#endif /* STRAPI_HPP */