Initial IBM OpenAFS 1.0 tree
[openafs.git] / src / WINNT / talocale / tal_string.h
1 #ifndef TAL_STRING_H
2 #define TAL_STRING_H
3
4 #include <winsock2.h>
5
6
7 /*
8  * DEFINITIONS ________________________________________________________________
9  *
10  */
11
12 #ifndef cchRESOURCE
13 #define cchRESOURCE 256
14 #endif
15
16 #ifndef cchLENGTH
17 #define cchLENGTH(_sz) (sizeof(_sz) / sizeof(_sz[0]))
18 #endif
19
20 #define cszMultiStringNULL TEXT("---")  // added instead of "" in multistrings
21
22
23 /*
24  * PROTOTYPES _________________________________________________________________
25  *
26  */
27
28 extern void GetString (LPTSTR pszTarget, int idsSource, int cchMax = cchRESOURCE);
29 extern size_t GetStringLength (int ids);
30
31 extern BOOL SearchMultiString (LPCTSTR pmsz, LPCTSTR pszString, BOOL fCaseSensitive = FALSE);
32
33 extern LPTSTR cdecl FormatString  (LPCTSTR pszTemplate, LPCTSTR pszFormat = NULL, ...);
34 extern LPTSTR cdecl FormatString  (int idsTemplate,     LPCTSTR pszFormat = NULL, ...);
35 extern LPTSTR cdecl vFormatString (LPCTSTR pszTemplate, LPCTSTR pszFormat, va_list arg);
36 extern LPTSTR cdecl vFormatString (int idsTemplate,     LPCTSTR pszFormat, va_list arg);
37
38 extern void cdecl FormatMultiString  (LPTSTR *ppszTarget, BOOL fAddHead, LPCTSTR pszTemplate, LPCTSTR pszFormat = NULL, ...);
39 extern void cdecl FormatMultiString  (LPTSTR *ppszTarget, BOOL fAddHead, int idsTemplate,     LPCTSTR pszFormat = NULL, ...);
40 extern void cdecl vFormatMultiString (LPTSTR *ppszTarget, BOOL fAddHead, LPCTSTR pszTemplate, LPCTSTR pszFormat, va_list arg);
41 extern void cdecl vFormatMultiString (LPTSTR *ppszTarget, BOOL fAddHead, int idsTemplate,     LPCTSTR pszFormat, va_list arg);
42
43 extern void FormatBytes (LPTSTR pszTarget, LPTSTR pszFormat, double cb);
44 extern void FormatDouble (LPTSTR pszTarget, LPTSTR pszFormat, double lfValue);
45 extern BOOL FormatTime (LPTSTR pszTarget, LPTSTR pszFormat, SYSTEMTIME *pst, BOOL fShowDate = TRUE, BOOL fShowTime = TRUE);
46 extern BOOL FormatElapsed (LPTSTR pszTarget, LPTSTR pszFormat, SYSTEMTIME *pst);
47 extern BOOL FormatError (LPTSTR pszTarget, LPTSTR pszFmt, DWORD dwError);
48 extern void FormatSockAddr (LPTSTR pszTarget, LPTSTR pszFmt, SOCKADDR_IN *paddr);
49 extern void FormatLargeInt (LPTSTR pszTarget, LPTSTR pszFormatUser, LARGE_INTEGER *pldw);
50
51 typedef BOOL (CALLBACK* LPERRORPROC)(LPTSTR psz, ULONG dwErr, LANGID idLanguage);
52 extern void SetErrorTranslationFunction (LPERRORPROC pfnGetErrText);
53
54 extern LPCTSTR FindExtension (LPCTSTR pszToSearch);
55 extern LPCTSTR FindBaseFileName (LPCTSTR pszToSearch);
56 extern void ChangeExtension (LPTSTR pszTarget, LPCTSTR pszSource, LPCTSTR pszNewExt, BOOL fForce = TRUE);
57 extern void CopyBaseFileName (LPTSTR pszTarget, LPCTSTR pszSource);
58
59 extern void CopyUnicodeToAnsi (LPSTR pszTargetA, LPCWSTR pszOriginalW, size_t cchMax = (size_t)1024);
60 extern void CopyUnicodeToString (LPTSTR pszTarget, LPCWSTR pszOriginalW, size_t cchMax = (size_t)1024);
61 extern void CopyAnsiToUnicode (LPWSTR pszTargetW, LPCSTR pszOriginalA, size_t cchMax = (size_t)1024);
62 extern void CopyAnsiToString (LPTSTR pszTarget, LPCSTR pszOriginalA, size_t cchMax = (size_t)1024);
63 extern void CopyStringToUnicode (LPWSTR pszTargetW, LPCTSTR pszOriginal, size_t cchMax = (size_t)1024);
64 extern void CopyStringToAnsi (LPSTR pszTargetA, LPCTSTR pszOriginal, size_t cchMax = (size_t)1024);
65
66 #define AllocateAnsi(_cch)     ((LPSTR)Allocate ((max((_cch),cchRESOURCE)+1) * sizeof(CHAR)))
67 #define AllocateUnicode(_cch) ((LPWSTR)Allocate ((max((_cch),cchRESOURCE)+1) * sizeof(WCHAR)))
68 #define AllocateString(_cch)  ((LPTSTR)Allocate ((max((_cch),cchRESOURCE)+1) * sizeof(TCHAR)))
69 extern void FreeString (LPCVOID pszString, LPCVOID pszOriginalString = NULL);
70
71 extern LPSTR StringToAnsi (LPCTSTR pszOriginal);
72 extern LPTSTR AnsiToString (LPCSTR pszOriginalA);
73 extern LPWSTR StringToUnicode (LPCTSTR pszOriginal);
74 extern LPTSTR UnicodeToString (LPCWSTR pszOriginalW);
75 extern LPWSTR AnsiToUnicode (LPCSTR pszOriginalA);
76 extern LPSTR UnicodeToAnsi (LPCWSTR pszOriginalW);
77
78 extern LPTSTR CloneAnsi (LPSTR pszOriginalA);
79 extern LPTSTR CloneUnicode (LPWSTR pszOriginalW);
80 extern LPTSTR CloneString (LPTSTR pszOriginal);
81 extern LPTSTR CloneMultiString (LPCSTR mszOriginal);
82
83
84 /*
85  *** The lstr* functions that Win32 forgot to include
86  *
87  */
88
89 extern void lstrupr (LPTSTR pszToChange);
90 extern LPCTSTR lstrchr (LPCTSTR pszSearch, TCHAR chToSearchFor);
91 extern LPCTSTR lstrrchr (LPCTSTR pszSearch, TCHAR chToSearchFor);
92 extern int lstrncmpi (LPCTSTR pszA, LPCTSTR pszB, size_t cchMax);
93 extern void lstrncpy (LPTSTR pszTarget, LPCTSTR pszSource, size_t cchMax);
94 extern void lstrzcpy (LPTSTR pszTarget, LPCTSTR pszSource, size_t cchMax);
95
96 extern void lsplitpath (LPCTSTR pszSource,
97                  LPTSTR pszDrive, LPTSTR pszPath, LPTSTR pszBase, LPTSTR pszExt);
98
99
100 #endif
101