diff options
| author | ljfa-ag <ljfa-ag@web.de> | 2015-07-14 13:50:48 +0200 |
|---|---|---|
| committer | ljfa-ag <ljfa-ag@web.de> | 2015-07-14 13:50:48 +0200 |
| commit | d2b7c2442da9363b13f884bd0c47fb757cb0f005 (patch) | |
| tree | 267c12207c57d4fef4c9586dfb3a37d60e2d738c | |
| parent | 125a60596531cb0717869dd8c54147f79335f5c2 (diff) | |
| download | Project-Tick-d2b7c2442da9363b13f884bd0c47fb757cb0f005.tar.gz Project-Tick-d2b7c2442da9363b13f884bd0c47fb757cb0f005.zip | |
Replace constructor and dummy argument with init method
| -rw-r--r-- | include/tag_list.h | 19 | ||||
| -rw-r--r-- | src/tag_list.cpp | 22 |
2 files changed, 21 insertions, 20 deletions
diff --git a/include/tag_list.h b/include/tag_list.h index b69eeba2fa..1a2f20e353 100644 --- a/include/tag_list.h +++ b/include/tag_list.h @@ -157,19 +157,20 @@ private: tag_type el_type_; /** - * Internally used constructor that initializes the list with tags of - * type T, with the constructor arguments of each T given by init. - * @param dummy ignored, only used for inducing the template parameter T - * @param init list of values that are, one by one, given to a constructor of T + * Internally used initialization function that initializes the list with + * tags of type T, with the constructor arguments of each T given by il. + * @param il list of values that are, one by one, given to a constructor of T */ template<class T, class Arg> - tag_list(T dummy, std::initializer_list<Arg> init); + void init(std::initializer_list<Arg> il); }; template<class T, class Arg> -tag_list tag_list::of(std::initializer_list<Arg> init) +tag_list tag_list::of(std::initializer_list<Arg> il) { - return tag_list(T(), std::move(init)); + tag_list result; + result.init<T>(il); + return result; } template<class T, class... Args> @@ -183,9 +184,9 @@ void tag_list::emplace_back(Args&&... args) } template<class T, class Arg> -tag_list::tag_list(T dummy, std::initializer_list<Arg> init): - el_type_(T::type) +void tag_list::init(std::initializer_list<Arg> init) { + el_type_ = T::type; tags.reserve(init.size()); for(const Arg& arg: init) tags.emplace_back(T(arg)); diff --git a/src/tag_list.cpp b/src/tag_list.cpp index df21d2dace..488f29ebaa 100644 --- a/src/tag_list.cpp +++ b/src/tag_list.cpp @@ -31,17 +31,17 @@ tag_list::tag_list(tag_type type): el_type_(type) {} -tag_list::tag_list(std::initializer_list<int8_t> init): tag_list(tag_byte() , init) {} -tag_list::tag_list(std::initializer_list<int16_t> init): tag_list(tag_short() , init) {} -tag_list::tag_list(std::initializer_list<int32_t> init): tag_list(tag_int() , init) {} -tag_list::tag_list(std::initializer_list<int64_t> init): tag_list(tag_long() , init) {} -tag_list::tag_list(std::initializer_list<float> init): tag_list(tag_float() , init) {} -tag_list::tag_list(std::initializer_list<double> init): tag_list(tag_double() , init) {} -tag_list::tag_list(std::initializer_list<std::string> init): tag_list(tag_string() , init) {} -//tag_list::tag_list(std::initializer_list<tag_byte_array> init): tag_list(tag_byte_array(), init) {} -tag_list::tag_list(std::initializer_list<tag_list> init): tag_list(tag_list() , init) {} -tag_list::tag_list(std::initializer_list<tag_compound> init): tag_list(tag_compound() , init) {} -//tag_list::tag_list(std::initializer_list<tag_int_array> init): tag_list(tag_int_array() , init) {} +tag_list::tag_list(std::initializer_list<int8_t> il) { init<tag_byte>(il); } +tag_list::tag_list(std::initializer_list<int16_t> il) { init<tag_short>(il); } +tag_list::tag_list(std::initializer_list<int32_t> il) { init<tag_int>(il); } +tag_list::tag_list(std::initializer_list<int64_t> il) { init<tag_long>(il); } +tag_list::tag_list(std::initializer_list<float> il) { init<tag_float>(il); } +tag_list::tag_list(std::initializer_list<double> il) { init<tag_double>(il); } +tag_list::tag_list(std::initializer_list<std::string> il) { init<tag_string>(il); } +//tag_list::tag_list(std::initializer_list<tag_byte_array> il) { init<tag_byte_array>(il); } +tag_list::tag_list(std::initializer_list<tag_list> il) { init<tag_list>(il); } +tag_list::tag_list(std::initializer_list<tag_compound> il) { init<tag_compound>(il); } +//tag_list::tag_list(std::initializer_list<tag_int_array> il) { init<tag_int_array>(il); } tag_list::tag_list(std::initializer_list<value> init) { |
