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