| 1117 /* ------------------------------------------------------------------------- * |
1144 /* ------------------------------------------------------------------------- * |
| 1118 * string to number conversion functions * |
1145 * string to number conversion functions * |
| 1119 * ------------------------------------------------------------------------- */ |
1146 * ------------------------------------------------------------------------- */ |
| 1120 |
1147 |
| 1121 /** |
1148 /** |
| 1122 * @copydoc cx_strtouz_lc() |
1149 * Converts a string to a number. |
| |
1150 * |
| |
1151 * The function returns non-zero when conversion is not possible. |
| |
1152 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1153 * It sets errno to ERANGE when the target datatype is too small. |
| |
1154 * |
| |
1155 * @param str the string to convert |
| |
1156 * @param output a pointer to the integer variable where the result shall be stored |
| |
1157 * @param base 2, 8, 10, or 16 |
| |
1158 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1159 * @retval zero success |
| |
1160 * @retval non-zero conversion was not possible |
| 1123 */ |
1161 */ |
| 1124 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1162 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1125 int cx_strtos_lc(cxstring str, short *output, int base, const char *groupsep); |
1163 int cx_strtos_lc_(cxstring str, short *output, int base, const char *groupsep); |
| 1126 /** |
1164 |
| 1127 * @copydoc cx_strtouz_lc() |
1165 /** |
| |
1166 * Converts a string to a number. |
| |
1167 * |
| |
1168 * The function returns non-zero when conversion is not possible. |
| |
1169 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1170 * It sets errno to ERANGE when the target datatype is too small. |
| |
1171 * |
| |
1172 * @param str the string to convert |
| |
1173 * @param output a pointer to the integer variable where the result shall be stored |
| |
1174 * @param base 2, 8, 10, or 16 |
| |
1175 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1176 * @retval zero success |
| |
1177 * @retval non-zero conversion was not possible |
| 1128 */ |
1178 */ |
| 1129 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1179 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1130 int cx_strtoi_lc(cxstring str, int *output, int base, const char *groupsep); |
1180 int cx_strtoi_lc_(cxstring str, int *output, int base, const char *groupsep); |
| 1131 /** |
1181 |
| 1132 * @copydoc cx_strtouz_lc() |
1182 /** |
| |
1183 * Converts a string to a number. |
| |
1184 * |
| |
1185 * The function returns non-zero when conversion is not possible. |
| |
1186 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1187 * It sets errno to ERANGE when the target datatype is too small. |
| |
1188 * |
| |
1189 * @param str the string to convert |
| |
1190 * @param output a pointer to the integer variable where the result shall be stored |
| |
1191 * @param base 2, 8, 10, or 16 |
| |
1192 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1193 * @retval zero success |
| |
1194 * @retval non-zero conversion was not possible |
| 1133 */ |
1195 */ |
| 1134 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1196 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1135 int cx_strtol_lc(cxstring str, long *output, int base, const char *groupsep); |
1197 int cx_strtol_lc_(cxstring str, long *output, int base, const char *groupsep); |
| 1136 /** |
1198 |
| 1137 * @copydoc cx_strtouz_lc() |
1199 /** |
| |
1200 * Converts a string to a number. |
| |
1201 * |
| |
1202 * The function returns non-zero when conversion is not possible. |
| |
1203 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1204 * It sets errno to ERANGE when the target datatype is too small. |
| |
1205 * |
| |
1206 * @param str the string to convert |
| |
1207 * @param output a pointer to the integer variable where the result shall be stored |
| |
1208 * @param base 2, 8, 10, or 16 |
| |
1209 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1210 * @retval zero success |
| |
1211 * @retval non-zero conversion was not possible |
| 1138 */ |
1212 */ |
| 1139 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1213 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1140 int cx_strtoll_lc(cxstring str, long long *output, int base, const char *groupsep); |
1214 int cx_strtoll_lc_(cxstring str, long long *output, int base, const char *groupsep); |
| 1141 /** |
1215 |
| 1142 * @copydoc cx_strtouz_lc() |
1216 /** |
| |
1217 * Converts a string to a number. |
| |
1218 * |
| |
1219 * The function returns non-zero when conversion is not possible. |
| |
1220 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1221 * It sets errno to ERANGE when the target datatype is too small. |
| |
1222 * |
| |
1223 * @param str the string to convert |
| |
1224 * @param output a pointer to the integer variable where the result shall be stored |
| |
1225 * @param base 2, 8, 10, or 16 |
| |
1226 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1227 * @retval zero success |
| |
1228 * @retval non-zero conversion was not possible |
| 1143 */ |
1229 */ |
| 1144 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1230 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1145 int cx_strtoi8_lc(cxstring str, int8_t *output, int base, const char *groupsep); |
1231 int cx_strtoi8_lc_(cxstring str, int8_t *output, int base, const char *groupsep); |
| 1146 /** |
1232 |
| 1147 * @copydoc cx_strtouz_lc() |
1233 /** |
| |
1234 * Converts a string to a number. |
| |
1235 * |
| |
1236 * The function returns non-zero when conversion is not possible. |
| |
1237 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1238 * It sets errno to ERANGE when the target datatype is too small. |
| |
1239 * |
| |
1240 * @param str the string to convert |
| |
1241 * @param output a pointer to the integer variable where the result shall be stored |
| |
1242 * @param base 2, 8, 10, or 16 |
| |
1243 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1244 * @retval zero success |
| |
1245 * @retval non-zero conversion was not possible |
| 1148 */ |
1246 */ |
| 1149 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1247 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1150 int cx_strtoi16_lc(cxstring str, int16_t *output, int base, const char *groupsep); |
1248 int cx_strtoi16_lc_(cxstring str, int16_t *output, int base, const char *groupsep); |
| 1151 /** |
1249 |
| 1152 * @copydoc cx_strtouz_lc() |
1250 /** |
| |
1251 * Converts a string to a number. |
| |
1252 * |
| |
1253 * The function returns non-zero when conversion is not possible. |
| |
1254 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1255 * It sets errno to ERANGE when the target datatype is too small. |
| |
1256 * |
| |
1257 * @param str the string to convert |
| |
1258 * @param output a pointer to the integer variable where the result shall be stored |
| |
1259 * @param base 2, 8, 10, or 16 |
| |
1260 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1261 * @retval zero success |
| |
1262 * @retval non-zero conversion was not possible |
| 1153 */ |
1263 */ |
| 1154 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1264 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1155 int cx_strtoi32_lc(cxstring str, int32_t *output, int base, const char *groupsep); |
1265 int cx_strtoi32_lc_(cxstring str, int32_t *output, int base, const char *groupsep); |
| 1156 /** |
1266 |
| 1157 * @copydoc cx_strtouz_lc() |
1267 /** |
| |
1268 * Converts a string to a number. |
| |
1269 * |
| |
1270 * The function returns non-zero when conversion is not possible. |
| |
1271 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1272 * It sets errno to ERANGE when the target datatype is too small. |
| |
1273 * |
| |
1274 * @param str the string to convert |
| |
1275 * @param output a pointer to the integer variable where the result shall be stored |
| |
1276 * @param base 2, 8, 10, or 16 |
| |
1277 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1278 * @retval zero success |
| |
1279 * @retval non-zero conversion was not possible |
| 1158 */ |
1280 */ |
| 1159 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1281 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1160 int cx_strtoi64_lc(cxstring str, int64_t *output, int base, const char *groupsep); |
1282 int cx_strtoi64_lc_(cxstring str, int64_t *output, int base, const char *groupsep); |
| 1161 /** |
1283 |
| 1162 * @copydoc cx_strtouz_lc() |
1284 /** |
| |
1285 * Converts a string to a number. |
| |
1286 * |
| |
1287 * The function returns non-zero when conversion is not possible. |
| |
1288 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1289 * It sets errno to ERANGE when the target datatype is too small. |
| |
1290 * |
| |
1291 * @param str the string to convert |
| |
1292 * @param output a pointer to the integer variable where the result shall be stored |
| |
1293 * @param base 2, 8, 10, or 16 |
| |
1294 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1295 * @retval zero success |
| |
1296 * @retval non-zero conversion was not possible |
| 1163 */ |
1297 */ |
| 1164 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1298 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1165 int cx_strtoz_lc(cxstring str, ssize_t *output, int base, const char *groupsep); |
1299 int cx_strtoz_lc_(cxstring str, ssize_t *output, int base, const char *groupsep); |
| 1166 /** |
1300 |
| 1167 * @copydoc cx_strtouz_lc() |
1301 /** |
| |
1302 * Converts a string to a number. |
| |
1303 * |
| |
1304 * The function returns non-zero when conversion is not possible. |
| |
1305 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1306 * It sets errno to ERANGE when the target datatype is too small. |
| |
1307 * |
| |
1308 * @param str the string to convert |
| |
1309 * @param output a pointer to the integer variable where the result shall be stored |
| |
1310 * @param base 2, 8, 10, or 16 |
| |
1311 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1312 * @retval zero success |
| |
1313 * @retval non-zero conversion was not possible |
| 1168 */ |
1314 */ |
| 1169 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1315 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1170 int cx_strtous_lc(cxstring str, unsigned short *output, int base, const char *groupsep); |
1316 int cx_strtous_lc_(cxstring str, unsigned short *output, int base, const char *groupsep); |
| 1171 /** |
1317 |
| 1172 * @copydoc cx_strtouz_lc() |
1318 /** |
| |
1319 * Converts a string to a number. |
| |
1320 * |
| |
1321 * The function returns non-zero when conversion is not possible. |
| |
1322 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1323 * It sets errno to ERANGE when the target datatype is too small. |
| |
1324 * |
| |
1325 * @param str the string to convert |
| |
1326 * @param output a pointer to the integer variable where the result shall be stored |
| |
1327 * @param base 2, 8, 10, or 16 |
| |
1328 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1329 * @retval zero success |
| |
1330 * @retval non-zero conversion was not possible |
| 1173 */ |
1331 */ |
| 1174 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1332 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1175 int cx_strtou_lc(cxstring str, unsigned int *output, int base, const char *groupsep); |
1333 int cx_strtou_lc_(cxstring str, unsigned int *output, int base, const char *groupsep); |
| 1176 /** |
1334 |
| 1177 * @copydoc cx_strtouz_lc() |
1335 /** |
| |
1336 * Converts a string to a number. |
| |
1337 * |
| |
1338 * The function returns non-zero when conversion is not possible. |
| |
1339 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1340 * It sets errno to ERANGE when the target datatype is too small. |
| |
1341 * |
| |
1342 * @param str the string to convert |
| |
1343 * @param output a pointer to the integer variable where the result shall be stored |
| |
1344 * @param base 2, 8, 10, or 16 |
| |
1345 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1346 * @retval zero success |
| |
1347 * @retval non-zero conversion was not possible |
| 1178 */ |
1348 */ |
| 1179 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1349 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1180 int cx_strtoul_lc(cxstring str, unsigned long *output, int base, const char *groupsep); |
1350 int cx_strtoul_lc_(cxstring str, unsigned long *output, int base, const char *groupsep); |
| 1181 /** |
1351 |
| 1182 * @copydoc cx_strtouz_lc() |
1352 /** |
| |
1353 * Converts a string to a number. |
| |
1354 * |
| |
1355 * The function returns non-zero when conversion is not possible. |
| |
1356 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1357 * It sets errno to ERANGE when the target datatype is too small. |
| |
1358 * |
| |
1359 * @param str the string to convert |
| |
1360 * @param output a pointer to the integer variable where the result shall be stored |
| |
1361 * @param base 2, 8, 10, or 16 |
| |
1362 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1363 * @retval zero success |
| |
1364 * @retval non-zero conversion was not possible |
| 1183 */ |
1365 */ |
| 1184 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1366 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1185 int cx_strtoull_lc(cxstring str, unsigned long long *output, int base, const char *groupsep); |
1367 int cx_strtoull_lc_(cxstring str, unsigned long long *output, int base, const char *groupsep); |
| 1186 /** |
1368 |
| 1187 * @copydoc cx_strtouz_lc() |
1369 /** |
| |
1370 * Converts a string to a number. |
| |
1371 * |
| |
1372 * The function returns non-zero when conversion is not possible. |
| |
1373 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1374 * It sets errno to ERANGE when the target datatype is too small. |
| |
1375 * |
| |
1376 * @param str the string to convert |
| |
1377 * @param output a pointer to the integer variable where the result shall be stored |
| |
1378 * @param base 2, 8, 10, or 16 |
| |
1379 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1380 * @retval zero success |
| |
1381 * @retval non-zero conversion was not possible |
| 1188 */ |
1382 */ |
| 1189 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1383 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1190 int cx_strtou8_lc(cxstring str, uint8_t *output, int base, const char *groupsep); |
1384 int cx_strtou8_lc_(cxstring str, uint8_t *output, int base, const char *groupsep); |
| 1191 /** |
1385 |
| 1192 * @copydoc cx_strtouz_lc() |
1386 /** |
| |
1387 * Converts a string to a number. |
| |
1388 * |
| |
1389 * The function returns non-zero when conversion is not possible. |
| |
1390 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1391 * It sets errno to ERANGE when the target datatype is too small. |
| |
1392 * |
| |
1393 * @param str the string to convert |
| |
1394 * @param output a pointer to the integer variable where the result shall be stored |
| |
1395 * @param base 2, 8, 10, or 16 |
| |
1396 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1397 * @retval zero success |
| |
1398 * @retval non-zero conversion was not possible |
| 1193 */ |
1399 */ |
| 1194 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1400 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1195 int cx_strtou16_lc(cxstring str, uint16_t *output, int base, const char *groupsep); |
1401 int cx_strtou16_lc_(cxstring str, uint16_t *output, int base, const char *groupsep); |
| 1196 /** |
1402 |
| 1197 * @copydoc cx_strtouz_lc() |
1403 /** |
| |
1404 * Converts a string to a number. |
| |
1405 * |
| |
1406 * The function returns non-zero when conversion is not possible. |
| |
1407 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1408 * It sets errno to ERANGE when the target datatype is too small. |
| |
1409 * |
| |
1410 * @param str the string to convert |
| |
1411 * @param output a pointer to the integer variable where the result shall be stored |
| |
1412 * @param base 2, 8, 10, or 16 |
| |
1413 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1414 * @retval zero success |
| |
1415 * @retval non-zero conversion was not possible |
| 1198 */ |
1416 */ |
| 1199 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1417 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1200 int cx_strtou32_lc(cxstring str, uint32_t *output, int base, const char *groupsep); |
1418 int cx_strtou32_lc_(cxstring str, uint32_t *output, int base, const char *groupsep); |
| 1201 /** |
1419 |
| 1202 * @copydoc cx_strtouz_lc() |
1420 /** |
| |
1421 * Converts a string to a number. |
| |
1422 * |
| |
1423 * The function returns non-zero when conversion is not possible. |
| |
1424 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1425 * It sets errno to ERANGE when the target datatype is too small. |
| |
1426 * |
| |
1427 * @param str the string to convert |
| |
1428 * @param output a pointer to the integer variable where the result shall be stored |
| |
1429 * @param base 2, 8, 10, or 16 |
| |
1430 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1431 * @retval zero success |
| |
1432 * @retval non-zero conversion was not possible |
| 1203 */ |
1433 */ |
| 1204 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1434 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1205 int cx_strtou64_lc(cxstring str, uint64_t *output, int base, const char *groupsep); |
1435 int cx_strtou64_lc_(cxstring str, uint64_t *output, int base, const char *groupsep); |
| 1206 |
1436 |
| 1207 /** |
1437 /** |
| 1208 * Converts a string to a number. |
1438 * Converts a string to a number. |
| 1209 * |
1439 * |
| 1210 * The function returns non-zero when conversion is not possible. |
1440 * The function returns non-zero when conversion is not possible. |
| 1217 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
1447 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| 1218 * @retval zero success |
1448 * @retval zero success |
| 1219 * @retval non-zero conversion was not possible |
1449 * @retval non-zero conversion was not possible |
| 1220 */ |
1450 */ |
| 1221 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
1451 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| 1222 int cx_strtouz_lc(cxstring str, size_t *output, int base, const char *groupsep); |
1452 int cx_strtouz_lc_(cxstring str, size_t *output, int base, const char *groupsep); |
| |
1453 |
| |
1454 /** |
| |
1455 * Converts a string to a single precision floating point number. |
| |
1456 * |
| |
1457 * The function returns non-zero when conversion is not possible. |
| |
1458 * In that case the function sets errno to EINVAL when the reason is an invalid character. |
| |
1459 * It sets errno to ERANGE when the necessary representation would exceed the limits defined in libc's float.h. |
| |
1460 * |
| |
1461 * @param str the string to convert |
| |
1462 * @param output a pointer to the float variable where the result shall be stored |
| |
1463 * @param decsep the decimal separator |
| |
1464 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1465 * @retval zero success |
| |
1466 * @retval non-zero conversion was not possible |
| |
1467 */ |
| |
1468 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| |
1469 int cx_strtof_lc_(cxstring str, float *output, char decsep, const char *groupsep); |
| |
1470 |
| |
1471 /** |
| |
1472 * Converts a string to a double precision floating point number. |
| |
1473 * |
| |
1474 * The function returns non-zero when conversion is not possible. |
| |
1475 * In that case the function sets errno to EINVAL when the reason is an invalid character. |
| |
1476 * It sets errno to ERANGE when the necessary representation would exceed the limits defined in libc's float.h. |
| |
1477 * |
| |
1478 * @param str the string to convert |
| |
1479 * @param output a pointer to the float variable where the result shall be stored |
| |
1480 * @param decsep the decimal separator |
| |
1481 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
1482 * @retval zero success |
| |
1483 * @retval non-zero conversion was not possible |
| |
1484 */ |
| |
1485 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
| |
1486 int cx_strtod_lc_(cxstring str, double *output, char decsep, const char *groupsep); |
| |
1487 |
| |
1488 /** |
| |
1489 * Converts a string to a number. |
| |
1490 * |
| |
1491 * The function returns non-zero when conversion is not possible. |
| |
1492 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1493 * It sets errno to ERANGE when the target datatype is too small. |
| |
1494 * |
| |
1495 * @param str the string to convert |
| |
1496 * @param output a pointer to the integer variable where the result shall be stored |
| |
1497 * @param base 2, 8, 10, or 16 |
| |
1498 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1499 * @retval zero success |
| |
1500 * @retval non-zero conversion was not possible |
| |
1501 */ |
| |
1502 #define cx_strtos_lc(str, output, base, groupsep) cx_strtos_lc_(cx_strcast(str), output, base, groupsep) |
| |
1503 |
| |
1504 /** |
| |
1505 * Converts a string to a number. |
| |
1506 * |
| |
1507 * The function returns non-zero when conversion is not possible. |
| |
1508 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1509 * It sets errno to ERANGE when the target datatype is too small. |
| |
1510 * |
| |
1511 * @param str the string to convert |
| |
1512 * @param output a pointer to the integer variable where the result shall be stored |
| |
1513 * @param base 2, 8, 10, or 16 |
| |
1514 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1515 * @retval zero success |
| |
1516 * @retval non-zero conversion was not possible |
| |
1517 */ |
| |
1518 #define cx_strtoi_lc(str, output, base, groupsep) cx_strtoi_lc_(cx_strcast(str), output, base, groupsep) |
| |
1519 |
| |
1520 /** |
| |
1521 * Converts a string to a number. |
| |
1522 * |
| |
1523 * The function returns non-zero when conversion is not possible. |
| |
1524 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1525 * It sets errno to ERANGE when the target datatype is too small. |
| |
1526 * |
| |
1527 * @param str the string to convert |
| |
1528 * @param output a pointer to the integer variable where the result shall be stored |
| |
1529 * @param base 2, 8, 10, or 16 |
| |
1530 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1531 * @retval zero success |
| |
1532 * @retval non-zero conversion was not possible |
| |
1533 */ |
| |
1534 #define cx_strtol_lc(str, output, base, groupsep) cx_strtol_lc_(cx_strcast(str), output, base, groupsep) |
| |
1535 |
| |
1536 /** |
| |
1537 * Converts a string to a number. |
| |
1538 * |
| |
1539 * The function returns non-zero when conversion is not possible. |
| |
1540 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1541 * It sets errno to ERANGE when the target datatype is too small. |
| |
1542 * |
| |
1543 * @param str the string to convert |
| |
1544 * @param output a pointer to the integer variable where the result shall be stored |
| |
1545 * @param base 2, 8, 10, or 16 |
| |
1546 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1547 * @retval zero success |
| |
1548 * @retval non-zero conversion was not possible |
| |
1549 */ |
| |
1550 #define cx_strtoll_lc(str, output, base, groupsep) cx_strtoll_lc_(cx_strcast(str), output, base, groupsep) |
| |
1551 |
| |
1552 /** |
| |
1553 * Converts a string to a number. |
| |
1554 * |
| |
1555 * The function returns non-zero when conversion is not possible. |
| |
1556 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1557 * It sets errno to ERANGE when the target datatype is too small. |
| |
1558 * |
| |
1559 * @param str the string to convert |
| |
1560 * @param output a pointer to the integer variable where the result shall be stored |
| |
1561 * @param base 2, 8, 10, or 16 |
| |
1562 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1563 * @retval zero success |
| |
1564 * @retval non-zero conversion was not possible |
| |
1565 */ |
| |
1566 #define cx_strtoi8_lc(str, output, base, groupsep) cx_strtoi8_lc_(cx_strcast(str), output, base, groupsep) |
| |
1567 |
| |
1568 /** |
| |
1569 * Converts a string to a number. |
| |
1570 * |
| |
1571 * The function returns non-zero when conversion is not possible. |
| |
1572 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1573 * It sets errno to ERANGE when the target datatype is too small. |
| |
1574 * |
| |
1575 * @param str the string to convert |
| |
1576 * @param output a pointer to the integer variable where the result shall be stored |
| |
1577 * @param base 2, 8, 10, or 16 |
| |
1578 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1579 * @retval zero success |
| |
1580 * @retval non-zero conversion was not possible |
| |
1581 */ |
| |
1582 #define cx_strtoi16_lc(str, output, base, groupsep) cx_strtoi16_lc_(cx_strcast(str), output, base, groupsep) |
| |
1583 |
| |
1584 /** |
| |
1585 * Converts a string to a number. |
| |
1586 * |
| |
1587 * The function returns non-zero when conversion is not possible. |
| |
1588 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1589 * It sets errno to ERANGE when the target datatype is too small. |
| |
1590 * |
| |
1591 * @param str the string to convert |
| |
1592 * @param output a pointer to the integer variable where the result shall be stored |
| |
1593 * @param base 2, 8, 10, or 16 |
| |
1594 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1595 * @retval zero success |
| |
1596 * @retval non-zero conversion was not possible |
| |
1597 */ |
| |
1598 #define cx_strtoi32_lc(str, output, base, groupsep) cx_strtoi32_lc_(cx_strcast(str), output, base, groupsep) |
| |
1599 |
| |
1600 /** |
| |
1601 * Converts a string to a number. |
| |
1602 * |
| |
1603 * The function returns non-zero when conversion is not possible. |
| |
1604 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1605 * It sets errno to ERANGE when the target datatype is too small. |
| |
1606 * |
| |
1607 * @param str the string to convert |
| |
1608 * @param output a pointer to the integer variable where the result shall be stored |
| |
1609 * @param base 2, 8, 10, or 16 |
| |
1610 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1611 * @retval zero success |
| |
1612 * @retval non-zero conversion was not possible |
| |
1613 */ |
| |
1614 #define cx_strtoi64_lc(str, output, base, groupsep) cx_strtoi64_lc_(cx_strcast(str), output, base, groupsep) |
| |
1615 |
| |
1616 /** |
| |
1617 * Converts a string to a number. |
| |
1618 * |
| |
1619 * The function returns non-zero when conversion is not possible. |
| |
1620 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1621 * It sets errno to ERANGE when the target datatype is too small. |
| |
1622 * |
| |
1623 * @param str the string to convert |
| |
1624 * @param output a pointer to the integer variable where the result shall be stored |
| |
1625 * @param base 2, 8, 10, or 16 |
| |
1626 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1627 * @retval zero success |
| |
1628 * @retval non-zero conversion was not possible |
| |
1629 */ |
| |
1630 #define cx_strtoz_lc(str, output, base, groupsep) cx_strtoz_lc_(cx_strcast(str), output, base, groupsep) |
| |
1631 |
| |
1632 /** |
| |
1633 * Converts a string to a number. |
| |
1634 * |
| |
1635 * The function returns non-zero when conversion is not possible. |
| |
1636 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1637 * It sets errno to ERANGE when the target datatype is too small. |
| |
1638 * |
| |
1639 * @param str the string to convert |
| |
1640 * @param output a pointer to the integer variable where the result shall be stored |
| |
1641 * @param base 2, 8, 10, or 16 |
| |
1642 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1643 * @retval zero success |
| |
1644 * @retval non-zero conversion was not possible |
| |
1645 */ |
| |
1646 #define cx_strtous_lc(str, output, base, groupsep) cx_strtous_lc_(cx_strcast(str), output, base, groupsep) |
| |
1647 |
| |
1648 /** |
| |
1649 * Converts a string to a number. |
| |
1650 * |
| |
1651 * The function returns non-zero when conversion is not possible. |
| |
1652 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1653 * It sets errno to ERANGE when the target datatype is too small. |
| |
1654 * |
| |
1655 * @param str the string to convert |
| |
1656 * @param output a pointer to the integer variable where the result shall be stored |
| |
1657 * @param base 2, 8, 10, or 16 |
| |
1658 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1659 * @retval zero success |
| |
1660 * @retval non-zero conversion was not possible |
| |
1661 */ |
| |
1662 #define cx_strtou_lc(str, output, base, groupsep) cx_strtou_lc_(cx_strcast(str), output, base, groupsep) |
| |
1663 |
| |
1664 /** |
| |
1665 * Converts a string to a number. |
| |
1666 * |
| |
1667 * The function returns non-zero when conversion is not possible. |
| |
1668 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1669 * It sets errno to ERANGE when the target datatype is too small. |
| |
1670 * |
| |
1671 * @param str the string to convert |
| |
1672 * @param output a pointer to the integer variable where the result shall be stored |
| |
1673 * @param base 2, 8, 10, or 16 |
| |
1674 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1675 * @retval zero success |
| |
1676 * @retval non-zero conversion was not possible |
| |
1677 */ |
| |
1678 #define cx_strtoul_lc(str, output, base, groupsep) cx_strtoul_lc_(cx_strcast(str), output, base, groupsep) |
| |
1679 |
| |
1680 /** |
| |
1681 * Converts a string to a number. |
| |
1682 * |
| |
1683 * The function returns non-zero when conversion is not possible. |
| |
1684 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1685 * It sets errno to ERANGE when the target datatype is too small. |
| |
1686 * |
| |
1687 * @param str the string to convert |
| |
1688 * @param output a pointer to the integer variable where the result shall be stored |
| |
1689 * @param base 2, 8, 10, or 16 |
| |
1690 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1691 * @retval zero success |
| |
1692 * @retval non-zero conversion was not possible |
| |
1693 */ |
| |
1694 #define cx_strtoull_lc(str, output, base, groupsep) cx_strtoull_lc_(cx_strcast(str), output, base, groupsep) |
| |
1695 |
| |
1696 /** |
| |
1697 * Converts a string to a number. |
| |
1698 * |
| |
1699 * The function returns non-zero when conversion is not possible. |
| |
1700 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1701 * It sets errno to ERANGE when the target datatype is too small. |
| |
1702 * |
| |
1703 * @param str the string to convert |
| |
1704 * @param output a pointer to the integer variable where the result shall be stored |
| |
1705 * @param base 2, 8, 10, or 16 |
| |
1706 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1707 * @retval zero success |
| |
1708 * @retval non-zero conversion was not possible |
| |
1709 */ |
| |
1710 #define cx_strtou8_lc(str, output, base, groupsep) cx_strtou8_lc_(cx_strcast(str), output, base, groupsep) |
| |
1711 |
| |
1712 /** |
| |
1713 * Converts a string to a number. |
| |
1714 * |
| |
1715 * The function returns non-zero when conversion is not possible. |
| |
1716 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1717 * It sets errno to ERANGE when the target datatype is too small. |
| |
1718 * |
| |
1719 * @param str the string to convert |
| |
1720 * @param output a pointer to the integer variable where the result shall be stored |
| |
1721 * @param base 2, 8, 10, or 16 |
| |
1722 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1723 * @retval zero success |
| |
1724 * @retval non-zero conversion was not possible |
| |
1725 */ |
| |
1726 #define cx_strtou16_lc(str, output, base, groupsep) cx_strtou16_lc_(cx_strcast(str), output, base, groupsep) |
| |
1727 |
| |
1728 /** |
| |
1729 * Converts a string to a number. |
| |
1730 * |
| |
1731 * The function returns non-zero when conversion is not possible. |
| |
1732 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1733 * It sets errno to ERANGE when the target datatype is too small. |
| |
1734 * |
| |
1735 * @param str the string to convert |
| |
1736 * @param output a pointer to the integer variable where the result shall be stored |
| |
1737 * @param base 2, 8, 10, or 16 |
| |
1738 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1739 * @retval zero success |
| |
1740 * @retval non-zero conversion was not possible |
| |
1741 */ |
| |
1742 #define cx_strtou32_lc(str, output, base, groupsep) cx_strtou32_lc_(cx_strcast(str), output, base, groupsep) |
| |
1743 |
| |
1744 /** |
| |
1745 * Converts a string to a number. |
| |
1746 * |
| |
1747 * The function returns non-zero when conversion is not possible. |
| |
1748 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1749 * It sets errno to ERANGE when the target datatype is too small. |
| |
1750 * |
| |
1751 * @param str the string to convert |
| |
1752 * @param output a pointer to the integer variable where the result shall be stored |
| |
1753 * @param base 2, 8, 10, or 16 |
| |
1754 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1755 * @retval zero success |
| |
1756 * @retval non-zero conversion was not possible |
| |
1757 */ |
| |
1758 #define cx_strtou64_lc(str, output, base, groupsep) cx_strtou64_lc_(cx_strcast(str), output, base, groupsep) |
| |
1759 |
| |
1760 /** |
| |
1761 * Converts a string to a number. |
| |
1762 * |
| |
1763 * The function returns non-zero when conversion is not possible. |
| |
1764 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1765 * It sets errno to ERANGE when the target datatype is too small. |
| |
1766 * |
| |
1767 * @param str the string to convert |
| |
1768 * @param output a pointer to the integer variable where the result shall be stored |
| |
1769 * @param base 2, 8, 10, or 16 |
| |
1770 * @param groupsep (@c const @c char*) each character in this string is treated as group separator and ignored during conversion |
| |
1771 * @retval zero success |
| |
1772 * @retval non-zero conversion was not possible |
| |
1773 */ |
| |
1774 #define cx_strtouz_lc(str, output, base, groupsep) cx_strtouz_lc_(cx_strcast(str), output, base, groupsep) |
| |
1775 |
| |
1776 /** |
| |
1777 * Converts a string to a number. |
| |
1778 * |
| |
1779 * The function returns non-zero when conversion is not possible. |
| |
1780 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1781 * It sets errno to ERANGE when the target datatype is too small. |
| |
1782 * |
| |
1783 * The comma character is treated as group separator and ignored during parsing. |
| |
1784 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1785 * |
| |
1786 * @param str the string to convert |
| |
1787 * @param output a pointer to the integer variable where the result shall be stored |
| |
1788 * @param base 2, 8, 10, or 16 |
| |
1789 * @retval zero success |
| |
1790 * @retval non-zero conversion was not possible |
| |
1791 */ |
| |
1792 #define cx_strtos(str, output, base) cx_strtos_lc_(cx_strcast(str), output, base, ",") |
| |
1793 |
| |
1794 /** |
| |
1795 * Converts a string to a number. |
| |
1796 * |
| |
1797 * The function returns non-zero when conversion is not possible. |
| |
1798 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1799 * It sets errno to ERANGE when the target datatype is too small. |
| |
1800 * |
| |
1801 * The comma character is treated as group separator and ignored during parsing. |
| |
1802 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1803 * |
| |
1804 * @param str the string to convert |
| |
1805 * @param output a pointer to the integer variable where the result shall be stored |
| |
1806 * @param base 2, 8, 10, or 16 |
| |
1807 * @retval zero success |
| |
1808 * @retval non-zero conversion was not possible |
| |
1809 */ |
| |
1810 #define cx_strtoi(str, output, base) cx_strtoi_lc_(cx_strcast(str), output, base, ",") |
| |
1811 |
| |
1812 /** |
| |
1813 * Converts a string to a number. |
| |
1814 * |
| |
1815 * The function returns non-zero when conversion is not possible. |
| |
1816 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1817 * It sets errno to ERANGE when the target datatype is too small. |
| |
1818 * |
| |
1819 * The comma character is treated as group separator and ignored during parsing. |
| |
1820 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1821 * |
| |
1822 * @param str the string to convert |
| |
1823 * @param output a pointer to the integer variable where the result shall be stored |
| |
1824 * @param base 2, 8, 10, or 16 |
| |
1825 * @retval zero success |
| |
1826 * @retval non-zero conversion was not possible |
| |
1827 */ |
| |
1828 #define cx_strtol(str, output, base) cx_strtol_lc_(cx_strcast(str), output, base, ",") |
| |
1829 |
| |
1830 /** |
| |
1831 * Converts a string to a number. |
| |
1832 * |
| |
1833 * The function returns non-zero when conversion is not possible. |
| |
1834 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1835 * It sets errno to ERANGE when the target datatype is too small. |
| |
1836 * |
| |
1837 * The comma character is treated as group separator and ignored during parsing. |
| |
1838 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1839 * |
| |
1840 * @param str the string to convert |
| |
1841 * @param output a pointer to the integer variable where the result shall be stored |
| |
1842 * @param base 2, 8, 10, or 16 |
| |
1843 * @retval zero success |
| |
1844 * @retval non-zero conversion was not possible |
| |
1845 */ |
| |
1846 #define cx_strtoll(str, output, base) cx_strtoll_lc_(cx_strcast(str), output, base, ",") |
| |
1847 |
| |
1848 /** |
| |
1849 * Converts a string to a number. |
| |
1850 * |
| |
1851 * The function returns non-zero when conversion is not possible. |
| |
1852 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1853 * It sets errno to ERANGE when the target datatype is too small. |
| |
1854 * |
| |
1855 * The comma character is treated as group separator and ignored during parsing. |
| |
1856 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1857 * |
| |
1858 * @param str the string to convert |
| |
1859 * @param output a pointer to the integer variable where the result shall be stored |
| |
1860 * @param base 2, 8, 10, or 16 |
| |
1861 * @retval zero success |
| |
1862 * @retval non-zero conversion was not possible |
| |
1863 */ |
| |
1864 #define cx_strtoi8(str, output, base) cx_strtoi8_lc_(cx_strcast(str), output, base, ",") |
| |
1865 |
| |
1866 /** |
| |
1867 * Converts a string to a number. |
| |
1868 * |
| |
1869 * The function returns non-zero when conversion is not possible. |
| |
1870 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1871 * It sets errno to ERANGE when the target datatype is too small. |
| |
1872 * |
| |
1873 * The comma character is treated as group separator and ignored during parsing. |
| |
1874 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1875 * |
| |
1876 * @param str the string to convert |
| |
1877 * @param output a pointer to the integer variable where the result shall be stored |
| |
1878 * @param base 2, 8, 10, or 16 |
| |
1879 * @retval zero success |
| |
1880 * @retval non-zero conversion was not possible |
| |
1881 */ |
| |
1882 #define cx_strtoi16(str, output, base) cx_strtoi16_lc_(cx_strcast(str), output, base, ",") |
| |
1883 |
| |
1884 /** |
| |
1885 * Converts a string to a number. |
| |
1886 * |
| |
1887 * The function returns non-zero when conversion is not possible. |
| |
1888 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1889 * It sets errno to ERANGE when the target datatype is too small. |
| |
1890 * |
| |
1891 * The comma character is treated as group separator and ignored during parsing. |
| |
1892 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1893 * |
| |
1894 * @param str the string to convert |
| |
1895 * @param output a pointer to the integer variable where the result shall be stored |
| |
1896 * @param base 2, 8, 10, or 16 |
| |
1897 * @retval zero success |
| |
1898 * @retval non-zero conversion was not possible |
| |
1899 */ |
| |
1900 #define cx_strtoi32(str, output, base) cx_strtoi32_lc_(cx_strcast(str), output, base, ",") |
| |
1901 |
| |
1902 /** |
| |
1903 * Converts a string to a number. |
| |
1904 * |
| |
1905 * The function returns non-zero when conversion is not possible. |
| |
1906 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1907 * It sets errno to ERANGE when the target datatype is too small. |
| |
1908 * |
| |
1909 * The comma character is treated as group separator and ignored during parsing. |
| |
1910 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1911 * |
| |
1912 * @param str the string to convert |
| |
1913 * @param output a pointer to the integer variable where the result shall be stored |
| |
1914 * @param base 2, 8, 10, or 16 |
| |
1915 * @retval zero success |
| |
1916 * @retval non-zero conversion was not possible |
| |
1917 */ |
| |
1918 #define cx_strtoi64(str, output, base) cx_strtoi64_lc_(cx_strcast(str), output, base, ",") |
| |
1919 |
| |
1920 /** |
| |
1921 * Converts a string to a number. |
| |
1922 * |
| |
1923 * The function returns non-zero when conversion is not possible. |
| |
1924 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1925 * It sets errno to ERANGE when the target datatype is too small. |
| |
1926 * |
| |
1927 * The comma character is treated as group separator and ignored during parsing. |
| |
1928 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1929 * |
| |
1930 * @param str the string to convert |
| |
1931 * @param output a pointer to the integer variable where the result shall be stored |
| |
1932 * @param base 2, 8, 10, or 16 |
| |
1933 * @retval zero success |
| |
1934 * @retval non-zero conversion was not possible |
| |
1935 */ |
| |
1936 #define cx_strtoz(str, output, base) cx_strtoz_lc_(cx_strcast(str), output, base, ",") |
| |
1937 |
| |
1938 /** |
| |
1939 * Converts a string to a number. |
| |
1940 * |
| |
1941 * The function returns non-zero when conversion is not possible. |
| |
1942 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1943 * It sets errno to ERANGE when the target datatype is too small. |
| |
1944 * |
| |
1945 * The comma character is treated as group separator and ignored during parsing. |
| |
1946 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1947 * |
| |
1948 * @param str the string to convert |
| |
1949 * @param output a pointer to the integer variable where the result shall be stored |
| |
1950 * @param base 2, 8, 10, or 16 |
| |
1951 * @retval zero success |
| |
1952 * @retval non-zero conversion was not possible |
| |
1953 */ |
| |
1954 #define cx_strtous(str, output, base) cx_strtous_lc_(cx_strcast(str), output, base, ",") |
| |
1955 |
| |
1956 /** |
| |
1957 * Converts a string to a number. |
| |
1958 * |
| |
1959 * The function returns non-zero when conversion is not possible. |
| |
1960 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1961 * It sets errno to ERANGE when the target datatype is too small. |
| |
1962 * |
| |
1963 * The comma character is treated as group separator and ignored during parsing. |
| |
1964 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1965 * |
| |
1966 * @param str the string to convert |
| |
1967 * @param output a pointer to the integer variable where the result shall be stored |
| |
1968 * @param base 2, 8, 10, or 16 |
| |
1969 * @retval zero success |
| |
1970 * @retval non-zero conversion was not possible |
| |
1971 */ |
| |
1972 #define cx_strtou(str, output, base) cx_strtou_lc_(cx_strcast(str), output, base, ",") |
| |
1973 |
| |
1974 /** |
| |
1975 * Converts a string to a number. |
| |
1976 * |
| |
1977 * The function returns non-zero when conversion is not possible. |
| |
1978 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1979 * It sets errno to ERANGE when the target datatype is too small. |
| |
1980 * |
| |
1981 * The comma character is treated as group separator and ignored during parsing. |
| |
1982 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
1983 * |
| |
1984 * @param str the string to convert |
| |
1985 * @param output a pointer to the integer variable where the result shall be stored |
| |
1986 * @param base 2, 8, 10, or 16 |
| |
1987 * @retval zero success |
| |
1988 * @retval non-zero conversion was not possible |
| |
1989 */ |
| |
1990 #define cx_strtoul(str, output, base) cx_strtoul_lc_(cx_strcast(str), output, base, ",") |
| |
1991 |
| |
1992 /** |
| |
1993 * Converts a string to a number. |
| |
1994 * |
| |
1995 * The function returns non-zero when conversion is not possible. |
| |
1996 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
1997 * It sets errno to ERANGE when the target datatype is too small. |
| |
1998 * |
| |
1999 * The comma character is treated as group separator and ignored during parsing. |
| |
2000 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
2001 * |
| |
2002 * @param str the string to convert |
| |
2003 * @param output a pointer to the integer variable where the result shall be stored |
| |
2004 * @param base 2, 8, 10, or 16 |
| |
2005 * @retval zero success |
| |
2006 * @retval non-zero conversion was not possible |
| |
2007 */ |
| |
2008 #define cx_strtoull(str, output, base) cx_strtoull_lc_(cx_strcast(str), output, base, ",") |
| |
2009 |
| |
2010 /** |
| |
2011 * Converts a string to a number. |
| |
2012 * |
| |
2013 * The function returns non-zero when conversion is not possible. |
| |
2014 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
2015 * It sets errno to ERANGE when the target datatype is too small. |
| |
2016 * |
| |
2017 * The comma character is treated as group separator and ignored during parsing. |
| |
2018 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
2019 * |
| |
2020 * @param str the string to convert |
| |
2021 * @param output a pointer to the integer variable where the result shall be stored |
| |
2022 * @param base 2, 8, 10, or 16 |
| |
2023 * @retval zero success |
| |
2024 * @retval non-zero conversion was not possible |
| |
2025 */ |
| |
2026 #define cx_strtou8(str, output, base) cx_strtou8_lc_(cx_strcast(str), output, base, ",") |
| |
2027 |
| |
2028 /** |
| |
2029 * Converts a string to a number. |
| |
2030 * |
| |
2031 * The function returns non-zero when conversion is not possible. |
| |
2032 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
2033 * It sets errno to ERANGE when the target datatype is too small. |
| |
2034 * |
| |
2035 * The comma character is treated as group separator and ignored during parsing. |
| |
2036 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
2037 * |
| |
2038 * @param str the string to convert |
| |
2039 * @param output a pointer to the integer variable where the result shall be stored |
| |
2040 * @param base 2, 8, 10, or 16 |
| |
2041 * @retval zero success |
| |
2042 * @retval non-zero conversion was not possible |
| |
2043 */ |
| |
2044 #define cx_strtou16(str, output, base) cx_strtou16_lc_(cx_strcast(str), output, base, ",") |
| |
2045 |
| |
2046 /** |
| |
2047 * Converts a string to a number. |
| |
2048 * |
| |
2049 * The function returns non-zero when conversion is not possible. |
| |
2050 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
2051 * It sets errno to ERANGE when the target datatype is too small. |
| |
2052 * |
| |
2053 * The comma character is treated as group separator and ignored during parsing. |
| |
2054 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
2055 * |
| |
2056 * @param str the string to convert |
| |
2057 * @param output a pointer to the integer variable where the result shall be stored |
| |
2058 * @param base 2, 8, 10, or 16 |
| |
2059 * @retval zero success |
| |
2060 * @retval non-zero conversion was not possible |
| |
2061 */ |
| |
2062 #define cx_strtou32(str, output, base) cx_strtou32_lc_(cx_strcast(str), output, base, ",") |
| |
2063 |
| |
2064 /** |
| |
2065 * Converts a string to a number. |
| |
2066 * |
| |
2067 * The function returns non-zero when conversion is not possible. |
| |
2068 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
2069 * It sets errno to ERANGE when the target datatype is too small. |
| |
2070 * |
| |
2071 * The comma character is treated as group separator and ignored during parsing. |
| |
2072 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
2073 * |
| |
2074 * @param str the string to convert |
| |
2075 * @param output a pointer to the integer variable where the result shall be stored |
| |
2076 * @param base 2, 8, 10, or 16 |
| |
2077 * @retval zero success |
| |
2078 * @retval non-zero conversion was not possible |
| |
2079 */ |
| |
2080 #define cx_strtou64(str, output, base) cx_strtou64_lc_(cx_strcast(str), output, base, ",") |
| |
2081 |
| |
2082 /** |
| |
2083 * Converts a string to a number. |
| |
2084 * |
| |
2085 * The function returns non-zero when conversion is not possible. |
| |
2086 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
| |
2087 * It sets errno to ERANGE when the target datatype is too small. |
| |
2088 * |
| |
2089 * The comma character is treated as group separator and ignored during parsing. |
| |
2090 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
| |
2091 * |
| |
2092 * @param str the string to convert |
| |
2093 * @param output a pointer to the integer variable where the result shall be stored |
| |
2094 * @param base 2, 8, 10, or 16 |
| |
2095 * @retval zero success |
| |
2096 * @retval non-zero conversion was not possible |
| |
2097 */ |
| |
2098 #define cx_strtouz(str, output, base) cx_strtouz_lc_(cx_strcast(str), output, base, ",") |
| |
2099 |
| |
2100 /** |
| |
2101 * Converts a string to a single precision floating point number. |
| |
2102 * |
| |
2103 * The function returns non-zero when conversion is not possible. |
| |
2104 * In that case the function sets errno to EINVAL when the reason is an invalid character. |
| |
2105 * It sets errno to ERANGE when the necessary representation would exceed the limits defined in libc's float.h. |
| |
2106 * |
| |
2107 * @param str the string to convert |
| |
2108 * @param output a pointer to the float variable where the result shall be stored |
| |
2109 * @param decsep the decimal separator |
| |
2110 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
2111 * @retval zero success |
| |
2112 * @retval non-zero conversion was not possible |
| |
2113 */ |
| |
2114 #define cx_strtof_lc(str, output, decsep, groupsep) cx_strtof_lc_(cx_strcast(str), output, decsep, groupsep) |
| |
2115 |
| |
2116 /** |
| |
2117 * Converts a string to a double precision floating point number. |
| |
2118 * |
| |
2119 * The function returns non-zero when conversion is not possible. |
| |
2120 * In that case the function sets errno to EINVAL when the reason is an invalid character. |
| |
2121 * |
| |
2122 * @param str the string to convert |
| |
2123 * @param output a pointer to the double variable where the result shall be stored |
| |
2124 * @param decsep the decimal separator |
| |
2125 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
| |
2126 * @retval zero success |
| |
2127 * @retval non-zero conversion was not possible |
| |
2128 */ |
| |
2129 #define cx_strtod_lc(str, output, decsep, groupsep) cx_strtod_lc_(cx_strcast(str), output, decsep, groupsep) |
| 1223 |
2130 |
| 1224 /** |
2131 /** |
| 1225 * Converts a string to a single precision floating point number. |
2132 * Converts a string to a single precision floating point number. |
| 1226 * |
2133 * |
| 1227 * The function returns non-zero when conversion is not possible. |
2134 * The function returns non-zero when conversion is not possible. |
| 1232 * The comma character is treated as group separator and ignored during parsing. |
2139 * The comma character is treated as group separator and ignored during parsing. |
| 1233 * If you want to choose a different format, use cx_strtof_lc(). |
2140 * If you want to choose a different format, use cx_strtof_lc(). |
| 1234 * |
2141 * |
| 1235 * @param str the string to convert |
2142 * @param str the string to convert |
| 1236 * @param output a pointer to the float variable where the result shall be stored |
2143 * @param output a pointer to the float variable where the result shall be stored |
| 1237 * @param decsep the decimal separator |
2144 * @retval zero success |
| 1238 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
2145 * @retval non-zero conversion was not possible |
| 1239 * @retval zero success |
2146 */ |
| 1240 * @retval non-zero conversion was not possible |
2147 #define cx_strtof(str, output) cx_strtof_lc_(cx_strcast(str), output, '.', ",") |
| 1241 */ |
|
| 1242 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
|
| 1243 int cx_strtof_lc(cxstring str, float *output, char decsep, const char *groupsep); |
|
| 1244 |
2148 |
| 1245 /** |
2149 /** |
| 1246 * Converts a string to a double precision floating point number. |
2150 * Converts a string to a double precision floating point number. |
| 1247 * |
2151 * |
| 1248 * The function returns non-zero when conversion is not possible. |
2152 * The function returns non-zero when conversion is not possible. |
| 1249 * In that case the function sets errno to EINVAL when the reason is an invalid character. |
2153 * In that case the function sets errno to EINVAL when the reason is an invalid character. |
| 1250 * It sets errno to ERANGE when the necessary representation would exceed the limits defined in libc's float.h. |
|
| 1251 * |
2154 * |
| 1252 * The decimal separator is assumed to be a dot character. |
2155 * The decimal separator is assumed to be a dot character. |
| 1253 * The comma character is treated as group separator and ignored during parsing. |
2156 * The comma character is treated as group separator and ignored during parsing. |
| 1254 * If you want to choose a different format, use cx_strtof_lc(). |
2157 * If you want to choose a different format, use cx_strtof_lc(). |
| 1255 * |
2158 * |
| 1256 * @param str the string to convert |
2159 * @param str the string to convert |
| 1257 * @param output a pointer to the float variable where the result shall be stored |
|
| 1258 * @param decsep the decimal separator |
|
| 1259 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
|
| 1260 * @retval zero success |
|
| 1261 * @retval non-zero conversion was not possible |
|
| 1262 */ |
|
| 1263 cx_attr_access_w(2) cx_attr_nonnull_arg(2) |
|
| 1264 int cx_strtod_lc(cxstring str, double *output, char decsep, const char *groupsep); |
|
| 1265 |
|
| 1266 #ifndef CX_STR_IMPLEMENTATION |
|
| 1267 /** |
|
| 1268 * @copydoc cx_strtouz_lc() |
|
| 1269 */ |
|
| 1270 #define cx_strtos_lc(str, output, base, groupsep) cx_strtos_lc(cx_strcast(str), output, base, groupsep) |
|
| 1271 /** |
|
| 1272 * @copydoc cx_strtouz_lc() |
|
| 1273 */ |
|
| 1274 #define cx_strtoi_lc(str, output, base, groupsep) cx_strtoi_lc(cx_strcast(str), output, base, groupsep) |
|
| 1275 /** |
|
| 1276 * @copydoc cx_strtouz_lc() |
|
| 1277 */ |
|
| 1278 #define cx_strtol_lc(str, output, base, groupsep) cx_strtol_lc(cx_strcast(str), output, base, groupsep) |
|
| 1279 /** |
|
| 1280 * @copydoc cx_strtouz_lc() |
|
| 1281 */ |
|
| 1282 #define cx_strtoll_lc(str, output, base, groupsep) cx_strtoll_lc(cx_strcast(str), output, base, groupsep) |
|
| 1283 /** |
|
| 1284 * @copydoc cx_strtouz_lc() |
|
| 1285 */ |
|
| 1286 #define cx_strtoi8_lc(str, output, base, groupsep) cx_strtoi8_lc(cx_strcast(str), output, base, groupsep) |
|
| 1287 /** |
|
| 1288 * @copydoc cx_strtouz_lc() |
|
| 1289 */ |
|
| 1290 #define cx_strtoi16_lc(str, output, base, groupsep) cx_strtoi16_lc(cx_strcast(str), output, base, groupsep) |
|
| 1291 /** |
|
| 1292 * @copydoc cx_strtouz_lc() |
|
| 1293 */ |
|
| 1294 #define cx_strtoi32_lc(str, output, base, groupsep) cx_strtoi32_lc(cx_strcast(str), output, base, groupsep) |
|
| 1295 /** |
|
| 1296 * @copydoc cx_strtouz_lc() |
|
| 1297 */ |
|
| 1298 #define cx_strtoi64_lc(str, output, base, groupsep) cx_strtoi64_lc(cx_strcast(str), output, base, groupsep) |
|
| 1299 /** |
|
| 1300 * @copydoc cx_strtouz_lc() |
|
| 1301 */ |
|
| 1302 #define cx_strtoz_lc(str, output, base, groupsep) cx_strtoz_lc(cx_strcast(str), output, base, groupsep) |
|
| 1303 /** |
|
| 1304 * @copydoc cx_strtouz_lc() |
|
| 1305 */ |
|
| 1306 #define cx_strtous_lc(str, output, base, groupsep) cx_strtous_lc(cx_strcast(str), output, base, groupsep) |
|
| 1307 /** |
|
| 1308 * @copydoc cx_strtouz_lc() |
|
| 1309 */ |
|
| 1310 #define cx_strtou_lc(str, output, base, groupsep) cx_strtou_lc(cx_strcast(str), output, base, groupsep) |
|
| 1311 /** |
|
| 1312 * @copydoc cx_strtouz_lc() |
|
| 1313 */ |
|
| 1314 #define cx_strtoul_lc(str, output, base, groupsep) cx_strtoul_lc(cx_strcast(str), output, base, groupsep) |
|
| 1315 /** |
|
| 1316 * @copydoc cx_strtouz_lc() |
|
| 1317 */ |
|
| 1318 #define cx_strtoull_lc(str, output, base, groupsep) cx_strtoull_lc(cx_strcast(str), output, base, groupsep) |
|
| 1319 /** |
|
| 1320 * @copydoc cx_strtouz_lc() |
|
| 1321 */ |
|
| 1322 #define cx_strtou8_lc(str, output, base, groupsep) cx_strtou8_lc(cx_strcast(str), output, base, groupsep) |
|
| 1323 /** |
|
| 1324 * @copydoc cx_strtouz_lc() |
|
| 1325 */ |
|
| 1326 #define cx_strtou16_lc(str, output, base, groupsep) cx_strtou16_lc(cx_strcast(str), output, base, groupsep) |
|
| 1327 /** |
|
| 1328 * @copydoc cx_strtouz_lc() |
|
| 1329 */ |
|
| 1330 #define cx_strtou32_lc(str, output, base, groupsep) cx_strtou32_lc(cx_strcast(str), output, base, groupsep) |
|
| 1331 /** |
|
| 1332 * @copydoc cx_strtouz_lc() |
|
| 1333 */ |
|
| 1334 #define cx_strtou64_lc(str, output, base, groupsep) cx_strtou64_lc(cx_strcast(str), output, base, groupsep) |
|
| 1335 /** |
|
| 1336 * Converts a string to a number. |
|
| 1337 * |
|
| 1338 * The function returns non-zero when conversion is not possible. |
|
| 1339 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
|
| 1340 * It sets errno to ERANGE when the target datatype is too small. |
|
| 1341 * |
|
| 1342 * @param str the string to convert |
|
| 1343 * @param output a pointer to the integer variable where the result shall be stored |
|
| 1344 * @param base 2, 8, 10, or 16 |
|
| 1345 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
|
| 1346 * @retval zero success |
|
| 1347 * @retval non-zero conversion was not possible |
|
| 1348 */ |
|
| 1349 #define cx_strtouz_lc(str, output, base, groupsep) cx_strtouz_lc(cx_strcast(str), output, base, groupsep) |
|
| 1350 |
|
| 1351 /** |
|
| 1352 * @copydoc cx_strtouz() |
|
| 1353 */ |
|
| 1354 #define cx_strtos(str, output, base) cx_strtos_lc(str, output, base, ",") |
|
| 1355 /** |
|
| 1356 * @copydoc cx_strtouz() |
|
| 1357 */ |
|
| 1358 #define cx_strtoi(str, output, base) cx_strtoi_lc(str, output, base, ",") |
|
| 1359 /** |
|
| 1360 * @copydoc cx_strtouz() |
|
| 1361 */ |
|
| 1362 #define cx_strtol(str, output, base) cx_strtol_lc(str, output, base, ",") |
|
| 1363 /** |
|
| 1364 * @copydoc cx_strtouz() |
|
| 1365 */ |
|
| 1366 #define cx_strtoll(str, output, base) cx_strtoll_lc(str, output, base, ",") |
|
| 1367 /** |
|
| 1368 * @copydoc cx_strtouz() |
|
| 1369 */ |
|
| 1370 #define cx_strtoi8(str, output, base) cx_strtoi8_lc(str, output, base, ",") |
|
| 1371 /** |
|
| 1372 * @copydoc cx_strtouz() |
|
| 1373 */ |
|
| 1374 #define cx_strtoi16(str, output, base) cx_strtoi16_lc(str, output, base, ",") |
|
| 1375 /** |
|
| 1376 * @copydoc cx_strtouz() |
|
| 1377 */ |
|
| 1378 #define cx_strtoi32(str, output, base) cx_strtoi32_lc(str, output, base, ",") |
|
| 1379 /** |
|
| 1380 * @copydoc cx_strtouz() |
|
| 1381 */ |
|
| 1382 #define cx_strtoi64(str, output, base) cx_strtoi64_lc(str, output, base, ",") |
|
| 1383 /** |
|
| 1384 * @copydoc cx_strtouz() |
|
| 1385 */ |
|
| 1386 #define cx_strtoz(str, output, base) cx_strtoz_lc(str, output, base, ",") |
|
| 1387 /** |
|
| 1388 * @copydoc cx_strtouz() |
|
| 1389 */ |
|
| 1390 #define cx_strtous(str, output, base) cx_strtous_lc(str, output, base, ",") |
|
| 1391 /** |
|
| 1392 * @copydoc cx_strtouz() |
|
| 1393 */ |
|
| 1394 #define cx_strtou(str, output, base) cx_strtou_lc(str, output, base, ",") |
|
| 1395 /** |
|
| 1396 * @copydoc cx_strtouz() |
|
| 1397 */ |
|
| 1398 #define cx_strtoul(str, output, base) cx_strtoul_lc(str, output, base, ",") |
|
| 1399 /** |
|
| 1400 * @copydoc cx_strtouz() |
|
| 1401 */ |
|
| 1402 #define cx_strtoull(str, output, base) cx_strtoull_lc(str, output, base, ",") |
|
| 1403 /** |
|
| 1404 * @copydoc cx_strtouz() |
|
| 1405 */ |
|
| 1406 #define cx_strtou8(str, output, base) cx_strtou8_lc(str, output, base, ",") |
|
| 1407 /** |
|
| 1408 * @copydoc cx_strtouz() |
|
| 1409 */ |
|
| 1410 #define cx_strtou16(str, output, base) cx_strtou16_lc(str, output, base, ",") |
|
| 1411 /** |
|
| 1412 * @copydoc cx_strtouz() |
|
| 1413 */ |
|
| 1414 #define cx_strtou32(str, output, base) cx_strtou32_lc(str, output, base, ",") |
|
| 1415 /** |
|
| 1416 * @copydoc cx_strtouz() |
|
| 1417 */ |
|
| 1418 #define cx_strtou64(str, output, base) cx_strtou64_lc(str, output, base, ",") |
|
| 1419 /** |
|
| 1420 * Converts a string to a number. |
|
| 1421 * |
|
| 1422 * The function returns non-zero when conversion is not possible. |
|
| 1423 * In that case the function sets errno to EINVAL when the reason is an invalid character or an unsupported base. |
|
| 1424 * It sets errno to ERANGE when the target datatype is too small. |
|
| 1425 * |
|
| 1426 * The comma character is treated as group separator and ignored during parsing. |
|
| 1427 * If you want to choose the set of group separators, use the @c _lc variant of this function (e.g. cx_strtouz_lc()). |
|
| 1428 * |
|
| 1429 * @param str the string to convert |
|
| 1430 * @param output a pointer to the integer variable where the result shall be stored |
|
| 1431 * @param base 2, 8, 10, or 16 |
|
| 1432 * @retval zero success |
|
| 1433 * @retval non-zero conversion was not possible |
|
| 1434 */ |
|
| 1435 #define cx_strtouz(str, output, base) cx_strtouz_lc(str, output, base, ",") |
|
| 1436 |
|
| 1437 /** |
|
| 1438 * Converts a string to a single precision floating point number. |
|
| 1439 * |
|
| 1440 * The function returns non-zero when conversion is not possible. |
|
| 1441 * In that case the function sets errno to EINVAL when the reason is an invalid character. |
|
| 1442 * It sets errno to ERANGE when the necessary representation would exceed the limits defined in libc's float.h. |
|
| 1443 * |
|
| 1444 * The decimal separator is assumed to be a dot character. |
|
| 1445 * The comma character is treated as group separator and ignored during parsing. |
|
| 1446 * If you want to choose a different format, use cx_strtof_lc(). |
|
| 1447 * |
|
| 1448 * @param str the string to convert |
|
| 1449 * @param output a pointer to the float variable where the result shall be stored |
|
| 1450 * @param decsep the decimal separator |
|
| 1451 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
|
| 1452 * @retval zero success |
|
| 1453 * @retval non-zero conversion was not possible |
|
| 1454 */ |
|
| 1455 #define cx_strtof_lc(str, output, decsep, groupsep) cx_strtof_lc(cx_strcast(str), output, decsep, groupsep) |
|
| 1456 /** |
|
| 1457 * Converts a string to a double precision floating point number. |
|
| 1458 * |
|
| 1459 * The function returns non-zero when conversion is not possible. |
|
| 1460 * In that case the function sets errno to EINVAL when the reason is an invalid character. |
|
| 1461 * |
|
| 1462 * The decimal separator is assumed to be a dot character. |
|
| 1463 * The comma character is treated as group separator and ignored during parsing. |
|
| 1464 * If you want to choose a different format, use cx_strtof_lc(). |
|
| 1465 * |
|
| 1466 * @param str the string to convert |
|
| 1467 * @param output a pointer to the double variable where the result shall be stored |
2160 * @param output a pointer to the double variable where the result shall be stored |
| 1468 * @param decsep the decimal separator |
2161 * @retval zero success |
| 1469 * @param groupsep each character in this string is treated as group separator and ignored during conversion |
2162 * @retval non-zero conversion was not possible |
| 1470 * @retval zero success |
2163 */ |
| 1471 * @retval non-zero conversion was not possible |
2164 #define cx_strtod(str, output) cx_strtod_lc_(cx_strcast(str), output, '.', ",") |
| 1472 */ |
|
| 1473 #define cx_strtod_lc(str, output, decsep, groupsep) cx_strtod_lc(cx_strcast(str), output, decsep, groupsep) |
|
| 1474 |
|
| 1475 /** |
|
| 1476 * Converts a string to a single precision floating point number. |
|
| 1477 * |
|
| 1478 * The function returns non-zero when conversion is not possible. |
|
| 1479 * In that case the function sets errno to EINVAL when the reason is an invalid character. |
|
| 1480 * It sets errno to ERANGE when the necessary representation would exceed the limits defined in libc's float.h. |
|
| 1481 * |
|
| 1482 * The decimal separator is assumed to be a dot character. |
|
| 1483 * The comma character is treated as group separator and ignored during parsing. |
|
| 1484 * If you want to choose a different format, use cx_strtof_lc(). |
|
| 1485 * |
|
| 1486 * @param str the string to convert |
|
| 1487 * @param output a pointer to the float variable where the result shall be stored |
|
| 1488 * @retval zero success |
|
| 1489 * @retval non-zero conversion was not possible |
|
| 1490 */ |
|
| 1491 #define cx_strtof(str, output) cx_strtof_lc(str, output, '.', ",") |
|
| 1492 /** |
|
| 1493 * Converts a string to a double precision floating point number. |
|
| 1494 * |
|
| 1495 * The function returns non-zero when conversion is not possible. |
|
| 1496 * In that case the function sets errno to EINVAL when the reason is an invalid character. |
|
| 1497 * |
|
| 1498 * The decimal separator is assumed to be a dot character. |
|
| 1499 * The comma character is treated as group separator and ignored during parsing. |
|
| 1500 * If you want to choose a different format, use cx_strtof_lc(). |
|
| 1501 * |
|
| 1502 * @param str the string to convert |
|
| 1503 * @param output a pointer to the double variable where the result shall be stored |
|
| 1504 * @retval zero success |
|
| 1505 * @retval non-zero conversion was not possible |
|
| 1506 */ |
|
| 1507 #define cx_strtod(str, output) cx_strtod_lc(str, output, '.', ",") |
|
| 1508 |
|
| 1509 /** |
|
| 1510 * Creates a duplicate of the specified string. |
|
| 1511 * |
|
| 1512 * The new string will contain a copy allocated by @p allocator. |
|
| 1513 * |
|
| 1514 * @note The returned string is guaranteed to be zero-terminated. |
|
| 1515 * |
|
| 1516 * @param allocator (@c CxAllocator*) the allocator to use |
|
| 1517 * @param string the string to duplicate |
|
| 1518 * @return (@c cxmutstr) a duplicate of the string |
|
| 1519 * @see cx_strdup() |
|
| 1520 * @see cx_strfree_a() |
|
| 1521 */ |
|
| 1522 #define cx_strdup_a(allocator, string) \ |
|
| 1523 cx_strdup_a((allocator), cx_strcast(string)) |
|
| 1524 |
|
| 1525 /** |
|
| 1526 * Creates a string tokenization context. |
|
| 1527 * |
|
| 1528 * @param str the string to tokenize |
|
| 1529 * @param delim the delimiter string (must not be empty) |
|
| 1530 * @param limit (@c @size_t) the maximum number of tokens that shall be returned |
|
| 1531 * @return (@c CxStrtokCtx) a new string tokenization context |
|
| 1532 */ |
|
| 1533 #define cx_strtok(str, delim, limit) \ |
|
| 1534 cx_strtok(cx_strcast(str), cx_strcast(delim), (limit)) |
|
| 1535 |
|
| 1536 #endif |
|
| 1537 |
2165 |
| 1538 #ifdef __cplusplus |
2166 #ifdef __cplusplus |
| 1539 } // extern "C" |
2167 } // extern "C" |
| 1540 #endif |
2168 #endif |
| 1541 |
2169 |