61template<
typename TStringSource,
typename TChar>
88 const TChar*
Buffer(
const TStringSource& src );
136template<
typename TStringSource,
typename TChar>
155 const TChar*
Buffer(
const TStringSource& src );
192template<
typename T,
typename TChar>
230template<
typename T,
typename TChar>
259template <
typename T,
typename TChar>
270template <
typename T,
typename TChar>
284template <
typename T,
typename TChar>
287 && !std::is_const_v<T>;
296template <
typename T,
typename TChar>
307template <
typename T,
typename TChar>
318template <
typename T,
typename TChar>
329template <
typename T,
typename TChar>
342template <
typename T,
typename TChar>
345 && !std::is_const_v<T>;
353template <
typename T,
typename TChar>
362template <
typename T,
typename TChar>
376template<
size_t TCapacity,
typename TChar>
380 static constexpr const TChar*
Buffer( TChar
const (&src) [TCapacity] ) {
return src; }
381 static constexpr integer Length( TChar
const (& ) [TCapacity] ) {
return TCapacity -1; }
384template<
size_t TCapacity,
typename TChar>
388 static constexpr const TChar*
Buffer( TChar
const (&src) [TCapacity] ) {
return src; }
389 static constexpr integer Length( TChar
const (& ) [TCapacity] ) {
return TCapacity -1; }
393template<
size_t TCapacity>
397 static constexpr const nchar*
Buffer(
char8_t const (&src) [TCapacity] ) {
return reinterpret_cast<const nchar*
>(src); }
398 static constexpr integer Length(
char8_t const (& ) [TCapacity] ) {
return TCapacity -1; }
401template<
size_t TCapacity>
405 static constexpr const nchar*
Buffer(
char8_t const (&src) [TCapacity] ) {
return reinterpret_cast<const nchar*
>(src); }
406 static constexpr integer Length(
char8_t const (& ) [TCapacity] ) {
return TCapacity -1; }
411template<
typename TChar>
struct ArrayTraits<const TChar*, TChar>
415 static constexpr const TChar* Buffer(
const TChar*
const & src ) {
return src; }
416 static constexpr integer Length(
const TChar*
const & src ) {
return src ?
integer( std::char_traits<TChar>::length(src) ) : 0; }
417 static constexpr const TChar* Construct(
const TChar* array,
integer ) {
return array; }
420template<
typename TChar>
struct ZTArrayTraits<const TChar*, TChar>
424 static constexpr const TChar* Buffer(
const TChar*
const & src ) {
return src; }
425 static constexpr integer Length(
const TChar*
const & src ) {
return src ?
integer( std::char_traits<TChar>::length(src) ) : 0; }
426 static constexpr const TChar* Construct(
const TChar* array,
integer ) {
return array; }
434 static const nchar* Buffer(
const char8_t*
const & src ) {
return reinterpret_cast<const nchar*
>(src); }
435 static constexpr integer Length(
const char8_t*
const & src ) {
return src ?
integer( std::char_traits<char8_t>::length(src) ) : 0; }
436 static const char8_t* Construct(
const nchar* array,
integer ) {
return reinterpret_cast<const char8_t*
>(array); }
443 static const nchar* Buffer(
const char8_t*
const & src ) {
return reinterpret_cast<const nchar*
>(src); }
444 static constexpr integer Length(
const char8_t*
const & src ) {
return src ?
integer( std::char_traits<char8_t>::length(src) ) : 0; }
445 static const char8_t* Construct(
const nchar* array,
integer ) {
return reinterpret_cast<const char8_t*
>(array); }
449template<
typename TChar>
struct ArrayTraits<TChar*, TChar>
453 static constexpr const TChar* Buffer( TChar*
const & src ) {
return src; }
454 static constexpr integer Length( TChar*
const & src ) {
return src ?
integer( std::char_traits<TChar>::length(src) ) : 0; }
455 static constexpr TChar* Construct(
const TChar* array,
integer ) {
return const_cast<TChar*
>( array ); }
462 static constexpr const TChar* Buffer( TChar*
const & src ) {
return src; }
463 static constexpr integer Length( TChar*
const & src ) {
return src ?
integer( std::char_traits<TChar>::length(src) ) : 0; }
464 static constexpr TChar* Construct(
const TChar* array,
integer ) {
return const_cast<TChar*
>( array ); }
472 static const nchar* Buffer(
char8_t*
const & src ) {
return reinterpret_cast<nchar*
>(src); }
473 static constexpr integer Length(
char8_t*
const & src ) {
return src ?
integer( std::char_traits<char8_t>::length(src) ) : 0; }
474 static char8_t* Construct(
const nchar* array,
integer ) {
return const_cast<char8_t*
>(
reinterpret_cast<const char8_t*
>(array) ); }
481 static const nchar* Buffer(
char8_t*
const & src ) {
return reinterpret_cast<nchar*
>(src); }
482 static constexpr integer Length(
char8_t*
const & src ) {
return src ?
integer( std::char_traits<char8_t>::length(src) ) : 0; }
483 static char8_t* Construct(
const nchar* array,
integer ) {
return const_cast<char8_t*
>(
reinterpret_cast<const char8_t*
>(array) ); }
500template<
typename TChar>
502 std::conditional_t<std::same_as<TChar, wchar>,
nchar,
void > >;
519template<
size_t TSizeOf>
521 std::conditional_t<TSizeOf ==
sizeof(
wchar),
wchar,
522 std::conditional_t<TSizeOf ==
sizeof(
xchar),
xchar,
void > > >;
535 || std::is_same_v<T,wchar>
536 || std::is_same_v<T,xchar>;
548 if constexpr (!std::is_array_v<T>)
551 using TChar= std::remove_cv_t<std::remove_pointer_t<std::decay_t<T>>>;
553 return std::extent<T>::value - 1;
554 return std::extent<T>::value;
#define ALIB_WARNINGS_RESTORE
#define ALIB_WARNINGS_IGNORE_DOCS
integer Length(const TChar *cstring)
std::conditional_t< TSizeOf==sizeof(nchar), nchar, std::conditional_t< TSizeOf==sizeof(wchar), wchar, std::conditional_t< TSizeOf==sizeof(xchar), xchar, void > > > TypeBySize
std::conditional_t< ArrayTraits< T, nchar >::Access !=Policy::NONE, nchar, std::conditional_t< ArrayTraits< T, wchar >::Access !=Policy::NONE, wchar, std::conditional_t< ArrayTraits< T, xchar >::Access !=Policy::NONE, xchar, void > > > Type
std::conditional_t< std::same_as< TChar, nchar >, wchar, std::conditional_t< std::same_as< TChar, wchar >, nchar, void > > ComplementType
std::conditional_t< ZTArrayTraits< T, nchar >::Access !=Policy::NONE, nchar, std::conditional_t< ZTArrayTraits< T, wchar >::Access !=Policy::NONE, wchar, std::conditional_t< ZTArrayTraits< T, xchar >::Access !=Policy::NONE, xchar, void > > > ZTType
constexpr integer ArrayLength()
lang::integer integer
Type alias in namespace alib.
static constexpr Policy Access
static integer Length(const TStringSource &src)
static TStringSource Construct(const TChar *array, integer length)
static constexpr Policy Construction
static const TChar * Buffer(const TStringSource &src)
static constexpr Policy Construction
static constexpr Policy Access
static const TChar * Buffer(const TStringSource &src)
static TStringSource Construct(const TChar *array, integer length)
static integer Length(const TStringSource &src)