29
29
// Localized messages type-safe printing facility.
30
30
31
31
#include " firebird.h"
32
+ #include < algorithm>
32
33
#include " SafeArg.h"
33
34
34
35
namespace MsgFormat
35
36
{
36
37
37
38
// This is just a silly convenience in case all arguments are of type int.
38
- SafeArg::SafeArg (const int val[], FB_SIZE_T v_size)
39
+ SafeArg::SafeArg (const int val[], FB_SIZE_T v_size) noexcept
39
40
: m_extras(0 )
40
41
{
41
- if (v_size > SAFEARG_MAX_ARG)
42
- v_size = SAFEARG_MAX_ARG; // Simply truncate.
43
-
44
- m_count = v_size;
42
+ // Simply truncate
43
+ m_count = std::min (v_size, SAFEARG_MAX_ARG);
45
44
46
45
for (FB_SIZE_T a_count = 0 ; a_count < m_count; ++a_count)
47
46
{
@@ -51,7 +50,7 @@ SafeArg::SafeArg(const int val[], FB_SIZE_T v_size)
51
50
}
52
51
53
52
// Here follows the list of overloads to insert the basic data types.
54
- SafeArg& SafeArg::operator <<(char c)
53
+ SafeArg& SafeArg::operator <<(char c) noexcept
55
54
{
56
55
if (m_count < SAFEARG_MAX_ARG)
57
56
{
@@ -62,7 +61,7 @@ SafeArg& SafeArg::operator<<(char c)
62
61
return *this ;
63
62
}
64
63
65
- SafeArg& SafeArg::operator <<(unsigned char c)
64
+ SafeArg& SafeArg::operator <<(unsigned char c) noexcept
66
65
{
67
66
if (m_count < SAFEARG_MAX_ARG)
68
67
{
@@ -74,7 +73,7 @@ SafeArg& SafeArg::operator<<(unsigned char c)
74
73
}
75
74
76
75
/*
77
- SafeArg& SafeArg::operator<<(_int16 c)
76
+ SafeArg& SafeArg::operator<<(_int16 c) noexcept
78
77
{
79
78
if (m_count < SAFEARG_MAX_ARG)
80
79
{
@@ -86,7 +85,7 @@ SafeArg& SafeArg::operator<<(_int16 c)
86
85
}
87
86
*/
88
87
89
- SafeArg& SafeArg::operator <<(short c)
88
+ SafeArg& SafeArg::operator <<(short c) noexcept
90
89
{
91
90
if (m_count < SAFEARG_MAX_ARG)
92
91
{
@@ -97,7 +96,7 @@ SafeArg& SafeArg::operator<<(short c)
97
96
return *this ;
98
97
}
99
98
100
- SafeArg& SafeArg::operator <<(unsigned short c)
99
+ SafeArg& SafeArg::operator <<(unsigned short c) noexcept
101
100
{
102
101
if (m_count < SAFEARG_MAX_ARG)
103
102
{
@@ -109,7 +108,7 @@ SafeArg& SafeArg::operator<<(unsigned short c)
109
108
}
110
109
111
110
/*
112
- SafeArg& SafeArg::operator<<(_int32 c)
111
+ SafeArg& SafeArg::operator<<(_int32 c) noexcept
113
112
{
114
113
if (m_count < SAFEARG_MAX_ARG)
115
114
{
@@ -121,7 +120,7 @@ SafeArg& SafeArg::operator<<(_int32 c)
121
120
}
122
121
*/
123
122
124
- SafeArg& SafeArg::operator <<(int c)
123
+ SafeArg& SafeArg::operator <<(int c) noexcept
125
124
{
126
125
if (m_count < SAFEARG_MAX_ARG)
127
126
{
@@ -132,7 +131,7 @@ SafeArg& SafeArg::operator<<(int c)
132
131
return *this ;
133
132
}
134
133
135
- SafeArg& SafeArg::operator <<(unsigned int c)
134
+ SafeArg& SafeArg::operator <<(unsigned int c) noexcept
136
135
{
137
136
if (m_count < SAFEARG_MAX_ARG)
138
137
{
@@ -143,7 +142,7 @@ SafeArg& SafeArg::operator<<(unsigned int c)
143
142
return *this ;
144
143
}
145
144
146
- SafeArg& SafeArg::operator <<(long int c)
145
+ SafeArg& SafeArg::operator <<(long int c) noexcept
147
146
{
148
147
if (m_count < SAFEARG_MAX_ARG)
149
148
{
@@ -154,7 +153,7 @@ SafeArg& SafeArg::operator<<(long int c)
154
153
return *this ;
155
154
}
156
155
157
- SafeArg& SafeArg::operator <<(unsigned long int c)
156
+ SafeArg& SafeArg::operator <<(unsigned long int c) noexcept
158
157
{
159
158
if (m_count < SAFEARG_MAX_ARG)
160
159
{
@@ -165,7 +164,7 @@ SafeArg& SafeArg::operator<<(unsigned long int c)
165
164
return *this ;
166
165
}
167
166
168
- SafeArg& SafeArg::operator <<(SINT64 c)
167
+ SafeArg& SafeArg::operator <<(SINT64 c) noexcept
169
168
{
170
169
if (m_count < SAFEARG_MAX_ARG)
171
170
{
@@ -176,7 +175,7 @@ SafeArg& SafeArg::operator<<(SINT64 c)
176
175
return *this ;
177
176
}
178
177
179
- SafeArg& SafeArg::operator <<(FB_UINT64 c)
178
+ SafeArg& SafeArg::operator <<(FB_UINT64 c) noexcept
180
179
{
181
180
if (m_count < SAFEARG_MAX_ARG)
182
181
{
@@ -189,7 +188,7 @@ SafeArg& SafeArg::operator<<(FB_UINT64 c)
189
188
190
189
191
190
/*
192
- SafeArg& SafeArg::operator<<(long c)
191
+ SafeArg& SafeArg::operator<<(long c) noexcept
193
192
{
194
193
if (m_count < SAFEARG_MAX_ARG)
195
194
{
@@ -201,7 +200,7 @@ SafeArg& SafeArg::operator<<(long c)
201
200
}
202
201
*/
203
202
204
- SafeArg& SafeArg::operator <<(SINT128 c)
203
+ SafeArg& SafeArg::operator <<(SINT128 c) noexcept
205
204
{
206
205
if (m_count < SAFEARG_MAX_ARG)
207
206
{
@@ -212,7 +211,7 @@ SafeArg& SafeArg::operator<<(SINT128 c)
212
211
return *this ;
213
212
}
214
213
215
- SafeArg& SafeArg::operator <<(double c)
214
+ SafeArg& SafeArg::operator <<(double c) noexcept
216
215
{
217
216
if (m_count < SAFEARG_MAX_ARG)
218
217
{
@@ -223,7 +222,7 @@ SafeArg& SafeArg::operator<<(double c)
223
222
return *this ;
224
223
}
225
224
226
- SafeArg& SafeArg::operator <<(const char * c)
225
+ SafeArg& SafeArg::operator <<(const char * c) noexcept
227
226
{
228
227
if (m_count < SAFEARG_MAX_ARG)
229
228
{
@@ -234,7 +233,7 @@ SafeArg& SafeArg::operator<<(const char* c)
234
233
return *this ;
235
234
}
236
235
237
- SafeArg& SafeArg::operator <<(const unsigned char * c)
236
+ SafeArg& SafeArg::operator <<(const unsigned char * c) noexcept
238
237
{
239
238
if (m_count < SAFEARG_MAX_ARG)
240
239
{
@@ -245,7 +244,7 @@ SafeArg& SafeArg::operator<<(const unsigned char* c)
245
244
return *this ;
246
245
}
247
246
248
- SafeArg& SafeArg::operator <<(void * c)
247
+ SafeArg& SafeArg::operator <<(void * c) noexcept
249
248
{
250
249
if (m_count < SAFEARG_MAX_ARG)
251
250
{
@@ -262,7 +261,7 @@ SafeArg& SafeArg::operator<<(void* c)
262
261
// converted to null pointer and void* to TEXT*. Supposedly, the caller has
263
262
// information on the real types of the values. This can be done with a loop
264
263
// using getCount() and getCell() and looking at the safe_cell's type data member.
265
- void SafeArg::dump (const TEXT* target[], FB_SIZE_T v_size) const
264
+ void SafeArg::dump (const TEXT* target[], FB_SIZE_T v_size) const noexcept
266
265
{
267
266
for (FB_SIZE_T i = 0 ; i < v_size; ++i)
268
267
{
@@ -307,9 +306,9 @@ void SafeArg::dump(const TEXT* target[], FB_SIZE_T v_size) const
307
306
308
307
// Get one specific cell. If out of range, a cell with invalid type (at_none)
309
308
// is returned.
310
- const safe_cell& SafeArg::getCell (FB_SIZE_T index) const
309
+ const safe_cell& SafeArg::getCell (FB_SIZE_T index) const noexcept
311
310
{
312
- static safe_cell aux_cell = {safe_cell::at_none, {0 }};
311
+ static constexpr safe_cell aux_cell = {safe_cell::at_none, {0 }};
313
312
314
313
if (index < m_count)
315
314
return m_arguments[index];
0 commit comments