mirror of
https://github.com/marzer/tomlplusplus.git
synced 2025-02-23 18:40:04 +00:00
fixed issues with dllexport + extern templates
This commit is contained in:
parent
18dfcf2314
commit
467ade4efc
@ -158,6 +158,7 @@ StatementMacros:
|
||||
- TOML_ATTR
|
||||
- TOML_CONST_GETTER
|
||||
- TOML_CONST_INLINE_GETTER
|
||||
- TOML_EXTERN
|
||||
- TOML_EXTERNAL_LINKAGE
|
||||
- TOML_INTERNAL_LINKAGE
|
||||
- TOML_MEMBER_ATTR
|
||||
|
1
cpp.hint
1
cpp.hint
@ -10,6 +10,7 @@
|
||||
#define TOML_CONST_INLINE_GETTER inline
|
||||
#define TOML_CONSTRAINED_TEMPLATE(cond, ...) template <__VA_ARGS__>
|
||||
#define TOML_EMPTY_BASES
|
||||
#define TOML_EXTERN
|
||||
#define TOML_EXTERN_NOEXCEPT(...)
|
||||
#define TOML_EXTERNAL_LINKAGE
|
||||
#define TOML_IMPL_NAMESPACE_END static_assert(true)
|
||||
|
@ -741,64 +741,17 @@ TOML_NAMESPACE_START
|
||||
template <typename T>
|
||||
node_view(T*) -> node_view<node>;
|
||||
|
||||
#if TOML_EXTERN_TEMPLATES
|
||||
/// \endcond
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
|
||||
extern template class TOML_API node_view<node>;
|
||||
extern template class TOML_API node_view<const node>;
|
||||
|
||||
#define TOML_EXTERN(name, T) \
|
||||
extern template TOML_API \
|
||||
optional<T> node_view<node>::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>); \
|
||||
extern template TOML_API \
|
||||
optional<T> node_view<const node>::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN(value_exact, std::string_view);
|
||||
TOML_EXTERN(value_exact, std::string);
|
||||
TOML_EXTERN(value_exact, const char*);
|
||||
TOML_EXTERN(value_exact, int64_t);
|
||||
TOML_EXTERN(value_exact, double);
|
||||
TOML_EXTERN(value_exact, date);
|
||||
TOML_EXTERN(value_exact, time);
|
||||
TOML_EXTERN(value_exact, date_time);
|
||||
TOML_EXTERN(value_exact, bool);
|
||||
TOML_EXTERN(value, std::string_view);
|
||||
TOML_EXTERN(value, std::string);
|
||||
TOML_EXTERN(value, const char*);
|
||||
TOML_EXTERN(value, signed char);
|
||||
TOML_EXTERN(value, signed short);
|
||||
TOML_EXTERN(value, signed int);
|
||||
TOML_EXTERN(value, signed long);
|
||||
TOML_EXTERN(value, signed long long);
|
||||
TOML_EXTERN(value, unsigned char);
|
||||
TOML_EXTERN(value, unsigned short);
|
||||
TOML_EXTERN(value, unsigned int);
|
||||
TOML_EXTERN(value, unsigned long);
|
||||
TOML_EXTERN(value, unsigned long long);
|
||||
TOML_EXTERN(value, double);
|
||||
TOML_EXTERN(value, float);
|
||||
TOML_EXTERN(value, date);
|
||||
TOML_EXTERN(value, time);
|
||||
TOML_EXTERN(value, date_time);
|
||||
TOML_EXTERN(value, bool);
|
||||
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN(value_exact, std::u8string_view);
|
||||
TOML_EXTERN(value_exact, std::u8string);
|
||||
TOML_EXTERN(value_exact, const char8_t*);
|
||||
TOML_EXTERN(value, std::u8string_view);
|
||||
TOML_EXTERN(value, std::u8string);
|
||||
TOML_EXTERN(value, const char8_t*);
|
||||
/// \cond
|
||||
#if (TOML_EXTERN_TEMPLATES && !TOML_IMPLEMENTATION) || TOML_INTELLISENSE
|
||||
#include "node_view_extern.inl"
|
||||
#endif
|
||||
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN(value_exact, std::wstring);
|
||||
TOML_EXTERN(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN
|
||||
|
||||
#endif // TOML_EXTERN_TEMPLATES
|
||||
|
||||
TOML_NAMESPACE_START
|
||||
{
|
||||
inline node::operator node_view<node>() noexcept
|
||||
{
|
||||
return node_view<node>(this);
|
||||
@ -808,9 +761,8 @@ TOML_NAMESPACE_START
|
||||
{
|
||||
return node_view<const node>(this);
|
||||
}
|
||||
|
||||
/// \endcond
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
/// \endcond
|
||||
|
||||
#include "header_end.h"
|
||||
|
@ -11,67 +11,11 @@
|
||||
#endif
|
||||
//# }}
|
||||
|
||||
#if TOML_EXTERN_TEMPLATES
|
||||
#include "node_view.h"
|
||||
#include "date_time.h"
|
||||
#include "header_start.h"
|
||||
|
||||
TOML_NAMESPACE_START
|
||||
{
|
||||
template class node_view<node>;
|
||||
template class node_view<const node>;
|
||||
|
||||
#define TOML_EXTERN(name, T) \
|
||||
template optional<T> node_view<node>::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>); \
|
||||
template optional<T> node_view<const node>::name<T>() \
|
||||
const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN(value_exact, std::string_view);
|
||||
TOML_EXTERN(value_exact, std::string);
|
||||
TOML_EXTERN(value_exact, const char*);
|
||||
TOML_EXTERN(value_exact, int64_t);
|
||||
TOML_EXTERN(value_exact, double);
|
||||
TOML_EXTERN(value_exact, date);
|
||||
TOML_EXTERN(value_exact, time);
|
||||
TOML_EXTERN(value_exact, date_time);
|
||||
TOML_EXTERN(value_exact, bool);
|
||||
TOML_EXTERN(value, std::string_view);
|
||||
TOML_EXTERN(value, std::string);
|
||||
TOML_EXTERN(value, const char*);
|
||||
TOML_EXTERN(value, signed char);
|
||||
TOML_EXTERN(value, signed short);
|
||||
TOML_EXTERN(value, signed int);
|
||||
TOML_EXTERN(value, signed long);
|
||||
TOML_EXTERN(value, signed long long);
|
||||
TOML_EXTERN(value, unsigned char);
|
||||
TOML_EXTERN(value, unsigned short);
|
||||
TOML_EXTERN(value, unsigned int);
|
||||
TOML_EXTERN(value, unsigned long);
|
||||
TOML_EXTERN(value, unsigned long long);
|
||||
TOML_EXTERN(value, double);
|
||||
TOML_EXTERN(value, float);
|
||||
TOML_EXTERN(value, date);
|
||||
TOML_EXTERN(value, time);
|
||||
TOML_EXTERN(value, date_time);
|
||||
TOML_EXTERN(value, bool);
|
||||
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN(value_exact, std::u8string_view);
|
||||
TOML_EXTERN(value_exact, std::u8string);
|
||||
TOML_EXTERN(value_exact, const char8_t*);
|
||||
TOML_EXTERN(value, std::u8string_view);
|
||||
TOML_EXTERN(value, std::u8string);
|
||||
TOML_EXTERN(value, const char8_t*);
|
||||
#endif
|
||||
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN(value_exact, std::wstring);
|
||||
TOML_EXTERN(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
#if (TOML_EXTERN_TEMPLATES && TOML_IMPLEMENTATION) || TOML_INTELLISENSE
|
||||
#include "node_view_extern.inl"
|
||||
#endif // TOML_EXTERN_TEMPLATES
|
||||
|
||||
#include "header_end.h"
|
||||
#endif // TOML_EXTERN_TEMPLATES
|
||||
|
72
include/toml++/impl/node_view_extern.inl
Normal file
72
include/toml++/impl/node_view_extern.inl
Normal file
@ -0,0 +1,72 @@
|
||||
//# This file is a part of toml++ and is subject to the the terms of the MIT license.
|
||||
//# Copyright (c) Mark Gillard <mark.gillard@outlook.com.au>
|
||||
//# See https://github.com/marzer/tomlplusplus/blob/master/LICENSE for the full license text.
|
||||
// SPDX-License-Identifier: MIT
|
||||
#pragma once
|
||||
/// \cond
|
||||
|
||||
#include "node_view.h"
|
||||
|
||||
TOML_NAMESPACE_START
|
||||
{
|
||||
TOML_EXTERN
|
||||
template class TOML_API node_view<node>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API node_view<const node>;
|
||||
|
||||
#define TOML_EXTERN_FUNC(name, T) \
|
||||
TOML_EXTERN \
|
||||
template TOML_API \
|
||||
optional<T> node_view<node>::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>); \
|
||||
TOML_EXTERN \
|
||||
template TOML_API \
|
||||
optional<T> node_view<const node>::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN_FUNC(value_exact, std::string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char*);
|
||||
TOML_EXTERN_FUNC(value_exact, int64_t);
|
||||
TOML_EXTERN_FUNC(value_exact, double);
|
||||
TOML_EXTERN_FUNC(value_exact, date);
|
||||
TOML_EXTERN_FUNC(value_exact, time);
|
||||
TOML_EXTERN_FUNC(value_exact, date_time);
|
||||
TOML_EXTERN_FUNC(value_exact, bool);
|
||||
TOML_EXTERN_FUNC(value, std::string_view);
|
||||
TOML_EXTERN_FUNC(value, std::string);
|
||||
TOML_EXTERN_FUNC(value, const char*);
|
||||
TOML_EXTERN_FUNC(value, signed char);
|
||||
TOML_EXTERN_FUNC(value, signed short);
|
||||
TOML_EXTERN_FUNC(value, signed int);
|
||||
TOML_EXTERN_FUNC(value, signed long);
|
||||
TOML_EXTERN_FUNC(value, signed long long);
|
||||
TOML_EXTERN_FUNC(value, unsigned char);
|
||||
TOML_EXTERN_FUNC(value, unsigned short);
|
||||
TOML_EXTERN_FUNC(value, unsigned int);
|
||||
TOML_EXTERN_FUNC(value, unsigned long);
|
||||
TOML_EXTERN_FUNC(value, unsigned long long);
|
||||
TOML_EXTERN_FUNC(value, double);
|
||||
TOML_EXTERN_FUNC(value, float);
|
||||
TOML_EXTERN_FUNC(value, date);
|
||||
TOML_EXTERN_FUNC(value, time);
|
||||
TOML_EXTERN_FUNC(value, date_time);
|
||||
TOML_EXTERN_FUNC(value, bool);
|
||||
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char8_t*);
|
||||
TOML_EXTERN_FUNC(value, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value, std::u8string);
|
||||
TOML_EXTERN_FUNC(value, const char8_t*);
|
||||
#endif
|
||||
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN_FUNC(value_exact, std::wstring);
|
||||
TOML_EXTERN_FUNC(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN_FUNC
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
|
||||
/// \endcond
|
@ -351,7 +351,7 @@
|
||||
#ifndef TOML_EXTERN_TEMPLATES
|
||||
#define TOML_EXTERN_TEMPLATES 1
|
||||
#endif
|
||||
#if (defined(DOXYGEN) || TOML_HEADER_ONLY) && !TOML_INTELLISENSE
|
||||
#if (defined(DOXYGEN) || TOML_HEADER_ONLY)
|
||||
#undef TOML_EXTERN_TEMPLATES
|
||||
#define TOML_EXTERN_TEMPLATES 0
|
||||
#endif
|
||||
@ -651,6 +651,11 @@
|
||||
#define POXY_IMPLEMENTATION_DETAIL(...) __VA_ARGS__
|
||||
#endif
|
||||
|
||||
#if TOML_IMPLEMENTATION
|
||||
#define TOML_EXTERN
|
||||
#else
|
||||
#define TOML_EXTERN extern
|
||||
#endif
|
||||
#if TOML_CLANG
|
||||
#define TOML_EXTERN_NOEXCEPT(...)
|
||||
#else
|
||||
|
@ -4,6 +4,7 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#pragma once
|
||||
#include "date_time.h"
|
||||
#include "node.h"
|
||||
#include "print_to_stream.h"
|
||||
#include "header_start.h"
|
||||
@ -1099,69 +1100,14 @@ TOML_NAMESPACE_START
|
||||
}
|
||||
}
|
||||
|
||||
#if TOML_EXTERN_TEMPLATES
|
||||
|
||||
extern template class TOML_API value<std::string>;
|
||||
extern template class TOML_API value<int64_t>;
|
||||
extern template class TOML_API value<double>;
|
||||
extern template class TOML_API value<bool>;
|
||||
extern template class TOML_API value<date>;
|
||||
extern template class TOML_API value<time>;
|
||||
extern template class TOML_API value<date_time>;
|
||||
|
||||
#define TOML_EXTERN(name, T) \
|
||||
extern template TOML_API \
|
||||
optional<T> node::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN(value_exact, std::string_view);
|
||||
TOML_EXTERN(value_exact, std::string);
|
||||
TOML_EXTERN(value_exact, const char*);
|
||||
TOML_EXTERN(value_exact, int64_t);
|
||||
TOML_EXTERN(value_exact, double);
|
||||
TOML_EXTERN(value_exact, date);
|
||||
TOML_EXTERN(value_exact, time);
|
||||
TOML_EXTERN(value_exact, date_time);
|
||||
TOML_EXTERN(value_exact, bool);
|
||||
TOML_EXTERN(value, std::string_view);
|
||||
TOML_EXTERN(value, std::string);
|
||||
TOML_EXTERN(value, const char*);
|
||||
TOML_EXTERN(value, signed char);
|
||||
TOML_EXTERN(value, signed short);
|
||||
TOML_EXTERN(value, signed int);
|
||||
TOML_EXTERN(value, signed long);
|
||||
TOML_EXTERN(value, signed long long);
|
||||
TOML_EXTERN(value, unsigned char);
|
||||
TOML_EXTERN(value, unsigned short);
|
||||
TOML_EXTERN(value, unsigned int);
|
||||
TOML_EXTERN(value, unsigned long);
|
||||
TOML_EXTERN(value, unsigned long long);
|
||||
TOML_EXTERN(value, double);
|
||||
TOML_EXTERN(value, float);
|
||||
TOML_EXTERN(value, date);
|
||||
TOML_EXTERN(value, time);
|
||||
TOML_EXTERN(value, date_time);
|
||||
TOML_EXTERN(value, bool);
|
||||
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN(value_exact, std::u8string_view);
|
||||
TOML_EXTERN(value_exact, std::u8string);
|
||||
TOML_EXTERN(value_exact, const char8_t*);
|
||||
TOML_EXTERN(value, std::u8string_view);
|
||||
TOML_EXTERN(value, std::u8string);
|
||||
TOML_EXTERN(value, const char8_t*);
|
||||
#endif
|
||||
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN(value_exact, std::wstring);
|
||||
TOML_EXTERN(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN
|
||||
|
||||
#endif // TOML_EXTERN_TEMPLATES
|
||||
|
||||
/// \endcond
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
|
||||
/// \cond
|
||||
#if (TOML_EXTERN_TEMPLATES && !TOML_IMPLEMENTATION) || TOML_INTELLISENSE
|
||||
#include "value_extern.inl"
|
||||
#endif
|
||||
/// \endcond
|
||||
|
||||
#include "header_end.h"
|
||||
|
@ -11,70 +11,11 @@
|
||||
#endif
|
||||
//# }}
|
||||
|
||||
#if TOML_EXTERN_TEMPLATES
|
||||
#include "value.h"
|
||||
#include "date_time.h"
|
||||
#include "header_start.h"
|
||||
|
||||
TOML_NAMESPACE_START
|
||||
{
|
||||
template class value<std::string>;
|
||||
template class value<int64_t>;
|
||||
template class value<double>;
|
||||
template class value<bool>;
|
||||
template class value<date>;
|
||||
template class value<time>;
|
||||
template class value<date_time>;
|
||||
|
||||
#define TOML_EXTERN(name, T) \
|
||||
template optional<T> node::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN(value_exact, std::string_view);
|
||||
TOML_EXTERN(value_exact, std::string);
|
||||
TOML_EXTERN(value_exact, const char*);
|
||||
TOML_EXTERN(value_exact, int64_t);
|
||||
TOML_EXTERN(value_exact, double);
|
||||
TOML_EXTERN(value_exact, date);
|
||||
TOML_EXTERN(value_exact, time);
|
||||
TOML_EXTERN(value_exact, date_time);
|
||||
TOML_EXTERN(value_exact, bool);
|
||||
TOML_EXTERN(value, std::string_view);
|
||||
TOML_EXTERN(value, std::string);
|
||||
TOML_EXTERN(value, const char*);
|
||||
TOML_EXTERN(value, signed char);
|
||||
TOML_EXTERN(value, signed short);
|
||||
TOML_EXTERN(value, signed int);
|
||||
TOML_EXTERN(value, signed long);
|
||||
TOML_EXTERN(value, signed long long);
|
||||
TOML_EXTERN(value, unsigned char);
|
||||
TOML_EXTERN(value, unsigned short);
|
||||
TOML_EXTERN(value, unsigned int);
|
||||
TOML_EXTERN(value, unsigned long);
|
||||
TOML_EXTERN(value, unsigned long long);
|
||||
TOML_EXTERN(value, double);
|
||||
TOML_EXTERN(value, float);
|
||||
TOML_EXTERN(value, date);
|
||||
TOML_EXTERN(value, time);
|
||||
TOML_EXTERN(value, date_time);
|
||||
TOML_EXTERN(value, bool);
|
||||
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN(value_exact, std::u8string_view);
|
||||
TOML_EXTERN(value_exact, std::u8string);
|
||||
TOML_EXTERN(value_exact, const char8_t*);
|
||||
TOML_EXTERN(value, std::u8string_view);
|
||||
TOML_EXTERN(value, std::u8string);
|
||||
TOML_EXTERN(value, const char8_t*);
|
||||
#endif
|
||||
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN(value_exact, std::wstring);
|
||||
TOML_EXTERN(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
#if (TOML_EXTERN_TEMPLATES && TOML_IMPLEMENTATION) || TOML_INTELLISENSE
|
||||
#include "value_extern.inl"
|
||||
#endif // TOML_EXTERN_TEMPLATES
|
||||
|
||||
#include "header_end.h"
|
||||
#endif // TOML_EXTERN_TEMPLATES
|
||||
|
77
include/toml++/impl/value_extern.inl
Normal file
77
include/toml++/impl/value_extern.inl
Normal file
@ -0,0 +1,77 @@
|
||||
//# This file is a part of toml++ and is subject to the the terms of the MIT license.
|
||||
//# Copyright (c) Mark Gillard <mark.gillard@outlook.com.au>
|
||||
//# See https://github.com/marzer/tomlplusplus/blob/master/LICENSE for the full license text.
|
||||
// SPDX-License-Identifier: MIT
|
||||
#pragma once
|
||||
/// \cond
|
||||
|
||||
#include "value.h"
|
||||
|
||||
TOML_NAMESPACE_START
|
||||
{
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<std::string>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<int64_t>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<double>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<bool>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<date>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<time>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<date_time>;
|
||||
|
||||
#define TOML_EXTERN_FUNC(name, T) \
|
||||
TOML_EXTERN \
|
||||
template TOML_API \
|
||||
optional<T> node::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN_FUNC(value_exact, std::string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char*);
|
||||
TOML_EXTERN_FUNC(value_exact, int64_t);
|
||||
TOML_EXTERN_FUNC(value_exact, double);
|
||||
TOML_EXTERN_FUNC(value_exact, date);
|
||||
TOML_EXTERN_FUNC(value_exact, time);
|
||||
TOML_EXTERN_FUNC(value_exact, date_time);
|
||||
TOML_EXTERN_FUNC(value_exact, bool);
|
||||
TOML_EXTERN_FUNC(value, std::string_view);
|
||||
TOML_EXTERN_FUNC(value, std::string);
|
||||
TOML_EXTERN_FUNC(value, const char*);
|
||||
TOML_EXTERN_FUNC(value, signed char);
|
||||
TOML_EXTERN_FUNC(value, signed short);
|
||||
TOML_EXTERN_FUNC(value, signed int);
|
||||
TOML_EXTERN_FUNC(value, signed long);
|
||||
TOML_EXTERN_FUNC(value, signed long long);
|
||||
TOML_EXTERN_FUNC(value, unsigned char);
|
||||
TOML_EXTERN_FUNC(value, unsigned short);
|
||||
TOML_EXTERN_FUNC(value, unsigned int);
|
||||
TOML_EXTERN_FUNC(value, unsigned long);
|
||||
TOML_EXTERN_FUNC(value, unsigned long long);
|
||||
TOML_EXTERN_FUNC(value, double);
|
||||
TOML_EXTERN_FUNC(value, float);
|
||||
TOML_EXTERN_FUNC(value, date);
|
||||
TOML_EXTERN_FUNC(value, time);
|
||||
TOML_EXTERN_FUNC(value, date_time);
|
||||
TOML_EXTERN_FUNC(value, bool);
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char8_t*);
|
||||
TOML_EXTERN_FUNC(value, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value, std::u8string);
|
||||
TOML_EXTERN_FUNC(value, const char8_t*);
|
||||
#endif
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN_FUNC(value_exact, std::wstring);
|
||||
TOML_EXTERN_FUNC(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN_FUNC
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
|
||||
/// \endcond
|
@ -93,8 +93,8 @@ TOML_POP_WARNINGS;
|
||||
#undef TOML_ENABLE_WARNINGS
|
||||
#undef TOML_EVAL_BOOL_0
|
||||
#undef TOML_EVAL_BOOL_1
|
||||
#undef TOML_EXTERN
|
||||
#undef TOML_EXTERN_NOEXCEPT
|
||||
#undef TOML_EXTERN_TEMPLATES
|
||||
#undef TOML_EXTERNAL_LINKAGE
|
||||
#undef TOML_FLOAT_CHARCONV
|
||||
#undef TOML_FLOAT128
|
||||
|
@ -72,6 +72,7 @@
|
||||
<ClInclude Include="include\toml++\impl\utf8.h" />
|
||||
<ClInclude Include="include\toml++\impl\value.h" />
|
||||
<ClInclude Include="include\toml++\impl\value.inl" />
|
||||
<ClInclude Include="include\toml++\impl\value_extern.inl" />
|
||||
<ClInclude Include="include\toml++\impl\version.h" />
|
||||
<ClInclude Include="include\toml++\impl\std_string.inl" />
|
||||
<ClInclude Include="include\toml++\toml.h" />
|
||||
@ -85,6 +86,7 @@
|
||||
<None Include=".runsettings" />
|
||||
<None Include="CODE_OF_CONDUCT.md" />
|
||||
<None Include="CONTRIBUTING.md" />
|
||||
<None Include="include\toml++\impl\node_view_extern.inl" />
|
||||
<None Include="LICENSE" />
|
||||
<None Include="README.md" />
|
||||
<None Include="cmake\install-rules.cmake" />
|
||||
|
@ -121,6 +121,9 @@
|
||||
<ClInclude Include="include\toml++\impl\std_initializer_list.h">
|
||||
<Filter>include\impl</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\toml++\impl\value_extern.inl">
|
||||
<Filter>include\impl</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="toml++.props" />
|
||||
@ -177,6 +180,9 @@
|
||||
<None Include="tools\clang_format.bat">
|
||||
<Filter>tools</Filter>
|
||||
</None>
|
||||
<None Include="include\toml++\impl\node_view_extern.inl">
|
||||
<Filter>include\impl</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Filter Include=".circleci">
|
||||
|
451
toml.hpp
451
toml.hpp
@ -370,7 +370,7 @@
|
||||
#ifndef TOML_EXTERN_TEMPLATES
|
||||
#define TOML_EXTERN_TEMPLATES 1
|
||||
#endif
|
||||
#if (defined(DOXYGEN) || TOML_HEADER_ONLY) && !TOML_INTELLISENSE
|
||||
#if (defined(DOXYGEN) || TOML_HEADER_ONLY)
|
||||
#undef TOML_EXTERN_TEMPLATES
|
||||
#define TOML_EXTERN_TEMPLATES 0
|
||||
#endif
|
||||
@ -665,6 +665,11 @@
|
||||
#define POXY_IMPLEMENTATION_DETAIL(...) __VA_ARGS__
|
||||
#endif
|
||||
|
||||
#if TOML_IMPLEMENTATION
|
||||
#define TOML_EXTERN
|
||||
#else
|
||||
#define TOML_EXTERN extern
|
||||
#endif
|
||||
#if TOML_CLANG
|
||||
#define TOML_EXTERN_NOEXCEPT(...)
|
||||
#else
|
||||
@ -3294,65 +3299,77 @@ TOML_NAMESPACE_START
|
||||
|
||||
template <typename T>
|
||||
node_view(T*) -> node_view<node>;
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
|
||||
#if TOML_EXTERN_TEMPLATES
|
||||
#if (TOML_EXTERN_TEMPLATES && !TOML_IMPLEMENTATION) || TOML_INTELLISENSE
|
||||
|
||||
extern template class TOML_API node_view<node>;
|
||||
extern template class TOML_API node_view<const node>;
|
||||
TOML_NAMESPACE_START
|
||||
{
|
||||
TOML_EXTERN
|
||||
template class TOML_API node_view<node>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API node_view<const node>;
|
||||
|
||||
#define TOML_EXTERN(name, T) \
|
||||
extern template TOML_API \
|
||||
#define TOML_EXTERN_FUNC(name, T) \
|
||||
TOML_EXTERN \
|
||||
template TOML_API \
|
||||
optional<T> node_view<node>::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>); \
|
||||
extern template TOML_API \
|
||||
TOML_EXTERN \
|
||||
template TOML_API \
|
||||
optional<T> node_view<const node>::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN(value_exact, std::string_view);
|
||||
TOML_EXTERN(value_exact, std::string);
|
||||
TOML_EXTERN(value_exact, const char*);
|
||||
TOML_EXTERN(value_exact, int64_t);
|
||||
TOML_EXTERN(value_exact, double);
|
||||
TOML_EXTERN(value_exact, date);
|
||||
TOML_EXTERN(value_exact, time);
|
||||
TOML_EXTERN(value_exact, date_time);
|
||||
TOML_EXTERN(value_exact, bool);
|
||||
TOML_EXTERN(value, std::string_view);
|
||||
TOML_EXTERN(value, std::string);
|
||||
TOML_EXTERN(value, const char*);
|
||||
TOML_EXTERN(value, signed char);
|
||||
TOML_EXTERN(value, signed short);
|
||||
TOML_EXTERN(value, signed int);
|
||||
TOML_EXTERN(value, signed long);
|
||||
TOML_EXTERN(value, signed long long);
|
||||
TOML_EXTERN(value, unsigned char);
|
||||
TOML_EXTERN(value, unsigned short);
|
||||
TOML_EXTERN(value, unsigned int);
|
||||
TOML_EXTERN(value, unsigned long);
|
||||
TOML_EXTERN(value, unsigned long long);
|
||||
TOML_EXTERN(value, double);
|
||||
TOML_EXTERN(value, float);
|
||||
TOML_EXTERN(value, date);
|
||||
TOML_EXTERN(value, time);
|
||||
TOML_EXTERN(value, date_time);
|
||||
TOML_EXTERN(value, bool);
|
||||
TOML_EXTERN_FUNC(value_exact, std::string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char*);
|
||||
TOML_EXTERN_FUNC(value_exact, int64_t);
|
||||
TOML_EXTERN_FUNC(value_exact, double);
|
||||
TOML_EXTERN_FUNC(value_exact, date);
|
||||
TOML_EXTERN_FUNC(value_exact, time);
|
||||
TOML_EXTERN_FUNC(value_exact, date_time);
|
||||
TOML_EXTERN_FUNC(value_exact, bool);
|
||||
TOML_EXTERN_FUNC(value, std::string_view);
|
||||
TOML_EXTERN_FUNC(value, std::string);
|
||||
TOML_EXTERN_FUNC(value, const char*);
|
||||
TOML_EXTERN_FUNC(value, signed char);
|
||||
TOML_EXTERN_FUNC(value, signed short);
|
||||
TOML_EXTERN_FUNC(value, signed int);
|
||||
TOML_EXTERN_FUNC(value, signed long);
|
||||
TOML_EXTERN_FUNC(value, signed long long);
|
||||
TOML_EXTERN_FUNC(value, unsigned char);
|
||||
TOML_EXTERN_FUNC(value, unsigned short);
|
||||
TOML_EXTERN_FUNC(value, unsigned int);
|
||||
TOML_EXTERN_FUNC(value, unsigned long);
|
||||
TOML_EXTERN_FUNC(value, unsigned long long);
|
||||
TOML_EXTERN_FUNC(value, double);
|
||||
TOML_EXTERN_FUNC(value, float);
|
||||
TOML_EXTERN_FUNC(value, date);
|
||||
TOML_EXTERN_FUNC(value, time);
|
||||
TOML_EXTERN_FUNC(value, date_time);
|
||||
TOML_EXTERN_FUNC(value, bool);
|
||||
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN(value_exact, std::u8string_view);
|
||||
TOML_EXTERN(value_exact, std::u8string);
|
||||
TOML_EXTERN(value_exact, const char8_t*);
|
||||
TOML_EXTERN(value, std::u8string_view);
|
||||
TOML_EXTERN(value, std::u8string);
|
||||
TOML_EXTERN(value, const char8_t*);
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char8_t*);
|
||||
TOML_EXTERN_FUNC(value, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value, std::u8string);
|
||||
TOML_EXTERN_FUNC(value, const char8_t*);
|
||||
#endif
|
||||
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN(value_exact, std::wstring);
|
||||
TOML_EXTERN(value, std::wstring);
|
||||
TOML_EXTERN_FUNC(value_exact, std::wstring);
|
||||
TOML_EXTERN_FUNC(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN
|
||||
#undef TOML_EXTERN_FUNC
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
|
||||
#endif // TOML_EXTERN_TEMPLATES
|
||||
#endif
|
||||
|
||||
TOML_NAMESPACE_START
|
||||
{
|
||||
inline node::operator node_view<node>() noexcept
|
||||
{
|
||||
return node_view<node>(this);
|
||||
@ -4324,70 +4341,80 @@ TOML_NAMESPACE_START
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if TOML_EXTERN_TEMPLATES
|
||||
|
||||
extern template class TOML_API value<std::string>;
|
||||
extern template class TOML_API value<int64_t>;
|
||||
extern template class TOML_API value<double>;
|
||||
extern template class TOML_API value<bool>;
|
||||
extern template class TOML_API value<date>;
|
||||
extern template class TOML_API value<time>;
|
||||
extern template class TOML_API value<date_time>;
|
||||
|
||||
#define TOML_EXTERN(name, T) \
|
||||
extern template TOML_API \
|
||||
optional<T> node::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN(value_exact, std::string_view);
|
||||
TOML_EXTERN(value_exact, std::string);
|
||||
TOML_EXTERN(value_exact, const char*);
|
||||
TOML_EXTERN(value_exact, int64_t);
|
||||
TOML_EXTERN(value_exact, double);
|
||||
TOML_EXTERN(value_exact, date);
|
||||
TOML_EXTERN(value_exact, time);
|
||||
TOML_EXTERN(value_exact, date_time);
|
||||
TOML_EXTERN(value_exact, bool);
|
||||
TOML_EXTERN(value, std::string_view);
|
||||
TOML_EXTERN(value, std::string);
|
||||
TOML_EXTERN(value, const char*);
|
||||
TOML_EXTERN(value, signed char);
|
||||
TOML_EXTERN(value, signed short);
|
||||
TOML_EXTERN(value, signed int);
|
||||
TOML_EXTERN(value, signed long);
|
||||
TOML_EXTERN(value, signed long long);
|
||||
TOML_EXTERN(value, unsigned char);
|
||||
TOML_EXTERN(value, unsigned short);
|
||||
TOML_EXTERN(value, unsigned int);
|
||||
TOML_EXTERN(value, unsigned long);
|
||||
TOML_EXTERN(value, unsigned long long);
|
||||
TOML_EXTERN(value, double);
|
||||
TOML_EXTERN(value, float);
|
||||
TOML_EXTERN(value, date);
|
||||
TOML_EXTERN(value, time);
|
||||
TOML_EXTERN(value, date_time);
|
||||
TOML_EXTERN(value, bool);
|
||||
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN(value_exact, std::u8string_view);
|
||||
TOML_EXTERN(value_exact, std::u8string);
|
||||
TOML_EXTERN(value_exact, const char8_t*);
|
||||
TOML_EXTERN(value, std::u8string_view);
|
||||
TOML_EXTERN(value, std::u8string);
|
||||
TOML_EXTERN(value, const char8_t*);
|
||||
#endif
|
||||
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN(value_exact, std::wstring);
|
||||
TOML_EXTERN(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN
|
||||
|
||||
#endif // TOML_EXTERN_TEMPLATES
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
|
||||
#if (TOML_EXTERN_TEMPLATES && !TOML_IMPLEMENTATION) || TOML_INTELLISENSE
|
||||
|
||||
TOML_NAMESPACE_START
|
||||
{
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<std::string>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<int64_t>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<double>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<bool>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<date>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<time>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<date_time>;
|
||||
|
||||
#define TOML_EXTERN_FUNC(name, T) \
|
||||
TOML_EXTERN \
|
||||
template TOML_API \
|
||||
optional<T> node::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN_FUNC(value_exact, std::string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char*);
|
||||
TOML_EXTERN_FUNC(value_exact, int64_t);
|
||||
TOML_EXTERN_FUNC(value_exact, double);
|
||||
TOML_EXTERN_FUNC(value_exact, date);
|
||||
TOML_EXTERN_FUNC(value_exact, time);
|
||||
TOML_EXTERN_FUNC(value_exact, date_time);
|
||||
TOML_EXTERN_FUNC(value_exact, bool);
|
||||
TOML_EXTERN_FUNC(value, std::string_view);
|
||||
TOML_EXTERN_FUNC(value, std::string);
|
||||
TOML_EXTERN_FUNC(value, const char*);
|
||||
TOML_EXTERN_FUNC(value, signed char);
|
||||
TOML_EXTERN_FUNC(value, signed short);
|
||||
TOML_EXTERN_FUNC(value, signed int);
|
||||
TOML_EXTERN_FUNC(value, signed long);
|
||||
TOML_EXTERN_FUNC(value, signed long long);
|
||||
TOML_EXTERN_FUNC(value, unsigned char);
|
||||
TOML_EXTERN_FUNC(value, unsigned short);
|
||||
TOML_EXTERN_FUNC(value, unsigned int);
|
||||
TOML_EXTERN_FUNC(value, unsigned long);
|
||||
TOML_EXTERN_FUNC(value, unsigned long long);
|
||||
TOML_EXTERN_FUNC(value, double);
|
||||
TOML_EXTERN_FUNC(value, float);
|
||||
TOML_EXTERN_FUNC(value, date);
|
||||
TOML_EXTERN_FUNC(value, time);
|
||||
TOML_EXTERN_FUNC(value, date_time);
|
||||
TOML_EXTERN_FUNC(value, bool);
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char8_t*);
|
||||
TOML_EXTERN_FUNC(value, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value, std::u8string);
|
||||
TOML_EXTERN_FUNC(value, const char8_t*);
|
||||
#endif
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN_FUNC(value_exact, std::wstring);
|
||||
TOML_EXTERN_FUNC(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN_FUNC
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
|
||||
#endif
|
||||
|
||||
TOML_POP_WARNINGS;
|
||||
|
||||
//******** impl/make_node.h ******************************************************************************************
|
||||
@ -8285,145 +8312,157 @@ TOML_POP_WARNINGS;
|
||||
|
||||
//******** impl/node_view.inl ****************************************************************************************
|
||||
|
||||
#if TOML_EXTERN_TEMPLATES
|
||||
|
||||
TOML_PUSH_WARNINGS;
|
||||
TOML_DISABLE_SPAM_WARNINGS;
|
||||
TOML_DISABLE_SWITCH_WARNINGS;
|
||||
|
||||
#if (TOML_EXTERN_TEMPLATES && TOML_IMPLEMENTATION) || TOML_INTELLISENSE
|
||||
|
||||
TOML_NAMESPACE_START
|
||||
{
|
||||
template class node_view<node>;
|
||||
template class node_view<const node>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API node_view<node>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API node_view<const node>;
|
||||
|
||||
#define TOML_EXTERN(name, T) \
|
||||
template optional<T> node_view<node>::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>); \
|
||||
template optional<T> node_view<const node>::name<T>() \
|
||||
const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
#define TOML_EXTERN_FUNC(name, T) \
|
||||
TOML_EXTERN \
|
||||
template TOML_API \
|
||||
optional<T> node_view<node>::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>); \
|
||||
TOML_EXTERN \
|
||||
template TOML_API \
|
||||
optional<T> node_view<const node>::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN(value_exact, std::string_view);
|
||||
TOML_EXTERN(value_exact, std::string);
|
||||
TOML_EXTERN(value_exact, const char*);
|
||||
TOML_EXTERN(value_exact, int64_t);
|
||||
TOML_EXTERN(value_exact, double);
|
||||
TOML_EXTERN(value_exact, date);
|
||||
TOML_EXTERN(value_exact, time);
|
||||
TOML_EXTERN(value_exact, date_time);
|
||||
TOML_EXTERN(value_exact, bool);
|
||||
TOML_EXTERN(value, std::string_view);
|
||||
TOML_EXTERN(value, std::string);
|
||||
TOML_EXTERN(value, const char*);
|
||||
TOML_EXTERN(value, signed char);
|
||||
TOML_EXTERN(value, signed short);
|
||||
TOML_EXTERN(value, signed int);
|
||||
TOML_EXTERN(value, signed long);
|
||||
TOML_EXTERN(value, signed long long);
|
||||
TOML_EXTERN(value, unsigned char);
|
||||
TOML_EXTERN(value, unsigned short);
|
||||
TOML_EXTERN(value, unsigned int);
|
||||
TOML_EXTERN(value, unsigned long);
|
||||
TOML_EXTERN(value, unsigned long long);
|
||||
TOML_EXTERN(value, double);
|
||||
TOML_EXTERN(value, float);
|
||||
TOML_EXTERN(value, date);
|
||||
TOML_EXTERN(value, time);
|
||||
TOML_EXTERN(value, date_time);
|
||||
TOML_EXTERN(value, bool);
|
||||
TOML_EXTERN_FUNC(value_exact, std::string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char*);
|
||||
TOML_EXTERN_FUNC(value_exact, int64_t);
|
||||
TOML_EXTERN_FUNC(value_exact, double);
|
||||
TOML_EXTERN_FUNC(value_exact, date);
|
||||
TOML_EXTERN_FUNC(value_exact, time);
|
||||
TOML_EXTERN_FUNC(value_exact, date_time);
|
||||
TOML_EXTERN_FUNC(value_exact, bool);
|
||||
TOML_EXTERN_FUNC(value, std::string_view);
|
||||
TOML_EXTERN_FUNC(value, std::string);
|
||||
TOML_EXTERN_FUNC(value, const char*);
|
||||
TOML_EXTERN_FUNC(value, signed char);
|
||||
TOML_EXTERN_FUNC(value, signed short);
|
||||
TOML_EXTERN_FUNC(value, signed int);
|
||||
TOML_EXTERN_FUNC(value, signed long);
|
||||
TOML_EXTERN_FUNC(value, signed long long);
|
||||
TOML_EXTERN_FUNC(value, unsigned char);
|
||||
TOML_EXTERN_FUNC(value, unsigned short);
|
||||
TOML_EXTERN_FUNC(value, unsigned int);
|
||||
TOML_EXTERN_FUNC(value, unsigned long);
|
||||
TOML_EXTERN_FUNC(value, unsigned long long);
|
||||
TOML_EXTERN_FUNC(value, double);
|
||||
TOML_EXTERN_FUNC(value, float);
|
||||
TOML_EXTERN_FUNC(value, date);
|
||||
TOML_EXTERN_FUNC(value, time);
|
||||
TOML_EXTERN_FUNC(value, date_time);
|
||||
TOML_EXTERN_FUNC(value, bool);
|
||||
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN(value_exact, std::u8string_view);
|
||||
TOML_EXTERN(value_exact, std::u8string);
|
||||
TOML_EXTERN(value_exact, const char8_t*);
|
||||
TOML_EXTERN(value, std::u8string_view);
|
||||
TOML_EXTERN(value, std::u8string);
|
||||
TOML_EXTERN(value, const char8_t*);
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char8_t*);
|
||||
TOML_EXTERN_FUNC(value, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value, std::u8string);
|
||||
TOML_EXTERN_FUNC(value, const char8_t*);
|
||||
#endif
|
||||
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN(value_exact, std::wstring);
|
||||
TOML_EXTERN(value, std::wstring);
|
||||
TOML_EXTERN_FUNC(value_exact, std::wstring);
|
||||
TOML_EXTERN_FUNC(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN
|
||||
#undef TOML_EXTERN_FUNC
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
|
||||
TOML_POP_WARNINGS;
|
||||
|
||||
#endif // TOML_EXTERN_TEMPLATES
|
||||
|
||||
TOML_POP_WARNINGS;
|
||||
|
||||
//******** impl/value.inl ********************************************************************************************
|
||||
|
||||
#if TOML_EXTERN_TEMPLATES
|
||||
|
||||
TOML_PUSH_WARNINGS;
|
||||
TOML_DISABLE_SPAM_WARNINGS;
|
||||
TOML_DISABLE_SWITCH_WARNINGS;
|
||||
|
||||
#if (TOML_EXTERN_TEMPLATES && TOML_IMPLEMENTATION) || TOML_INTELLISENSE
|
||||
|
||||
TOML_NAMESPACE_START
|
||||
{
|
||||
template class value<std::string>;
|
||||
template class value<int64_t>;
|
||||
template class value<double>;
|
||||
template class value<bool>;
|
||||
template class value<date>;
|
||||
template class value<time>;
|
||||
template class value<date_time>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<std::string>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<int64_t>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<double>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<bool>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<date>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<time>;
|
||||
TOML_EXTERN
|
||||
template class TOML_API value<date_time>;
|
||||
|
||||
#define TOML_EXTERN(name, T) \
|
||||
template optional<T> node::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN(value_exact, std::string_view);
|
||||
TOML_EXTERN(value_exact, std::string);
|
||||
TOML_EXTERN(value_exact, const char*);
|
||||
TOML_EXTERN(value_exact, int64_t);
|
||||
TOML_EXTERN(value_exact, double);
|
||||
TOML_EXTERN(value_exact, date);
|
||||
TOML_EXTERN(value_exact, time);
|
||||
TOML_EXTERN(value_exact, date_time);
|
||||
TOML_EXTERN(value_exact, bool);
|
||||
TOML_EXTERN(value, std::string_view);
|
||||
TOML_EXTERN(value, std::string);
|
||||
TOML_EXTERN(value, const char*);
|
||||
TOML_EXTERN(value, signed char);
|
||||
TOML_EXTERN(value, signed short);
|
||||
TOML_EXTERN(value, signed int);
|
||||
TOML_EXTERN(value, signed long);
|
||||
TOML_EXTERN(value, signed long long);
|
||||
TOML_EXTERN(value, unsigned char);
|
||||
TOML_EXTERN(value, unsigned short);
|
||||
TOML_EXTERN(value, unsigned int);
|
||||
TOML_EXTERN(value, unsigned long);
|
||||
TOML_EXTERN(value, unsigned long long);
|
||||
TOML_EXTERN(value, double);
|
||||
TOML_EXTERN(value, float);
|
||||
TOML_EXTERN(value, date);
|
||||
TOML_EXTERN(value, time);
|
||||
TOML_EXTERN(value, date_time);
|
||||
TOML_EXTERN(value, bool);
|
||||
#define TOML_EXTERN_FUNC(name, T) \
|
||||
TOML_EXTERN \
|
||||
template TOML_API \
|
||||
optional<T> node::name<T>() const TOML_EXTERN_NOEXCEPT(impl::value_retrieval_is_nothrow<T>)
|
||||
|
||||
TOML_EXTERN_FUNC(value_exact, std::string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char*);
|
||||
TOML_EXTERN_FUNC(value_exact, int64_t);
|
||||
TOML_EXTERN_FUNC(value_exact, double);
|
||||
TOML_EXTERN_FUNC(value_exact, date);
|
||||
TOML_EXTERN_FUNC(value_exact, time);
|
||||
TOML_EXTERN_FUNC(value_exact, date_time);
|
||||
TOML_EXTERN_FUNC(value_exact, bool);
|
||||
TOML_EXTERN_FUNC(value, std::string_view);
|
||||
TOML_EXTERN_FUNC(value, std::string);
|
||||
TOML_EXTERN_FUNC(value, const char*);
|
||||
TOML_EXTERN_FUNC(value, signed char);
|
||||
TOML_EXTERN_FUNC(value, signed short);
|
||||
TOML_EXTERN_FUNC(value, signed int);
|
||||
TOML_EXTERN_FUNC(value, signed long);
|
||||
TOML_EXTERN_FUNC(value, signed long long);
|
||||
TOML_EXTERN_FUNC(value, unsigned char);
|
||||
TOML_EXTERN_FUNC(value, unsigned short);
|
||||
TOML_EXTERN_FUNC(value, unsigned int);
|
||||
TOML_EXTERN_FUNC(value, unsigned long);
|
||||
TOML_EXTERN_FUNC(value, unsigned long long);
|
||||
TOML_EXTERN_FUNC(value, double);
|
||||
TOML_EXTERN_FUNC(value, float);
|
||||
TOML_EXTERN_FUNC(value, date);
|
||||
TOML_EXTERN_FUNC(value, time);
|
||||
TOML_EXTERN_FUNC(value, date_time);
|
||||
TOML_EXTERN_FUNC(value, bool);
|
||||
#if TOML_HAS_CHAR8
|
||||
TOML_EXTERN(value_exact, std::u8string_view);
|
||||
TOML_EXTERN(value_exact, std::u8string);
|
||||
TOML_EXTERN(value_exact, const char8_t*);
|
||||
TOML_EXTERN(value, std::u8string_view);
|
||||
TOML_EXTERN(value, std::u8string);
|
||||
TOML_EXTERN(value, const char8_t*);
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value_exact, std::u8string);
|
||||
TOML_EXTERN_FUNC(value_exact, const char8_t*);
|
||||
TOML_EXTERN_FUNC(value, std::u8string_view);
|
||||
TOML_EXTERN_FUNC(value, std::u8string);
|
||||
TOML_EXTERN_FUNC(value, const char8_t*);
|
||||
#endif
|
||||
|
||||
#if TOML_WINDOWS_COMPAT
|
||||
TOML_EXTERN(value_exact, std::wstring);
|
||||
TOML_EXTERN(value, std::wstring);
|
||||
TOML_EXTERN_FUNC(value_exact, std::wstring);
|
||||
TOML_EXTERN_FUNC(value, std::wstring);
|
||||
#endif
|
||||
|
||||
#undef TOML_EXTERN
|
||||
#undef TOML_EXTERN_FUNC
|
||||
}
|
||||
TOML_NAMESPACE_END;
|
||||
|
||||
TOML_POP_WARNINGS;
|
||||
|
||||
#endif // TOML_EXTERN_TEMPLATES
|
||||
|
||||
TOML_POP_WARNINGS;
|
||||
|
||||
//******** impl/array.inl ********************************************************************************************
|
||||
|
||||
TOML_PUSH_WARNINGS;
|
||||
@ -13259,8 +13298,8 @@ TOML_POP_WARNINGS;
|
||||
#undef TOML_ENABLE_WARNINGS
|
||||
#undef TOML_EVAL_BOOL_0
|
||||
#undef TOML_EVAL_BOOL_1
|
||||
#undef TOML_EXTERN
|
||||
#undef TOML_EXTERN_NOEXCEPT
|
||||
#undef TOML_EXTERN_TEMPLATES
|
||||
#undef TOML_EXTERNAL_LINKAGE
|
||||
#undef TOML_FLOAT_CHARCONV
|
||||
#undef TOML_FLOAT128
|
||||
|
@ -18,7 +18,9 @@ class Preprocessor:
|
||||
__re_includes = re.compile(r'^\s*#\s*include\s+"(.+?)".*?$', re.I | re.M)
|
||||
__multiples_allowed = [
|
||||
r'impl/header_start.h',
|
||||
r'impl/header_end.h'
|
||||
r'impl/header_end.h',
|
||||
r'impl/value_extern.inl',
|
||||
r'impl/node_view_extern.inl',
|
||||
]
|
||||
|
||||
def __init__(self, file):
|
||||
@ -194,6 +196,7 @@ def main():
|
||||
r'TOML_API',
|
||||
r'TOML_CONFIG_HEADER',
|
||||
r'TOML_EXCEPTIONS',
|
||||
r'TOML_EXTERN_TEMPLATES',
|
||||
r'TOML_HEADER_ONLY',
|
||||
r'TOML_LANG_MAJOR',
|
||||
r'TOML_LANG_MINOR',
|
||||
|
Loading…
x
Reference in New Issue
Block a user