aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGravatar Sadie Powell2019-01-25 15:17:37 +0000
committerGravatar Sadie Powell2019-01-25 15:17:37 +0000
commit0fab643858dfd2183cb545243d230d3ff84446b2 (patch)
treec50161f9e2539255132b90301b6f6ad01ef2224c /include
parentRemove support for the deprecated rfc1459 casemapping, (diff)
downloadinspircd++-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.h90
-rw-r--r--include/modules/whois.h40
-rw-r--r--include/numeric.h6
-rw-r--r--include/users.h96
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);
}