diff options
author | Adrian Kummerlaender | 2014-11-13 18:44:33 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2014-11-13 18:44:33 +0100 |
commit | b9d62d5ce1e3f92a8ab34239c6e4044ad57180df (patch) | |
tree | 58907e0e73ee745e2faea39379f859be0030ae1c | |
parent | aa7afee1047a2de790a70dceda9079c8d5d01850 (diff) | |
download | InputXSLT-b9d62d5ce1e3f92a8ab34239c6e4044ad57180df.tar InputXSLT-b9d62d5ce1e3f92a8ab34239c6e4044ad57180df.tar.gz InputXSLT-b9d62d5ce1e3f92a8ab34239c6e4044ad57180df.tar.bz2 InputXSLT-b9d62d5ce1e3f92a8ab34239c6e4044ad57180df.tar.lz InputXSLT-b9d62d5ce1e3f92a8ab34239c6e4044ad57180df.tar.xz InputXSLT-b9d62d5ce1e3f92a8ab34239c6e4044ad57180df.tar.zst InputXSLT-b9d62d5ce1e3f92a8ab34239c6e4044ad57180df.zip |
Replaced custom `Sequence` implementation with C++14 `std::integer_sequence`
* both the `Sequence` and `IndexSequence` helper templates were developed prior to C++14
* as the new standard covers exactly the functionality provided by these templates they should be replaced
** they are used as indexes to the _Xalan_ parameter array in `FunctionBase`
-rw-r--r-- | src/function/base.h | 10 | ||||
-rw-r--r-- | src/support/type/sequence.h | 29 |
2 files changed, 5 insertions, 34 deletions
diff --git a/src/function/base.h b/src/function/base.h index fe1e821..b86aece 100644 --- a/src/function/base.h +++ b/src/function/base.h @@ -9,13 +9,13 @@ #include <memory> #include <tuple> +#include <utility> #include "common.h" #include "support/xalan_string.h" #include "support/filesystem_context.h" #include "support/include_entity_resolver.h" #include "support/dom/document_cache.h" -#include "support/type/sequence.h" #include "support/type/filter.h" #include "support/type/xobject_value.h" @@ -56,7 +56,7 @@ class FunctionBase : public xalan::Function { xalan::XalanDocument* const domDocument( this->callConstructDocument( parameters, - typename IndexSequence<maximum_parameter_count>::type() + std::make_integer_sequence<std::size_t, maximum_parameter_count>() ) ); @@ -103,9 +103,9 @@ class FunctionBase : public xalan::Function { result.assign(std::string( startText + "between " - + std::to_string(minimum_parameter_count) + + std::to_string(minimum_parameter_count) + " and " - + std::to_string(maximum_parameter_count) + + std::to_string(maximum_parameter_count) + endText ).data()); } @@ -116,7 +116,7 @@ class FunctionBase : public xalan::Function { template <std::size_t... Index> xalan::XalanDocument* callConstructDocument( const XObjectArgVectorType& parameters, - Sequence<Index...> + std::integer_sequence<std::size_t, Index...> ) const { const FilesystemContext context; XObjectValue valueGetter(&context, this->include_resolver_); diff --git a/src/support/type/sequence.h b/src/support/type/sequence.h deleted file mode 100644 index a404e71..0000000 --- a/src/support/type/sequence.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef INPUTXSLT_SRC_SUPPORT_TYPE_SEQUENCE_H_ -#define INPUTXSLT_SRC_SUPPORT_TYPE_SEQUENCE_H_ - -#include <cstddef> -#include <type_traits> - -namespace InputXSLT { - -template <std::size_t...> -struct Sequence { - typedef Sequence type; -}; - -template < - std::size_t Size, - std::size_t Index = 0, - std::size_t... Current -> -struct IndexSequence { - typedef typename std::conditional< - Index < Size, - IndexSequence<Size, Index + 1, Current..., Index>, - Sequence<Current...> - >::type::type type; -}; - -} - -#endif // INPUTXSLT_SRC_SUPPORT_TYPE_SEQUENCE_H_ |