ALib C++ Library
by
Library Version:
2510 R0
Documentation generated by
Loading...
Searching...
No Matches
home
dev
A-Worx
ALib
src
alib
strings
strings.prepro.hpp
Go to the documentation of this file.
1
//==================================================================================================
2
/// \file
3
/// This header-file is part of the \aliblong.
4
///
5
/// \emoji :copyright: 2013-2025 A-Worx GmbH, Germany.
6
/// Published under \ref mainpage_license "Boost Software License".
7
//==================================================================================================
8
#ifndef HPP_ALIB_STRINGS_PP
9
#define HPP_ALIB_STRINGS_PP
10
#pragma once
11
#ifndef INL_ALIB
12
# include "
alib/alib.inl
"
13
#endif
14
15
16
// #################################################################################################
17
// Symbols introduced by module ALib.Strings
18
// #################################################################################################
19
20
// ALIB_DEBUG_STRINGS
21
#if !ALIB_STRINGS
22
# define ALIB_DEBUG_STRINGS 0
23
#elif !defined(ALIB_DEBUG_STRINGS)
24
# define ALIB_DEBUG_STRINGS 0
25
#elif !ALIB_DEBUG && ALIB_DEBUG_STRINGS
26
# undef ALIB_DEBUG_STRINGS
27
# define ALIB_DEBUG_STRINGS 0
28
# pragma message "Symbol ALIB_DEBUG_STRINGS set (from outside!) while ALIB_DEBUG is not. The symbol got disabled."
29
#endif
30
31
#if ALIB_STRINGS
32
33
#if ALIB_DEBUG_STRINGS
34
# define ALIB_STRING_DBG_CHK(instance) { (instance)->dbgCheck(); }
35
#else
36
# define ALIB_STRING_DBG_CHK(instance)
37
#endif
38
39
40
#if !ALIB_CHARACTERS_WIDE
41
# define ALIB_STRINGS_TO_NARROW( src,dest,bufSize ) decltype(src)& dest(src);
42
# define ALIB_STRINGS_TO_NARROW_ARG( src,bufSize ) src;
43
# define ALIB_STRINGS_TO_WIDE( src,dest,bufSize ) alib::strings::TLocalString<wchar,bufSize> dest(src);
44
# define ALIB_STRINGS_TO_WIDE_ARG( src,bufSize ) alib::strings::TLocalString<wchar,bufSize>(src);
45
# define ALIB_STRINGS_FROM_NARROW( src,dest,bufSize ) decltype(src)& dest(src);
46
# define ALIB_STRINGS_FROM_NARROW_ARG( src,bufSize ) src;
47
# define ALIB_STRINGS_FROM_WIDE( src,dest,bufSize ) alib::strings::TLocalString<nchar,bufSize> dest(src);
48
# define ALIB_STRINGS_FROM_WIDE_ARG src,bufSize ) alib::strings::TLocalString<nchar,bufSize>(src);
49
#else
50
# define ALIB_STRINGS_TO_NARROW( src,dest,bufSize ) alib::strings::TLocalString<nchar,bufSize> dest(src);
51
# define ALIB_STRINGS_TO_NARROW_ARG( src,bufSize ) alib::strings::TLocalString<nchar,bufSize>(src);
52
# define ALIB_STRINGS_TO_WIDE( src,dest,bufSize ) decltype(src)& dest= src;
53
# define ALIB_STRINGS_TO_WIDE_ARG( src,bufSize ) src;
54
# define ALIB_STRINGS_FROM_NARROW( src,dest,bufSize ) alib::strings::TLocalString<wchar,bufSize> dest(src);
55
# define ALIB_STRINGS_FROM_NARROW_ARG( src,bufSize ) alib::strings::TLocalString<wchar,bufSize>(src);
56
# define ALIB_STRINGS_FROM_WIDE( src,dest,bufSize ) decltype(src)& dest= src;
57
# define ALIB_STRINGS_FROM_WIDE_ARG( src,bufSize ) src;
58
#endif
59
60
#define ALIB_STRINGS_APPENDABLE_TYPE(TYPE) \
61
namespace alib::strings { \
62
template<> struct AppendableTraits<TYPE, alib::character, alib::lang::HeapAllocator> {\
63
ALIB_DLL void operator()(TAString<alib::character, alib::lang::HeapAllocator>&, const TYPE& ); \
64
};}
65
66
#define ALIB_STRINGS_APPENDABLE_TYPE_N(TYPE) \
67
namespace alib::strings { \
68
template<> struct AppendableTraits<TYPE, alib::nchar, alib::lang::HeapAllocator> {\
69
ALIB_DLL void operator()( TAString<alib::nchar, alib::lang::HeapAllocator>&, const TYPE& ); \
70
};}
71
72
#define ALIB_STRINGS_APPENDABLE_TYPE_W(TYPE) \
73
namespace alib::strings { \
74
template<> struct AppendableTraits<TYPE, alib::wchar, alib::lang::HeapAllocator> {\
75
ALIB_DLL void operator()( TAString<alib::wchar, alib::lang::HeapAllocator>&, const TYPE&); \
76
};}
77
78
#define ALIB_STRINGS_APPENDABLE_TYPE_DEF(TYPE, IMPL) \
79
void alib::strings::AppendableTraits<TYPE,alib::character, alib::lang::HeapAllocator> \
80
::operator()( TAString<alib::character, alib::lang::HeapAllocator>& target, const TYPE& src){IMPL}
81
82
#define ALIB_STRINGS_APPENDABLE_TYPE_DEF_N(TYPE, IMPL) \
83
void alib::strings::AppendableTraits<TYPE,alib::nchar, alib::lang::HeapAllocator> \
84
::operator()( TAString<alib::nchar, alib::lang::HeapAllocator>& target, const TYPE& src) {IMPL}
85
86
#define ALIB_STRINGS_APPENDABLE_TYPE_DEF_W(TYPE, IMPL) \
87
void alib::strings::AppendableTraits<TYPE,alib::wchar, alib::lang::HeapAllocator> \
88
::operator()( TAString<alib::wchar, alib::lang::HeapAllocator>& target, const TYPE& src) {IMPL}
89
90
91
#define ALIB_STRINGS_APPENDABLE_TYPE_INLINE(TYPE, IMPL) \
92
namespace alib::strings { \
93
template<> struct AppendableTraits<TYPE,alib::character, alib::lang::HeapAllocator> {\
94
void operator()(TAString<alib::character, lang::HeapAllocator>& target, const TYPE& src) {IMPL}\
95
};}
96
97
#define ALIB_STRINGS_APPENDABLE_TYPE_INLINE_N(TYPE, IMPL) \
98
namespace alib::strings { \
99
template<> struct AppendableTraits<TYPE,alib::nchar, alib::lang::HeapAllocator> {\
100
void operator()(TAString<alib::nchar, alib::lang::HeapAllocator>& target, const TYPE& src){IMPL}\
101
};}
102
103
#define ALIB_STRINGS_APPENDABLE_TYPE_INLINE_W(TYPE, IMPL) \
104
namespace alib::strings { \
105
template<> struct AppendableTraits<TYPE,alib::wchar, alib::lang::HeapAllocator> {\
106
void operator()(TAString<alib::wchar, alib::lang::HeapAllocator>& target, const TYPE& src){IMPL}\
107
};}
108
109
#define ALIB_STRING_RESETTER(astring) \
110
alib::strings::TStringLengthResetter< \
111
std::remove_reference_t<decltype(astring)>::value_type, \
112
std::remove_reference_t<decltype(astring)>::AllocatorType > \
113
ALIB_IDENTIFIER(astring)(astring)
114
115
116
// #################################################################################################
117
// Symbols introduced by module ALib.Strings.StdIOStream
118
// #################################################################################################
119
120
#define ALIB_STRINGS_SUPPRESS_STD_OSTREAM_OPERATOR(TYPE) \
121
namespace alib::strings::compatibility::std { \
122
template<> struct SuppressStdOStreamOpTraits<TYPE> : ::std::true_type {}; }
123
124
125
126
#endif
127
#endif
// HPP_ALIB_STRINGS_PP
128
129
alib.inl