From 5a5ddb1e2dcbb2ea28ac6423012a1bb0bbe35562 Mon Sep 17 00:00:00 2001 From: cxl Date: Thu, 13 Nov 2014 11:06:17 +0000 Subject: [PATCH] Core: 'Tuple' now synonym to 'MakeTuple' git-svn-id: svn://ultimatepp.org/upp/trunk@7888 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Core/Tuple.h | 24 ++++++++++++++++++++--- uppsrc/Core/srcdoc.tpp/Tutorial$en-us.tpp | 4 ++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/uppsrc/Core/Tuple.h b/uppsrc/Core/Tuple.h index 4f55d1b6b..2c664fecc 100644 --- a/uppsrc/Core/Tuple.h +++ b/uppsrc/Core/Tuple.h @@ -30,7 +30,7 @@ inline void AssertMoveable0(Tuple2 *) } template -inline Tuple2 MakeTuple(const A& a, const B& b) +inline Tuple2 Tuple(const A& a, const B& b) { Tuple2 r; r.a = a; @@ -38,6 +38,12 @@ inline Tuple2 MakeTuple(const A& a, const B& b) return r; } +template +inline Tuple2 MakeTuple(const A& a, const B& b) // Old name +{ + return Tuple(a, b); +} + template struct Tuple3 { A a; @@ -72,7 +78,7 @@ inline void AssertMoveable0(Tuple3 *) } template -inline Tuple3 MakeTuple(const A& a, const B& b, const C& c) +inline Tuple3 Tuple(const A& a, const B& b, const C& c) { Tuple3 r; r.a = a; @@ -81,6 +87,12 @@ inline Tuple3 MakeTuple(const A& a, const B& b, const C& c) return r; } +template +inline Tuple3 MakeTuple(const A& a, const B& b, const C& c) +{ + return Tuple(a, b, c); +} + template struct Tuple4 { A a; @@ -117,7 +129,7 @@ inline void AssertMoveable0(Tuple4 *) } template -inline Tuple4 MakeTuple(const A& a, const B& b, const C& c, const D& d) +inline Tuple4 Tuple(const A& a, const B& b, const C& c, const D& d) { Tuple4 r; r.a = a; @@ -127,6 +139,12 @@ inline Tuple4 MakeTuple(const A& a, const B& b, const C& c, const D& return r; } +template +inline Tuple4 MakeTuple(const A& a, const B& b, const C& c, const D& d) +{ + return Tuple(a, b, c, d); +} + template inline T *FindTuple(T *x, int n, const U& key) { while(n--) { diff --git a/uppsrc/Core/srcdoc.tpp/Tutorial$en-us.tpp b/uppsrc/Core/srcdoc.tpp/Tutorial$en-us.tpp index a51ce8252..7f26d557a 100644 --- a/uppsrc/Core/srcdoc.tpp/Tutorial$en-us.tpp +++ b/uppsrc/Core/srcdoc.tpp/Tutorial$en-us.tpp @@ -636,10 +636,10 @@ equivalents to VectorMap/ArrayMap `- maps that keep keys sorted:&] [s5; U`+`+ has template classes Tuple2, Tuple3 and Tuple4 for combining 2`-4 values with different types. These are quite similiar to std`::tuple class, with some advantages.&] -[s5; To create a Tuple value, you can use MakeTuple function. If +[s5; To create a Tuple value, you can use the Tuple function. If correct types canot be deduced from parameters, you can specify them explicitly:&] -[s7; -|Tuple3 x `= [* MakeTuple](12, +[s7; -|Tuple3 x `= [* Tuple](12, `"hello`", `"world`");&] [s7; &] [s5; Individual values are accessible as members a .. d:&]