mirror of
https://github.com/red0124/ssp.git
synced 2025-01-23 04:55:20 +01:00
add script to generate single header
This commit is contained in:
parent
999992e579
commit
62055f03c7
@ -17,6 +17,9 @@ namespace ss {
|
||||
// number converters
|
||||
////////////////
|
||||
|
||||
#define SSP_DISABLE_FAST_FLOAT
|
||||
#ifndef SSP_DISABLE_FAST_FLOAT
|
||||
|
||||
template <typename T>
|
||||
std::enable_if_t<std::is_floating_point_v<T>, std::optional<T>> to_num(
|
||||
const char* const begin, const char* const end) {
|
||||
@ -29,6 +32,31 @@ std::enable_if_t<std::is_floating_point_v<T>, std::optional<T>> to_num(
|
||||
return ret;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
template <typename T>
|
||||
std::enable_if_t<std::is_floating_point_v<T>, std::optional<T>> to_num(
|
||||
const char* const begin, const char* const end) {
|
||||
T ret;
|
||||
try {
|
||||
if constexpr (std::is_same_v<T, float>) {
|
||||
ret = std::stof(std::string{begin, end});
|
||||
}
|
||||
if constexpr (std::is_same_v<T, double>) {
|
||||
ret = std::stod(std::string{begin, end});
|
||||
}
|
||||
if constexpr (std::is_same_v<T, long double>) {
|
||||
ret = std::stold(std::string{begin, end});
|
||||
}
|
||||
} catch (...) {
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
inline std::optional<short> from_char(char c) {
|
||||
if (c >= '0' && c <= '9') {
|
||||
return c - '0';
|
||||
|
34
script/single_header_generator.py
Executable file
34
script/single_header_generator.py
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/python3
|
||||
|
||||
headers_dir = 'include/ss/'
|
||||
headers = ['type_traits.hpp',
|
||||
'function_traits.hpp',
|
||||
'restrictions.hpp',
|
||||
'common.hpp',
|
||||
'setup.hpp',
|
||||
'splitter.hpp',
|
||||
'extract.hpp',
|
||||
'converter.hpp',
|
||||
'parser.hpp']
|
||||
|
||||
combined_file = []
|
||||
includes = []
|
||||
|
||||
for header in headers:
|
||||
with open(headers_dir + header) as f:
|
||||
for line in f.read().splitlines():
|
||||
if '#include "' in line or '#include <fast_float' in line:
|
||||
continue
|
||||
|
||||
if '#include <' in line:
|
||||
includes.append(line)
|
||||
continue
|
||||
|
||||
if '#pragma once' not in line:
|
||||
combined_file.append(line)
|
||||
|
||||
includes = sorted(set(includes))
|
||||
|
||||
print('\n'.join(includes))
|
||||
print('#define SSP_DISABLE_FAST_FLOAT')
|
||||
print('\n'.join(combined_file))
|
Loading…
Reference in New Issue
Block a user