diff options
| author | 2019-01-25 15:17:37 +0000 | |
|---|---|---|
| committer | 2019-01-25 15:17:37 +0000 | |
| commit | 0fab643858dfd2183cb545243d230d3ff84446b2 (patch) | |
| tree | c50161f9e2539255132b90301b6f6ad01ef2224c /include | |
| parent | Remove support for the deprecated rfc1459 casemapping, (diff) | |
| download | inspircd++-0fab643858dfd2183cb545243d230d3ff84446b2.tar.gz inspircd++-0fab643858dfd2183cb545243d230d3ff84446b2.tar.bz2 inspircd++-0fab643858dfd2183cb545243d230d3ff84446b2.zip | |
Convert repetitive functions to use C++11 variadic templates.
Diffstat (limited to 'include')
| -rw-r--r-- | include/modules/stats.h | 90 | ||||
| -rw-r--r-- | include/modules/whois.h | 40 | ||||
| -rw-r--r-- | include/numeric.h | 6 | ||||
| -rw-r--r-- | include/users.h | 96 |
4 files changed, 18 insertions, 214 deletions
diff --git a/include/modules/stats.h b/include/modules/stats.h index e69070c9f..0d82f9f9a 100644 --- a/include/modules/stats.h +++ b/include/modules/stats.h @@ -97,95 +97,11 @@ class Stats::Context */ void AddRow(const Row& row) { rows.push_back(row); } - template <typename T1> - void AddRow(unsigned int numeric, T1 p1) + template <typename... Param> + void AddRow(unsigned int numeric, Param... p) { Row n(numeric); - n.push(p1); - AddRow(n); - } - - template <typename T1, typename T2> - void AddRow(unsigned int numeric, T1 p1, T2 p2) - { - Row n(numeric); - n.push(p1); - n.push(p2); - AddRow(n); - } - - template <typename T1, typename T2, typename T3> - void AddRow(unsigned int numeric, T1 p1, T2 p2, T3 p3) - { - Row n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - AddRow(n); - } - - template <typename T1, typename T2, typename T3, typename T4> - void AddRow(unsigned int numeric, T1 p1, T2 p2, T3 p3, T4 p4) - { - Row n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - n.push(p4); - AddRow(n); - } - - template <typename T1, typename T2, typename T3, typename T4, typename T5> - void AddRow(unsigned int numeric, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) - { - Row n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - n.push(p4); - n.push(p5); - AddRow(n); - } - - template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> - void AddRow(unsigned int numeric, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) - { - Row n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - n.push(p4); - n.push(p5); - n.push(p6); - AddRow(n); - } - - template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> - void AddRow(unsigned int numeric, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7) - { - Row n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - n.push(p4); - n.push(p5); - n.push(p6); - n.push(p7); - AddRow(n); - } - - template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> - void AddRow(unsigned int numeric, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8) - { - Row n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - n.push(p4); - n.push(p5); - n.push(p6); - n.push(p7); - n.push(p8); + n.push(std::forward<Param>(p)...); AddRow(n); } }; diff --git a/include/modules/whois.h b/include/modules/whois.h index 4f09d268b..6cde7b29c 100644 --- a/include/modules/whois.h +++ b/include/modules/whois.h @@ -97,45 +97,11 @@ class Whois::Context /** Send a line of WHOIS data to the source of the WHOIS */ - template <typename T1> - void SendLine(unsigned int numeric, T1 p1) + template <typename... Param> + void SendLine(unsigned int numeric, Param... p) { Numeric::Numeric n(numeric); - n.push(target->nick); - n.push(p1); - SendLine(n); - } - - template <typename T1, typename T2> - void SendLine(unsigned int numeric, T1 p1, T2 p2) - { - Numeric::Numeric n(numeric); - n.push(target->nick); - n.push(p1); - n.push(p2); - SendLine(n); - } - - template <typename T1, typename T2, typename T3> - void SendLine(unsigned int numeric, T1 p1, T2 p2, T3 p3) - { - Numeric::Numeric n(numeric); - n.push(target->nick); - n.push(p1); - n.push(p2); - n.push(p3); - SendLine(n); - } - - template <typename T1, typename T2, typename T3, typename T4> - void SendLine(unsigned int numeric, T1 p1, T2 p2, T3 p3, T4 p4) - { - Numeric::Numeric n(numeric); - n.push(target->nick); - n.push(p1); - n.push(p2); - n.push(p3); - n.push(p4); + n.push(std::forward<Param>(p)...); SendLine(n); } diff --git a/include/numeric.h b/include/numeric.h index cc9f9cc9b..317a55bce 100644 --- a/include/numeric.h +++ b/include/numeric.h @@ -53,6 +53,12 @@ class Numeric::Numeric /** Add a parameter to the numeric. The parameter will be converted to a string first with ConvToStr(). * @param x Parameter to add */ + template <typename T1, typename... T2> + Numeric& push(const T1& x1, T2... x2) + { + return push(x1).push(std::forward<T2>(x2)...); + } + template <typename T> Numeric& push(const T& x) { diff --git a/include/users.h b/include/users.h index 4b3503fb4..4da167ac4 100644 --- a/include/users.h +++ b/include/users.h @@ -510,105 +510,21 @@ class CoreExport User : public Extensible virtual void WriteRemoteNumeric(const Numeric::Numeric& numeric); - template <typename T1> - void WriteRemoteNumeric(unsigned int numeric, T1 p1) + template <typename... Param> + void WriteRemoteNumeric(unsigned int numeric, Param... p) { Numeric::Numeric n(numeric); - n.push(p1); - WriteRemoteNumeric(n); - } - - template <typename T1, typename T2> - void WriteRemoteNumeric(unsigned int numeric, T1 p1, T2 p2) - { - Numeric::Numeric n(numeric); - n.push(p1); - n.push(p2); - WriteRemoteNumeric(n); - } - - template <typename T1, typename T2, typename T3> - void WriteRemoteNumeric(unsigned int numeric, T1 p1, T2 p2, T3 p3) - { - Numeric::Numeric n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - WriteRemoteNumeric(n); - } - - template <typename T1, typename T2, typename T3, typename T4> - void WriteRemoteNumeric(unsigned int numeric, T1 p1, T2 p2, T3 p3, T4 p4) - { - Numeric::Numeric n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - n.push(p4); - WriteRemoteNumeric(n); - } - - template <typename T1, typename T2, typename T3, typename T4, typename T5> - void WriteRemoteNumeric(unsigned int numeric, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) - { - Numeric::Numeric n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - n.push(p4); - n.push(p5); + n.push(std::forward<Param>(p)...); WriteRemoteNumeric(n); } void WriteNumeric(const Numeric::Numeric& numeric); - template <typename T1> - void WriteNumeric(unsigned int numeric, T1 p1) - { - Numeric::Numeric n(numeric); - n.push(p1); - WriteNumeric(n); - } - - template <typename T1, typename T2> - void WriteNumeric(unsigned int numeric, T1 p1, T2 p2) - { - Numeric::Numeric n(numeric); - n.push(p1); - n.push(p2); - WriteNumeric(n); - } - - template <typename T1, typename T2, typename T3> - void WriteNumeric(unsigned int numeric, T1 p1, T2 p2, T3 p3) - { - Numeric::Numeric n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - WriteNumeric(n); - } - - template <typename T1, typename T2, typename T3, typename T4> - void WriteNumeric(unsigned int numeric, T1 p1, T2 p2, T3 p3, T4 p4) - { - Numeric::Numeric n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - n.push(p4); - WriteNumeric(n); - } - - template <typename T1, typename T2, typename T3, typename T4, typename T5> - void WriteNumeric(unsigned int numeric, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) + template <typename... Param> + void WriteNumeric(unsigned int numeric, Param... p) { Numeric::Numeric n(numeric); - n.push(p1); - n.push(p2); - n.push(p3); - n.push(p4); - n.push(p5); + n.push(std::forward<Param>(p)...); WriteNumeric(n); } |
