#ifndef _INCLUDE_HEADER_COMMON_UTILS_ #define _INCLUDE_HEADER_COMMON_UTILS_ #include /*----- atoi function -----*/ inline bool str_to_number (bool& out, const char *in) { if (0==in || 0==in[0]) return false; out = (strtol(in, NULL, 10) != 0); return true; } inline bool str_to_number (char& out, const char *in) { if (0==in || 0==in[0]) return false; out = (char) strtol(in, NULL, 10); return true; } inline bool str_to_number (unsigned char& out, const char *in) { if (0==in || 0==in[0]) return false; out = (unsigned char) strtoul(in, NULL, 10); return true; } inline bool str_to_number (short& out, const char *in) { if (0==in || 0==in[0]) return false; out = (short) strtol(in, NULL, 10); return true; } inline bool str_to_number (unsigned short& out, const char *in) { if (0==in || 0==in[0]) return false; out = (unsigned short) strtoul(in, NULL, 10); return true; } inline bool str_to_number (int& out, const char *in) { if (0==in || 0==in[0]) return false; out = (int) strtol(in, NULL, 10); return true; } inline bool str_to_number (unsigned int& out, const char *in) { if (0==in || 0==in[0]) return false; out = (unsigned int) strtoul(in, NULL, 10); return true; } inline bool str_to_number (long& out, const char *in) { if (0==in || 0==in[0]) return false; out = (long) strtol(in, NULL, 10); return true; } inline bool str_to_number (unsigned long& out, const char *in) { if (0==in || 0==in[0]) return false; out = (unsigned long) strtoul(in, NULL, 10); return true; } inline bool str_to_number (long long& out, const char *in) { if (0==in || 0==in[0]) return false; out = (long long) strtoull(in, NULL, 10); return true; } inline bool str_to_number (unsigned long long& out, const char *in) { if (0==in || 0==in[0]) return false; out = (unsigned long long) strtoull(in, NULL, 10); return true; } inline bool str_to_number (float& out, const char *in) { if (0==in || 0==in[0]) return false; out = (float) strtof(in, NULL); return true; } inline bool str_to_number (double& out, const char *in) { if (0==in || 0==in[0]) return false; out = (double) strtod(in, NULL); return true; } #ifdef __FreeBSD__ inline bool str_to_number (long double& out, const char *in) { if (0==in || 0==in[0]) return false; out = (long double) strtold(in, NULL); return true; } #endif //ENABLE_IKASHOP_RENEWAL template, int> = 0> inline bool str_to_enum(T& out, const char* in) { using S = std::underlying_type_t; S temp{}; if (!str_to_number(temp, in)) return false; out = static_cast(temp); return true; } template inline bool str_to_cstring(char(&array)[size], const char* from) { auto len = strnlen(from, size - 1) + 1; strncpy(array, from, len); array[size - 1] = 0; return true; } inline bool str_to_string(std::string& dest, const char* from) { auto len = strnlen(from, 4096); dest = std::string{ from, len }; return true; } // #endif //martysama0134's 623a0779c74cb7565145d45548376308