mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-21 06:45:39 -06:00
Core: min/max now up to 40 arguments
git-svn-id: svn://ultimatepp.org/upp/trunk@10412 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
e6112857e4
commit
b359c6c6de
3 changed files with 38 additions and 33 deletions
|
|
@ -216,18 +216,35 @@ static void COMBINE(MK__s, _fn)() { x } static UPP::Callexit MK__s(COMBINE(MK__s
|
|||
#undef max
|
||||
#endif
|
||||
|
||||
//$-template <class T> inline const T& min(const T& a, const T& b, ...);
|
||||
//$-template <class T> inline const T& max(const T& a, const T& b, ...);
|
||||
|
||||
template <class T> inline const T& min(const T& a, const T& b) { return a < b ? a : b; }
|
||||
|
||||
template <class T> inline const T& min(const T& a, const T& b, const T& c)
|
||||
{ return min(a, min(b, c)); }
|
||||
template <class T> inline const T& min(const T& a, const T& b, const T& c, const T& d)
|
||||
{ return min(min(a, b), min(c, d)); }
|
||||
|
||||
template <class T> inline const T& max(const T& a, const T& b) { return a > b ? a : b; }
|
||||
template <class T> inline const T& max(const T& a, const T& b, const T& c)
|
||||
{ return max(a, max(b, c)); }
|
||||
template <class T> inline const T& max(const T& a, const T& b, const T& c, const T& d)
|
||||
{ return max(max(a, b), max(c, d)); }
|
||||
|
||||
#define E__MinMaxParam(I) const T& COMBINE(p, I)
|
||||
#define E__MinMaxValue(I) COMBINE(p, I)
|
||||
|
||||
#define E__MinBody(I) \
|
||||
template <class T> \
|
||||
const T& min(const T& a, const T& b, __List##I(E__MinMaxParam)) \
|
||||
{\
|
||||
return min(a, min(b, __List##I(E__MinMaxValue))); \
|
||||
} \
|
||||
|
||||
__Expand40(E__MinBody)
|
||||
|
||||
#define E__MaxBody(I) \
|
||||
template <class T> \
|
||||
const T& max(const T& a, const T& b, __List##I(E__MinMaxParam)) \
|
||||
{\
|
||||
return max(a, max(b, __List##I(E__MinMaxValue))); \
|
||||
} \
|
||||
|
||||
__Expand40(E__MaxBody)
|
||||
|
||||
//$+
|
||||
|
||||
|
||||
template <class T> // deprecated name, use clamp
|
||||
inline T minmax(T x, T _min, T _max) { return min(max(x, _min), _max); }
|
||||
|
|
|
|||
4
uppsrc/Core/init
Normal file
4
uppsrc/Core/init
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
#ifndef _Core_icpp_init_stub
|
||||
#define _Core_icpp_init_stub
|
||||
#include "plugin\z/init"
|
||||
#endif
|
||||
|
|
@ -167,33 +167,17 @@ URL that will be opened in the browser&]
|
|||
[s4; &]
|
||||
[s5;:CpuMMX`(`): [@(0.0.255) bool]_[* CpuMMX]()&]
|
||||
[s2;%% Returns true if CPU has MMX support.&]
|
||||
[s3; &]
|
||||
[s3;%% &]
|
||||
[s4; &]
|
||||
[s5;:min`(const T`&`,const T`&`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T]>_[@(0.0.255) c
|
||||
onst]_[*@4 T][@(0.0.255) `&]_[* min]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 a],
|
||||
[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 b])&]
|
||||
[s5;:min`(const T`&`,const T`&`,const T`&`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T
|
||||
]>_[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* min]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_
|
||||
[*@3 a], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 b], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&
|
||||
]_[*@3 c])&]
|
||||
[s5;:min`(const T`&`,const T`&`,const T`&`,const T`&`): [@(0.0.255) template]_<[@(0.0.255) c
|
||||
lass]_[*@4 T]>_[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* min]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&
|
||||
]_[*@3 a], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 b], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&
|
||||
]_[*@3 c], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 d])&]
|
||||
[s5;:Upp`:`:min`(const T`&`,const T`&`,`.`.`.`): [@(0.0.255) template]_<[@(0.0.255) class
|
||||
]_[*@4 T]>_[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* min]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&
|
||||
]_[*@3 a], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 b], ...)&]
|
||||
[s2;%% Returns the least of all arguments.&]
|
||||
[s3;%% &]
|
||||
[s4; &]
|
||||
[s5;:max`(const T`&`,const T`&`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T]>_[@(0.0.255) c
|
||||
onst]_[*@4 T][@(0.0.255) `&]_[* max]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 a],
|
||||
[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 b])&]
|
||||
[s5;:max`(const T`&`,const T`&`,const T`&`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T
|
||||
]>_[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* max]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_
|
||||
[*@3 a], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 b], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&
|
||||
]_[*@3 c])&]
|
||||
[s5;:max`(const T`&`,const T`&`,const T`&`,const T`&`): [@(0.0.255) template]_<[@(0.0.255) c
|
||||
lass]_[*@4 T]>_[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* max]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&
|
||||
]_[*@3 a], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 b], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&
|
||||
]_[*@3 c], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 d])&]
|
||||
[s5;:Upp`:`:max`(const T`&`,const T`&`,`.`.`.`): [@(0.0.255) template]_<[@(0.0.255) class
|
||||
]_[*@4 T]>_[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* max]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&
|
||||
]_[*@3 a], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 b], ...)&]
|
||||
[s2;%% Returns the greatest of all arguments.&]
|
||||
[s3;%% &]
|
||||
[s4; &]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue