1/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2 file Copyright.txt or https://cmake.org/licensing#kwsys for details. */ 3#ifndef @KWSYS_NAMESPACE@_Encoding_h 4#define @KWSYS_NAMESPACE@_Encoding_h 5 6#include <@KWSYS_NAMESPACE@/Configure.h> 7 8#include <wchar.h> 9 10/* Redefine all public interface symbol names to be in the proper 11 namespace. These macros are used internally to kwsys only, and are 12 not visible to user code. Use kwsysHeaderDump.pl to reproduce 13 these macros after making changes to the interface. */ 14#if !defined(KWSYS_NAMESPACE) 15# define kwsys_ns(x) @KWSYS_NAMESPACE@##x 16# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT 17#endif 18#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS 19# define kwsysEncoding kwsys_ns(Encoding) 20# define kwsysEncoding_mbstowcs kwsys_ns(Encoding_mbstowcs) 21# define kwsysEncoding_DupToWide kwsys_ns(Encoding_DupToWide) 22# define kwsysEncoding_wcstombs kwsys_ns(Encoding_wcstombs) 23# define kwsysEncoding_DupToNarrow kwsys_ns(Encoding_DupToNarrow) 24#endif 25 26#if defined(__cplusplus) 27extern "C" { 28#endif 29 30/* Convert a narrow string to a wide string. 31 On Windows, UTF-8 is assumed, and on other platforms, 32 the current locale is assumed. 33 */ 34kwsysEXPORT size_t kwsysEncoding_mbstowcs(wchar_t* dest, const char* src, 35 size_t n); 36 37/* Convert a narrow string to a wide string. 38 This can return NULL if the conversion fails. */ 39kwsysEXPORT wchar_t* kwsysEncoding_DupToWide(const char* src); 40 41/* Convert a wide string to a narrow string. 42 On Windows, UTF-8 is assumed, and on other platforms, 43 the current locale is assumed. */ 44kwsysEXPORT size_t kwsysEncoding_wcstombs(char* dest, const wchar_t* src, 45 size_t n); 46 47/* Convert a wide string to a narrow string. 48 This can return NULL if the conversion fails. */ 49kwsysEXPORT char* kwsysEncoding_DupToNarrow(const wchar_t* str); 50 51#if defined(__cplusplus) 52} /* extern "C" */ 53#endif 54 55/* If we are building a kwsys .c or .cxx file, let it use these macros. 56 Otherwise, undefine them to keep the namespace clean. */ 57#if !defined(KWSYS_NAMESPACE) 58# undef kwsys_ns 59# undef kwsysEXPORT 60# if !defined(KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS 61# undef kwsysEncoding 62# undef kwsysEncoding_mbstowcs 63# undef kwsysEncoding_DupToWide 64# undef kwsysEncoding_wcstombs 65# undef kwsysEncoding_DupToNarrow 66# endif 67#endif 68 69#endif 70