mirror of
https://github.com/fastfloat/fast_float.git
synced 2025-12-06 16:56:57 +08:00
Fix amalgamate.ph and add header for constexpr macros
This commit is contained in:
parent
ffc3fd7cc7
commit
d34d0d7405
40
include/fast_float/constexpr_feature_detect.h
Normal file
40
include/fast_float/constexpr_feature_detect.h
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#ifndef FASTFLOAT_CONSTEXPR_FEATURE_DETECT_H
|
||||||
|
#define FASTFLOAT_CONSTEXPR_FEATURE_DETECT_H
|
||||||
|
|
||||||
|
#ifdef __has_include
|
||||||
|
#if __has_include(<version>)
|
||||||
|
#include <version>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Testing for https://wg21.link/N3652, adopted in C++14
|
||||||
|
#if __cpp_constexpr >= 201304
|
||||||
|
#define FASTFLOAT_CONSTEXPR14 constexpr
|
||||||
|
#else
|
||||||
|
#define FASTFLOAT_CONSTEXPR14
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __cpp_lib_bit_cast >= 201806L
|
||||||
|
#define FASTFLOAT_HAS_BIT_CAST 1
|
||||||
|
#else
|
||||||
|
#define FASTFLOAT_HAS_BIT_CAST 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __cpp_lib_is_constant_evaluated >= 201811L
|
||||||
|
#define FASTFLOAT_HAS_IS_CONSTANT_EVALUATED 1
|
||||||
|
#else
|
||||||
|
#define FASTFLOAT_HAS_IS_CONSTANT_EVALUATED 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Testing for relevant C++20 constexpr library features
|
||||||
|
#if FASTFLOAT_HAS_IS_CONSTANT_EVALUATED \
|
||||||
|
&& FASTFLOAT_HAS_BIT_CAST \
|
||||||
|
&& __cpp_lib_constexpr_algorithms >= 201806L /*For std::copy and std::fill*/
|
||||||
|
#define FASTFLOAT_CONSTEXPR20 constexpr
|
||||||
|
#define FASTFLOAT_IS_CONSTEXPR 1
|
||||||
|
#else
|
||||||
|
#define FASTFLOAT_CONSTEXPR20
|
||||||
|
#define FASTFLOAT_IS_CONSTEXPR 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // FASTFLOAT_CONSTEXPR_FEATURE_DETECT_H
|
||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include <system_error>
|
#include <system_error>
|
||||||
|
|
||||||
#include "float_common.h"
|
#include "constexpr_feature_detect.h"
|
||||||
|
|
||||||
namespace fast_float {
|
namespace fast_float {
|
||||||
enum chars_format {
|
enum chars_format {
|
||||||
|
|||||||
@ -7,23 +7,8 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
#ifdef __has_include
|
#if FASTFLOAT_HAS_BIT_CAST
|
||||||
#if __has_include(<version>)
|
|
||||||
#include <version>
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if __cpp_lib_bit_cast >= 201806L
|
|
||||||
#include <bit>
|
#include <bit>
|
||||||
#define FASTFLOAT_HAS_BIT_CAST 1
|
|
||||||
#else
|
|
||||||
#define FASTFLOAT_HAS_BIT_CAST 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if __cpp_lib_is_constant_evaluated >= 201811L
|
|
||||||
#define FASTFLOAT_HAS_IS_CONSTANT_EVALUATED 1
|
|
||||||
#else
|
|
||||||
#define FASTFLOAT_HAS_IS_CONSTANT_EVALUATED 0
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) \
|
#if (defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) \
|
||||||
@ -110,24 +95,6 @@
|
|||||||
// rust style `try!()` macro, or `?` operator
|
// rust style `try!()` macro, or `?` operator
|
||||||
#define FASTFLOAT_TRY(x) { if (!(x)) return false; }
|
#define FASTFLOAT_TRY(x) { if (!(x)) return false; }
|
||||||
|
|
||||||
// Testing for https://wg21.link/N3652, adopted in C++14
|
|
||||||
#if __cpp_constexpr >= 201304
|
|
||||||
#define FASTFLOAT_CONSTEXPR14 constexpr
|
|
||||||
#else
|
|
||||||
#define FASTFLOAT_CONSTEXPR14
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Testing for relevant C++20 constexpr library features
|
|
||||||
#if FASTFLOAT_HAS_IS_CONSTANT_EVALUATED \
|
|
||||||
&& FASTFLOAT_HAS_BIT_CAST \
|
|
||||||
&& __cpp_lib_constexpr_algorithms >= 201806L /*For std::copy and std::fill*/
|
|
||||||
#define FASTFLOAT_CONSTEXPR20 constexpr
|
|
||||||
#define FASTFLOAT_IS_CONSTEXPR 1
|
|
||||||
#else
|
|
||||||
#define FASTFLOAT_CONSTEXPR20
|
|
||||||
#define FASTFLOAT_IS_CONSTEXPR 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace fast_float {
|
namespace fast_float {
|
||||||
|
|
||||||
fastfloat_really_inline constexpr bool cpp20_and_in_constexpr() {
|
fastfloat_really_inline constexpr bool cpp20_and_in_constexpr() {
|
||||||
|
|||||||
@ -31,7 +31,7 @@ for filename in ['LICENSE-MIT', 'LICENSE-APACHE']:
|
|||||||
processed_files[filename] = text
|
processed_files[filename] = text
|
||||||
|
|
||||||
# code
|
# code
|
||||||
for filename in [ 'float_common.h', 'fast_float.h', 'ascii_number.h',
|
for filename in [ 'constexpr_feature_detect.h', 'fast_float.h', 'float_common.h', 'ascii_number.h',
|
||||||
'fast_table.h', 'decimal_to_binary.h', 'bigint.h',
|
'fast_table.h', 'decimal_to_binary.h', 'bigint.h',
|
||||||
'ascii_number.h', 'digit_comparison.h', 'parse_number.h']:
|
'ascii_number.h', 'digit_comparison.h', 'parse_number.h']:
|
||||||
with open('include/fast_float/' + filename, encoding='utf8') as f:
|
with open('include/fast_float/' + filename, encoding='utf8') as f:
|
||||||
@ -75,7 +75,8 @@ def license_content(license_arg):
|
|||||||
text = ''.join([
|
text = ''.join([
|
||||||
processed_files['AUTHORS'], processed_files['CONTRIBUTORS'],
|
processed_files['AUTHORS'], processed_files['CONTRIBUTORS'],
|
||||||
*license_content(args.license),
|
*license_content(args.license),
|
||||||
processed_files['float_common.h'], processed_files['fast_float.h'],
|
processed_files['constexpr_feature_detect.h'],
|
||||||
|
processed_files['fast_float.h'], processed_files['float_common.h'],
|
||||||
processed_files['ascii_number.h'], processed_files['fast_table.h'],
|
processed_files['ascii_number.h'], processed_files['fast_table.h'],
|
||||||
processed_files['decimal_to_binary.h'], processed_files['bigint.h'],
|
processed_files['decimal_to_binary.h'], processed_files['bigint.h'],
|
||||||
processed_files['ascii_number.h'], processed_files['digit_comparison.h'],
|
processed_files['ascii_number.h'], processed_files['digit_comparison.h'],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user