mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-01-23 20:46:37 +00:00
auto_config.hpp 追加
This commit is contained in:
parent
3c301adae8
commit
e4c1e4ba7a
4 changed files with 56 additions and 9 deletions
|
@ -12,7 +12,7 @@
|
||||||
#include <sprout/fixed_container/functions.hpp>
|
#include <sprout/fixed_container/functions.hpp>
|
||||||
#include <sprout/iterator.hpp>
|
#include <sprout/iterator.hpp>
|
||||||
#include HDR_ALGORITHM_SSCRISK_CEL_OR_SPROUT_DETAIL
|
#include HDR_ALGORITHM_SSCRISK_CEL_OR_SPROUT_DETAIL
|
||||||
#ifdef SPROUT_CONFIG_USE_INDEX_ITERATOR_IMPLEMENTATION
|
#if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION
|
||||||
# include <sprout/iterator/index_iterator.hpp>
|
# include <sprout/iterator/index_iterator.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ namespace sprout {
|
||||||
class array {
|
class array {
|
||||||
public:
|
public:
|
||||||
typedef T value_type;
|
typedef T value_type;
|
||||||
#ifdef SPROUT_CONFIG_USE_INDEX_ITERATOR_IMPLEMENTATION
|
#if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION
|
||||||
typedef sprout::index_iterator<array&> iterator;
|
typedef sprout::index_iterator<array&> iterator;
|
||||||
typedef sprout::index_iterator<array const&> const_iterator;
|
typedef sprout::index_iterator<array const&> const_iterator;
|
||||||
#else
|
#else
|
||||||
|
@ -59,7 +59,7 @@ namespace sprout {
|
||||||
throw std::out_of_range("array<>: index out of range");
|
throw std::out_of_range("array<>: index out of range");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef SPROUT_CONFIG_USE_INDEX_ITERATOR_IMPLEMENTATION
|
#if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION
|
||||||
iterator begin() SPROUT_NOEXCEPT {
|
iterator begin() SPROUT_NOEXCEPT {
|
||||||
return iterator(*this, 0);
|
return iterator(*this, 0);
|
||||||
}
|
}
|
||||||
|
|
41
sprout/auto_config.hpp
Normal file
41
sprout/auto_config.hpp
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#ifndef SPROUT_AUTO_CONFIG_HPP
|
||||||
|
#define SPROUT_AUTO_CONFIG_HPP
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
|
||||||
|
//
|
||||||
|
// SPROUT_CONFIG_DISABLE_CONSTEXPR
|
||||||
|
//
|
||||||
|
#ifndef SPROUT_CONFIG_DISABLE_CONSTEXPR
|
||||||
|
# ifdef BOOST_NO_CONSTEXPR
|
||||||
|
# if !defined(__GNUC__) \
|
||||||
|
|| defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__))
|
||||||
|
# define SPROUT_CONFIG_DISABLE_CONSTEXPR
|
||||||
|
# endif
|
||||||
|
# endif // #ifdef BOOST_NO_CONSTEXPR
|
||||||
|
#endif // #ifndef SPROUT_CONFIG_DISABLE_CONSTEXPR
|
||||||
|
|
||||||
|
//
|
||||||
|
// SPROUT_CONFIG_DISABLE_NOEXCEPT
|
||||||
|
//
|
||||||
|
#ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT
|
||||||
|
# ifdef BOOST_NO_NOEXCEPT
|
||||||
|
# if !defined(__GNUC__) \
|
||||||
|
|| defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__))
|
||||||
|
# define SPROUT_CONFIG_DISABLE_NOEXCEPT
|
||||||
|
# endif
|
||||||
|
# endif // #ifdef BOOST_NO_NOEXCEPT
|
||||||
|
#endif // #ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT
|
||||||
|
|
||||||
|
//
|
||||||
|
// SPROUT_CONFIG_USE_SSCRISK_CEL
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION
|
||||||
|
//
|
||||||
|
#ifndef SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION
|
||||||
|
# define SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION
|
||||||
|
#endif // #ifndef SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION
|
||||||
|
|
||||||
|
#endif // #ifndef SPROUT_AUTO_CONFIG_HPP
|
|
@ -29,4 +29,10 @@
|
||||||
# define NS_SSCRISK_CEL_OR_SPROUT_DETAIL sscrisk::cel
|
# define NS_SSCRISK_CEL_OR_SPROUT_DETAIL sscrisk::cel
|
||||||
#endif // #ifndef SPROUT_CONFIG_USE_SSCRISK_CEL
|
#endif // #ifndef SPROUT_CONFIG_USE_SSCRISK_CEL
|
||||||
|
|
||||||
|
#ifndef SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION
|
||||||
|
# define SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION 0
|
||||||
|
#else // #ifndef SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION
|
||||||
|
# define SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION 1
|
||||||
|
#endif // #ifndef SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION
|
||||||
|
|
||||||
#endif // #ifndef SPROUT_CONFIG_HPP
|
#endif // #ifndef SPROUT_CONFIG_HPP
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
#include <sprout/operation/fixed/append_front.hpp>
|
#include <sprout/operation/fixed/append_front.hpp>
|
||||||
#include <sprout/iterator.hpp>
|
#include <sprout/iterator.hpp>
|
||||||
#include HDR_ALGORITHM_SSCRISK_CEL_OR_SPROUT_DETAIL
|
#include HDR_ALGORITHM_SSCRISK_CEL_OR_SPROUT_DETAIL
|
||||||
#ifdef SPROUT_CONFIG_USE_INDEX_ITERATOR_IMPLEMENTATION
|
#if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION
|
||||||
# include <algorithm>
|
# include <algorithm>
|
||||||
# include <sprout/iterator/index_iterator.hpp>
|
# include <sprout/iterator/index_iterator.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
@ -88,7 +88,7 @@ namespace sprout {
|
||||||
static SPROUT_CONSTEXPR int_type eof() SPROUT_NOEXCEPT {
|
static SPROUT_CONSTEXPR int_type eof() SPROUT_NOEXCEPT {
|
||||||
return impl_type::eof();
|
return impl_type::eof();
|
||||||
}
|
}
|
||||||
#ifdef SPROUT_CONFIG_USE_INDEX_ITERATOR_IMPLEMENTATION
|
#if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION
|
||||||
template<typename CharIterator>
|
template<typename CharIterator>
|
||||||
static SPROUT_CONSTEXPR int compare(CharIterator s1, CharIterator s2, std::size_t n) {
|
static SPROUT_CONSTEXPR int compare(CharIterator s1, CharIterator s2, std::size_t n) {
|
||||||
return !n ? 0
|
return !n ? 0
|
||||||
|
@ -135,7 +135,7 @@ namespace sprout {
|
||||||
class basic_string {
|
class basic_string {
|
||||||
public:
|
public:
|
||||||
typedef T value_type;
|
typedef T value_type;
|
||||||
#ifdef SPROUT_CONFIG_USE_INDEX_ITERATOR_IMPLEMENTATION
|
#if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION
|
||||||
typedef sprout::index_iterator<basic_string&> iterator;
|
typedef sprout::index_iterator<basic_string&> iterator;
|
||||||
typedef sprout::index_iterator<basic_string const&> const_iterator;
|
typedef sprout::index_iterator<basic_string const&> const_iterator;
|
||||||
#else
|
#else
|
||||||
|
@ -179,7 +179,7 @@ namespace sprout {
|
||||||
{
|
{
|
||||||
return sprout::basic_string<T, N, Traits>{{(Indexes < n ? s[Indexes] : T())...}, n};
|
return sprout::basic_string<T, N, Traits>{{(Indexes < n ? s[Indexes] : T())...}, n};
|
||||||
}
|
}
|
||||||
#ifdef SPROUT_CONFIG_USE_INDEX_ITERATOR_IMPLEMENTATION
|
#if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION
|
||||||
static SPROUT_CONSTEXPR int compare_impl_1(const_iterator dest, size_type pos1, size_type n1, const_iterator s, size_type n2) {
|
static SPROUT_CONSTEXPR int compare_impl_1(const_iterator dest, size_type pos1, size_type n1, const_iterator s, size_type n2) {
|
||||||
return compare_impl_2(
|
return compare_impl_2(
|
||||||
traits_type::compare(dest + pos1, s, NS_SSCRISK_CEL_OR_SPROUT_DETAIL::min(n1, n2)),
|
traits_type::compare(dest + pos1, s, NS_SSCRISK_CEL_OR_SPROUT_DETAIL::min(n1, n2)),
|
||||||
|
@ -224,7 +224,7 @@ namespace sprout {
|
||||||
throw std::out_of_range("basic_string<>: index out of range");
|
throw std::out_of_range("basic_string<>: index out of range");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef SPROUT_CONFIG_USE_INDEX_ITERATOR_IMPLEMENTATION
|
#if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION
|
||||||
iterator begin() SPROUT_NOEXCEPT {
|
iterator begin() SPROUT_NOEXCEPT {
|
||||||
return iterator(*this, 0);
|
return iterator(*this, 0);
|
||||||
}
|
}
|
||||||
|
@ -430,7 +430,7 @@ namespace sprout {
|
||||||
: throw "basic_string<>: index out of range"
|
: throw "basic_string<>: index out of range"
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
#ifdef SPROUT_CONFIG_USE_INDEX_ITERATOR_IMPLEMENTATION
|
#if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION
|
||||||
basic_string<T, N, Traits>& assign(const_iterator s, size_type n) {
|
basic_string<T, N, Traits>& assign(const_iterator s, size_type n) {
|
||||||
maxcheck(n);
|
maxcheck(n);
|
||||||
for (size_type i = 0; i < n; ++i) {
|
for (size_type i = 0; i < n; ++i) {
|
||||||
|
|
Loading…
Reference in a new issue