File Index Symbol Index

//
// corecrt_wstring.h
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// This file declares the wide character (wchar_t) string functionality, shared
// by <string.h> and <wchar.h>.
//
#pragma once
#include <corecrt.h>
#include <vcruntime_string.h>
#ifndef __midl
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Secure Alternatives
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#if __STDC_WANT_SECURE_LIB__
_Check_return_wat_
);
_Check_return_wat_
);
_Check_return_wat_
);
_Check_return_wat_
);
_Check_return_
);
#endif // __STDC_WANT_SECURE_LIB__
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Wide-Character <string.h> Functions
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#if defined _DEBUG && defined _CRTDBG_MAP_ALLOC
#pragma push_macro("_wcsdup")
#undef _wcsdup #endif
_Check_return_
);
#if defined _DEBUG && defined _CRTDBG_MAP_ALLOC
#pragma pop_macro("_wcsdup") #endif
#ifndef RC_INVOKED
#pragma warning(push) #pragma warning(pop)
#endif
_Check_return_
); #pragma warning(push) #pragma warning(pop)
_Check_return_
);
_Check_return_
);
_Check_return_
_When_( _MaxCount > _String_length_(_Source), _Post_satisfies_(return == _String_length_(_Source)) )
_When_( _MaxCount <= _String_length_(_Source), _Post_satisfies_(return == _MaxCount) )
);
#if __STDC_WANT_SECURE_LIB__ && !defined(__midl)
_Check_return_
_When_( _MaxCount > _String_length_(_Source), _Post_satisfies_(return == _String_length_(_Source)) )
_When_( _MaxCount <= _String_length_(_Source), _Post_satisfies_(return == _MaxCount) )
) {
return
(
_Source
==
0
) ?
0
:
wcsnlen
(
_Source
,
_MaxCount
); }
#endif // __STDC_WANT_SECURE_LIB__ && !defined(__midl)
_Check_return_
);
_Check_return_
);
_Check_return_
); );
#if !defined RC_INVOKED && !defined __midl
#if defined _CRT_NON_CONFORMING_WCSTOK
#define _WCSTOK_DEPRECATED _CRT_INSECURE_DEPRECATE(wcstok_s) #else
#define _WCSTOK_DEPRECATED _CRT_DEPRECATE_TEXT( \
"wcstok has been changed to conform with the ISO C standard, " \
"adding an extra context parameter. To use the legacy Microsoft " \
"wcstok, define _CRT_NON_CONFORMING_WCSTOK.") #endif
) {
return
wcstok
(
_String
,
_Delimiter
,
0
); }
#if defined _CRT_NON_CONFORMING_WCSTOK && !defined __cplusplus
#define wcstok _wcstok #endif
#if defined __cplusplus && !defined _CRT_NO_INLINE_DEPRECATED_WCSTOK
)
throw
() {
return
wcstok
(
_String
,
_Delimiter
,
0
); }
#endif
#endif // !defined RC_INVOKED && !defined __midl
_Ret_z_
);
_Check_return_wat_
);
_Ret_z_
_Success_(return != 0)
); ); ); ); ); ); ); ); ); );
_Check_return_wat_
);
_Check_return_wat_
);
_Check_return_wat_
);
_Success_(return < _MaxCount)
_Check_return_opt_
);
_Success_(return < _MaxCount)
_Check_return_opt_
);
_Check_return_
);
_Check_return_
);
_Check_return_
);
_Check_return_
);
_Check_return_
);
_Check_return_
);
_Check_return_
);
_Check_return_
);
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Inline C++ Overloads
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#ifdef __cplusplus
extern
"C++"
{
_Check_return_
_When_(return != NULL, _Ret_range_(_String, _String+_String_length_(_String)-1))
{
return
const_cast
<
wchar_t
*>(
wcschr
(
static_cast
<
wchar_t
const
*>(
_String
),
_C
)); }
_Check_return_
{
return
const_cast
<
wchar_t
*>(
wcspbrk
(
static_cast
<
wchar_t
const
*>(
_String
),
_Control
)); }
_Check_return_
{
return
const_cast
<
wchar_t
*>(
wcsrchr
(
static_cast
<
wchar_t
const
*>(
_String
),
_C
)); }
_Check_return_ _Ret_maybenull_
_When_(return != NULL, _Ret_range_(_String, _String+_String_length_(_String)-1))
{
return
const_cast
<
wchar_t
*>(
wcsstr
(
static_cast
<
wchar_t
const
*>(
_String
),
_SubStr
)); } }
#endif // __cplusplus
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Non-Standard Names
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#if _CRT_INTERNAL_NONSTDC_NAMES
#if defined _DEBUG && defined _CRTDBG_MAP_ALLOC
#pragma push_macro("wcsdup")
#undef wcsdup #endif
);
#if defined _DEBUG && defined _CRTDBG_MAP_ALLOC
#pragma pop_macro("wcsdup") #endif
// Declarations of functions defined in oldnames.lib:
#define wcswcs wcsstr
); );
_Ret_z_
);
_Ret_z_
);
_Ret_z_
);
_Ret_z_
);
_Ret_z_
); );
#endif // _CRT_INTERNAL_NONSTDC_NAMES
#endif // !__midl