windows-64-bit-type-safety-20051105
[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 #ifndef EXPORTED
32 #define EXPORTED __declspec(dllexport)
33 #endif
34
35 /*
36  * PROTOTYPES _________________________________________________________________
37  *
38  */
39
40 extern EXPORTED void GetString (LPTSTR pszTarget, int idsSource, int cchMax = cchRESOURCE);
41 extern EXPORTED size_t GetStringLength (int ids);
42
43 extern EXPORTED BOOL SearchMultiString (LPCTSTR pmsz, LPCTSTR pszString, BOOL fCaseSensitive = FALSE);
44
45 extern EXPORTED LPTSTR cdecl FormatString  (LPCTSTR pszTemplate, LPCTSTR pszFormat = NULL, ...);
46 extern EXPORTED LPTSTR cdecl FormatString  (int idsTemplate,     LPCTSTR pszFormat = NULL, ...);
47 extern EXPORTED LPTSTR cdecl vFormatString (LPCTSTR pszTemplate, LPCTSTR pszFormat, va_list arg);
48 extern EXPORTED LPTSTR cdecl vFormatString (int idsTemplate,     LPCTSTR pszFormat, va_list arg);
49
50 extern EXPORTED void cdecl FormatMultiString  (LPTSTR *ppszTarget, BOOL fAddHead, LPCTSTR pszTemplate, LPCTSTR pszFormat = NULL, ...);
51 extern EXPORTED void cdecl FormatMultiString  (LPTSTR *ppszTarget, BOOL fAddHead, int idsTemplate,     LPCTSTR pszFormat = NULL, ...);
52 extern EXPORTED void cdecl vFormatMultiString (LPTSTR *ppszTarget, BOOL fAddHead, LPCTSTR pszTemplate, LPCTSTR pszFormat, va_list arg);
53 extern EXPORTED void cdecl vFormatMultiString (LPTSTR *ppszTarget, BOOL fAddHead, int idsTemplate,     LPCTSTR pszFormat, va_list arg);
54
55 extern EXPORTED void FormatBytes (LPTSTR pszTarget, LPTSTR pszFormat, double cb);
56 extern EXPORTED void FormatDouble (LPTSTR pszTarget, LPTSTR pszFormat, double lfValue);
57 extern EXPORTED BOOL FormatTime (LPTSTR pszTarget, LPTSTR pszFormat, SYSTEMTIME *pst, BOOL fShowDate = TRUE, BOOL fShowTime = TRUE);
58 extern EXPORTED BOOL FormatElapsed (LPTSTR pszTarget, LPTSTR pszFormat, SYSTEMTIME *pst);
59 extern EXPORTED BOOL FormatError (LPTSTR pszTarget, LPTSTR pszFmt, DWORD dwError);
60 extern EXPORTED void FormatSockAddr (LPTSTR pszTarget, LPTSTR pszFmt, SOCKADDR_IN *paddr);
61 extern EXPORTED void FormatLargeInt (LPTSTR pszTarget, LPTSTR pszFormatUser, LARGE_INTEGER *pldw);
62
63 typedef BOOL (CALLBACK* LPERRORPROC)(LPTSTR psz, ULONG dwErr, LANGID idLanguage);
64 extern EXPORTED void SetErrorTranslationFunction (LPERRORPROC pfnGetErrText);
65
66 extern EXPORTED LPCTSTR FindExtension (LPCTSTR pszToSearch);
67 extern EXPORTED LPCTSTR FindBaseFileName (LPCTSTR pszToSearch);
68 extern EXPORTED void ChangeExtension (LPTSTR pszTarget, LPCTSTR pszSource, LPCTSTR pszNewExt, BOOL fForce = TRUE);
69 extern EXPORTED void CopyBaseFileName (LPTSTR pszTarget, LPCTSTR pszSource);
70
71 extern EXPORTED void CopyUnicodeToAnsi (LPSTR pszTargetA, LPCWSTR pszOriginalW, size_t cchMax = (size_t)1024);
72 extern EXPORTED void CopyUnicodeToString (LPTSTR pszTarget, LPCWSTR pszOriginalW, size_t cchMax = (size_t)1024);
73 extern EXPORTED void CopyAnsiToUnicode (LPWSTR pszTargetW, LPCSTR pszOriginalA, size_t cchMax = (size_t)1024);
74 extern EXPORTED void CopyAnsiToString (LPTSTR pszTarget, LPCSTR pszOriginalA, size_t cchMax = (size_t)1024);
75 extern EXPORTED void CopyStringToUnicode (LPWSTR pszTargetW, LPCTSTR pszOriginal, size_t cchMax = (size_t)1024);
76 extern EXPORTED void CopyStringToAnsi (LPSTR pszTargetA, LPCTSTR pszOriginal, size_t cchMax = (size_t)1024);
77
78 #define AllocateAnsi(_cch)     ((LPSTR)Allocate ((max((_cch),cchRESOURCE)+1) * sizeof(CHAR)))
79 #define AllocateUnicode(_cch) ((LPWSTR)Allocate ((max((_cch),cchRESOURCE)+1) * sizeof(WCHAR)))
80 #define AllocateString(_cch)  ((LPTSTR)Allocate ((max((_cch),cchRESOURCE)+1) * sizeof(TCHAR)))
81 extern EXPORTED void FreeString (LPCVOID pszString, LPCVOID pszOriginalString = NULL);
82
83 extern EXPORTED LPSTR StringToAnsi (LPCTSTR pszOriginal);
84 extern EXPORTED LPTSTR AnsiToString (LPCSTR pszOriginalA);
85 extern EXPORTED LPWSTR StringToUnicode (LPCTSTR pszOriginal);
86 extern EXPORTED LPTSTR UnicodeToString (LPCWSTR pszOriginalW);
87 extern EXPORTED LPWSTR AnsiToUnicode (LPCSTR pszOriginalA);
88 extern EXPORTED LPSTR UnicodeToAnsi (LPCWSTR pszOriginalW);
89
90 extern EXPORTED LPTSTR CloneAnsi (LPSTR pszOriginalA);
91 extern EXPORTED LPTSTR CloneUnicode (LPWSTR pszOriginalW);
92 extern EXPORTED LPTSTR CloneString (LPTSTR pszOriginal);
93 extern EXPORTED LPTSTR CloneMultiString (LPCSTR mszOriginal);
94
95
96 /*
97  *** The lstr* functions that Win32 forgot to include
98  *
99  */
100
101 extern EXPORTED void lstrupr (LPTSTR pszToChange);
102 extern EXPORTED LPCTSTR lstrchr (LPCTSTR pszSearch, TCHAR chToSearchFor);
103 extern EXPORTED LPCTSTR lstrrchr (LPCTSTR pszSearch, TCHAR chToSearchFor);
104 extern EXPORTED int lstrncmpi (LPCTSTR pszA, LPCTSTR pszB, size_t cchMax);
105 extern EXPORTED void lstrncpy (LPTSTR pszTarget, LPCTSTR pszSource, size_t cchMax);
106 extern EXPORTED void lstrzcpy (LPTSTR pszTarget, LPCTSTR pszSource, size_t cchMax);
107
108 extern EXPORTED void lsplitpath (LPCTSTR pszSource,
109                  LPTSTR pszDrive, LPTSTR pszPath, LPTSTR pszBase, LPTSTR pszExt);
110 #endif
111