summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorljfa-ag <ljfa-ag@web.de>2015-07-14 13:50:48 +0200
committerljfa-ag <ljfa-ag@web.de>2015-07-14 13:50:48 +0200
commitd2b7c2442da9363b13f884bd0c47fb757cb0f005 (patch)
tree267c12207c57d4fef4c9586dfb3a37d60e2d738c
parent125a60596531cb0717869dd8c54147f79335f5c2 (diff)
downloadProject-Tick-d2b7c2442da9363b13f884bd0c47fb757cb0f005.tar.gz
Project-Tick-d2b7c2442da9363b13f884bd0c47fb757cb0f005.zip
Replace constructor and dummy argument with init method
-rw-r--r--include/tag_list.h19
-rw-r--r--src/tag_list.cpp22
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)
{