Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
opt
cpr
opt
curl
lib
curl_multibyte.h
Go to the documentation of this file.
1
#ifndef HEADER_CURL_MULTIBYTE_H
2
#define HEADER_CURL_MULTIBYTE_H
3
/***************************************************************************
4
* _ _ ____ _
5
* Project ___| | | | _ \| |
6
* / __| | | | |_) | |
7
* | (__| |_| | _ <| |___
8
* \___|\___/|_| \_\_____|
9
*
10
* Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
11
*
12
* This software is licensed as described in the file COPYING, which
13
* you should have received as part of this distribution. The terms
14
* are also available at https://curl.haxx.se/docs/copyright.html.
15
*
16
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
17
* copies of the Software, and permit persons to whom the Software is
18
* furnished to do so, under the terms of the COPYING file.
19
*
20
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
21
* KIND, either express or implied.
22
*
23
***************************************************************************/
24
#include "
curl_setup.h
"
25
26
#if defined(USE_WIN32_IDN) || ((defined(USE_WINDOWS_SSPI) || \
27
defined(USE_WIN32_LDAP)) && defined(UNICODE))
28
29
/*
30
* MultiByte conversions using Windows kernel32 library.
31
*/
32
33
wchar_t
*Curl_convert_UTF8_to_wchar(
const
char
*str_utf8);
34
char
*Curl_convert_wchar_to_UTF8(
const
wchar_t
*str_w);
35
36
#endif
/* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || USE_WIN32_LDAP) && UNICODE) */
37
38
39
#if defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI) || \
40
defined(USE_WIN32_LDAP)
41
42
/*
43
* Macros Curl_convert_UTF8_to_tchar(), Curl_convert_tchar_to_UTF8()
44
* and Curl_unicodefree() main purpose is to minimize the number of
45
* preprocessor conditional directives needed by code using these
46
* to differentiate UNICODE from non-UNICODE builds.
47
*
48
* When building with UNICODE defined, this two macros
49
* Curl_convert_UTF8_to_tchar() and Curl_convert_tchar_to_UTF8()
50
* return a pointer to a newly allocated memory area holding result.
51
* When the result is no longer needed, allocated memory is intended
52
* to be free'ed with Curl_unicodefree().
53
*
54
* When building without UNICODE defined, this macros
55
* Curl_convert_UTF8_to_tchar() and Curl_convert_tchar_to_UTF8()
56
* return the pointer received as argument. Curl_unicodefree() does
57
* no actual free'ing of this pointer it is simply set to NULL.
58
*/
59
60
#ifdef UNICODE
61
62
#define Curl_convert_UTF8_to_tchar(ptr) Curl_convert_UTF8_to_wchar((ptr))
63
#define Curl_convert_tchar_to_UTF8(ptr) Curl_convert_wchar_to_UTF8((ptr))
64
#define Curl_unicodefree(ptr) \
65
do {if((ptr)) {free((ptr)); (ptr) = NULL;}} WHILE_FALSE
66
67
typedef
union
{
68
unsigned
short
*tchar_ptr;
69
const
unsigned
short
*const_tchar_ptr;
70
unsigned
short
*tbyte_ptr;
71
const
unsigned
short
*const_tbyte_ptr;
72
} xcharp_u;
73
74
#else
75
76
#define Curl_convert_UTF8_to_tchar(ptr) (ptr)
77
#define Curl_convert_tchar_to_UTF8(ptr) (ptr)
78
#define Curl_unicodefree(ptr) \
79
do {(ptr) = NULL;} WHILE_FALSE
80
81
typedef
union
{
82
char
*tchar_ptr;
83
const
char
*const_tchar_ptr;
84
unsigned
char
*tbyte_ptr;
85
const
unsigned
char
*const_tbyte_ptr;
86
} xcharp_u;
87
88
#endif
/* UNICODE */
89
90
#endif
/* USE_WIN32_IDN || USE_WINDOWS_SSPI || USE_WIN32_LDAP */
91
92
#endif
/* HEADER_CURL_MULTIBYTE_H */
curl_setup.h
rc_tagdetect_client
Author(s): Monika Florek-Jasinska
, Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:08