C++11 initializers

git-svn-id: svn://ultimatepp.org/upp/trunk@8873 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2015-08-30 16:17:51 +00:00
parent 4926b2a2d8
commit a5b107dce0
20 changed files with 148 additions and 9 deletions

View file

@ -640,6 +640,10 @@ public:
SortedVectorMap(SortedVectorMap rval_);
SortedVectorMap& operator=(SortedVectorMap rval_);
SortedVectorMap(const SortedVectorMap& s, int);
#ifdef CPP_11
SortedVectorMap(std::initializer_list<std::pair<K, T>> init) : SortedVectorMap() { for(auto i : init) Add(i.first, i.second); }
#endif
void Swap(SortedVectorMap& x);
@ -720,6 +724,10 @@ public:
SortedArrayMap& operator=(SortedArrayMap rval_);
SortedArrayMap(const SortedArrayMap& s, int);
#ifdef CPP_11
SortedArrayMap(std::initializer_list<std::pair<K, T>> init) : SortedArrayMap() { for(auto i : init) Add(i.first, i.second); }
#endif
#ifdef UPP
void Serialize(Stream& s);
void Xmlize(XmlIO& xio);

View file

@ -121,6 +121,10 @@ public:
AMap(const AMap& s, int) : key(s.key, 0), value(s.value, 0) {}
AMap(Index<K, HashFn> rval_ ndx, V rval_ val) : key(pick(ndx)), value(pick(val)) {}
AMap(Vector<K> rval_ ndx, V rval_ val) : key(pick(ndx)), value(pick(val)) {}
#ifdef CPP_11
AMap(std::initializer_list<std::pair<K, T>> init) { for(auto i : init) Add(i.first, i.second); }
#endif
typedef Vector<K> KeyContainer;
typedef K KeyType;
@ -157,6 +161,10 @@ public:
VectorMap(Vector<K> rval_ ndx, Vector<T> rval_ val) : AMap<K, T, Vector<T>, HashFn>(pick(ndx), pick(val)) {}
VectorMap() {}
#ifdef CPP_11
VectorMap(std::initializer_list<std::pair<K, T>> init) : AMap(init) {}
#endif
friend void Swap(VectorMap& a, VectorMap& b) { a.B::Swap(b); }
typedef typename AMap< K, T, Vector<T>, HashFn >::ConstIterator ConstIterator; // GCC bug (?)
@ -186,6 +194,10 @@ public:
ArrayMap(Vector<K> rval_ ndx, Array<T> rval_ val) : AMap<K, T, Array<T>, HashFn>(pick(ndx), pick(val)) {}
ArrayMap() {}
#ifdef CPP_11
ArrayMap(std::initializer_list<std::pair<K, T>> init) : AMap(init) {}
#endif
friend void Swap(ArrayMap& a, ArrayMap& b) { a.B::Swap(b); }
typedef typename AMap< K, T, Array<T>, HashFn >::ConstIterator ConstIterator; // GCC bug (?)

View file

@ -230,6 +230,10 @@ public:
explicit ValueArray(const Vector<Value>& values, int deep);
~ValueArray();
#ifdef CPP_11
ValueArray(std::initializer_list<Value> init) { Init0(); for(auto i : init) { DDUMP(i); Add(i); }}
#endif
ValueArray& operator=(const ValueArray& v);
ValueArray& operator=(Vector<Value> rval_ values) { *this = ValueArray(pick(values)); return *this; }
@ -321,6 +325,10 @@ public:
ValueMap(const VectorMap<Value, Value>& m, int deep);
~ValueMap();
#ifdef CPP_11
ValueMap(std::initializer_list<std::pair<Value, Value>> init) { Init0(); for(auto i : init) { Add(i.first, i.second); }}
#endif
ValueMap& operator=(const ValueMap& v);
ValueMap& operator=(VectorMap<Value, Value> rval_ m) { *this = ValueMap(pick(m)); return *this; }

View file

@ -273,6 +273,7 @@ public:
#ifdef CPP_11
void Insert(int i, std::initializer_list<T> init);
void Append(std::initializer_list<T> init) { Insert(GetCount(), init); }
Array(std::initializer_list<T> init) { Insert(0, init); }
#endif

View file

@ -71,6 +71,11 @@ are more important in derived concrete index flavors.&]
[s6; -|Requires T to have deep copy constructor or optional deep copy
constructor.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:AIndex`:`:AIndex`(std`:`:initializer`_list`<T`>`):%- [* AIndex]([_^std`:`:initializer`_list^ s
td`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3; &]
[s4; &]
[s5;:AIndex`:`:AIndex`(pick`_ V`&`):%- [* AIndex]([@(0.128.128) pick`_]_[*@4 V][@(0.0.255) `&
]_[*@3 s])&]

View file

@ -80,6 +80,10 @@ of type derived from T.&]
[s5;:Array`:`:`~Array`(`):%- [@(0.0.255) `~][* Array]()&]
[s2; Destructor. Invokes the destructor of every element in the Array.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Array`:`:Array`(std`:`:initializer`_list`<T`>`):%- [* Array]([_^std`:`:initializer`_list^ s
td`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2; C`+`+11 initialization.&]
[s0; &]
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
[s4;H0;%- &]
@ -375,6 +379,17 @@ inserted.&]
[s7; [*C@3 count]-|Number of elements to insert.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Array`:`:Insert`(int`,std`:`:initializer`_list`<T`>`):%- [@(0.0.255) void]_
[* Insert]([@(0.0.255) int]_[*@3 i], [_^std`:`:initializer`_list^ std`::initializer`_list]<
[*@4 T]>_[*@3 init])&]
[s2; Inserts C`+`+11 style initializer list.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Array`:`:Append`(std`:`:initializer`_list`<T`>`):%- [@(0.0.255) void]_[* Appe
nd]([_^std`:`:initializer`_list^ std`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2; Appends C`+`+11 style initializer list.&]
[s3; &]
[s4;%- &]
[s5;:Array`:`:Append`(const Array`&`):%- [@(0.0.255) void]_[* Append]([@(0.0.255) const]_[_^Array^ A
rray][@(0.0.255) `&]_[*@3 x])&]
[s2; Appends all elements of source Array.&]

View file

@ -68,7 +68,12 @@ t]_[_^Array^ Array][@(0.0.255) <][*@4 T][@(0.0.255) >`&]_[*@3 s], [@(0.0.255) in
[s6;%% Requires T to have deep copy constructor or optional deep
copy constructor.&]
[s7;%% [*C@3 s]-|Source Vector.&]
[s3; &]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:ArrayIndex`:`:ArrayIndex`(std`:`:initializer`_list`<T`>`): [* ArrayIndex]([_^std`:`:initializer`_list^ s
td`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3;%% &]
[s0; &]
[ {{10000F(128)G(128)@1 [s0;%% [* Public Member List]]}}&]
[s4;H0; &]
@ -178,4 +183,4 @@ of the element. Returns a reference to the element.&]
destroys it by picking.&]
[s7;%% [*C@3 x]-|Source Array.&]
[s3;%% &]
[s0; ]
[s0; ]]

View file

@ -53,6 +53,12 @@ T, Array<T>, HashFn >]&]
[s2; Default constructor. Creates empty ArrayMap.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:ArrayMap`:`:ArrayMap`(std`:`:initializer`_list`<std`:`:pair`<K`,T`>`>`):%- [* A
rrayMap]([_^std`:`:initializer`_list^ std`::initializer`_list]<[_^std`:`:pair^ std`::pa
ir]<[*@4 K], [*@4 T]>>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3; &]
[s4;%- &]
[s5;:ArrayMap`:`:ArrayMap`(const ArrayMap`&`,int`):%- [* ArrayMap]([@(0.0.255) const]_[* Ar
rayMap][@(0.0.255) `&]_[*@3 s], [@(0.0.255) int])&]
[s2; Optional deep copy constructor.&]
@ -149,4 +155,4 @@ deletion of the element.&]
to original element. Client is responsible for deletion of the
original element.&]
[s3; &]
[s0; ]
[s0; ]]

View file

@ -82,6 +82,11 @@ but destroys it by picking. &]
[s7; [*@3 v]-|Source BiArray.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:BiArray`:`:BiArray`(std`:`:initializer`_list`<T`>`):%- [* BiArray]([_^std`:`:initializer`_list^ s
td`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3; &]
[s4;%- &]
[s5;:BiArray`:`:`~BiArray`(`):%- [@(0.0.255) `~][* BiArray]()&]
[s2; Destructor. Invokes the destructor of every element in the BiArray.&]
[s3; &]
@ -369,4 +374,4 @@ in low constant time operation.&]
[s7; [*@3 a]-|First BiArray to swap.&]
[s7; [*@3 b]-|Second BiArray to swap.&]
[s3; &]
[s0; ]
[s0; ]]

View file

@ -52,6 +52,11 @@ constant time, but destroys it by picking.&]
[s5;:BiVector`:`:BiVector`(const BiVector`&`,int`):%- [* BiVector]([@(0.0.255) const]_[* Bi
Vector][@(0.0.255) `&]_[*@3 src], [@(0.0.255) int])&]
[s2; Optional deep copy constructor. Creates a deep copy of [%-*@3 src].&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:BiVector`:`:BiVector`(std`:`:initializer`_list`<T`>`):%- [* BiVector]([_^std`:`:initializer`_list^ s
td`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2; C`+`+11 initialization.&]
[s3; &]
[s4;%- &]
[s5;:BiVector`:`:`~BiVector`(`):%- [@(0.0.255) `~][* BiVector]()&]
@ -67,7 +72,7 @@ The new element will be at position 0. Returns reference to the
newly added default constructed element.&]
[s6; Requires T to have default constructor.&]
[s6; Invalidates iterators and references to the BiVector.&]
[s3;%- &]
[s3; &]
[s4;%- &]
[s5;:BiVector`:`:AddTail`(`):%- [*@4 T][@(0.0.255) `&]_[* AddTail]()&]
[s2; Adds a new default constructed element at the tail of the [* BiVector].
@ -276,4 +281,4 @@ BiVector as part of an expression like Foo(1 >> (2 >> BiVector<int>())).&]
[s6; Requires T to have deep copy constructor.&]
[s6; Invalidates iterators and references to the BiVector.&]
[s3; &]
[s0; ]
[s0; ]]

View file

@ -60,6 +60,14 @@ the specified value [%-@3 init].&]
[s5;:Buffer`:`:`~Buffer`(`):%- [@(0.0.255) `~][* Buffer]()&]
[s2; Default destructor.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Buffer`:`:Buffer`(size`_t`,std`:`:initializer`_list`<T`>`):%- [* Buffer]([_^size`_t^ s
ize`_t]_[*@3 size], [_^std`:`:initializer`_list^ std`::initializer`_list]<[*@4 T]>_[*@3 in
it])&]
[s5;:Upp`:`:Buffer`:`:Buffer`(std`:`:initializer`_list`<T`>`):%- [* Buffer]([_^std`:`:initializer`_list^ s
td`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3; &]
[s0; &]
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
[s3;%- &]

View file

@ -220,6 +220,11 @@ nt]_[*@3 pos])&]
y][@(0.0.255) `&]_[*@3 v], [@(0.0.255) int])&]
[s2; Deep copy constructor.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:InArray`:`:InArray`(std`:`:initializer`_list`<T`>`):%- [* InArray]([_^std`:`:initializer`_list^ s
td`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3; &]
[s4; &]
[s5;:InArray`:`:Swap`(InArray`&`):%- [@(0.0.255) void]_[* Swap]([_^InArray^ InArray][@(0.0.255) `&
]_[*@3 b])&]

View file

@ -208,6 +208,11 @@ nt]_[*@3 pos])&]
Vector][@(0.0.255) `&]_[*@3 v], [@(0.0.255) int])&]
[s2; Optional deep copy constructor.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:InVector`:`:InVector`(std`:`:initializer`_list`<T`>`):%- [* InVector]([_^std`:`:initializer`_list^ s
td`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3; &]
[s4; &]
[s5;:InVector`:`:Swap`(InVector`&`):%- [@(0.0.255) void]_[* Swap]([_^InVector^ InVector][@(0.0.255) `&
]_[*@3 b])&]

View file

@ -83,6 +83,10 @@ ector][@(0.0.255) <][*@4 T][@(0.0.255) >`&]_[*@3 s], [@(0.0.255) int])&]
constructor.&]
[s7; [*@3 s]-|Source Vector.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Index`:`:Index`(std`:`:initializer`_list`<T`>`):%- [* Index]([_^std`:`:initializer`_list^ s
td`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2;%- C`+`+ 11 initialization.&]
[s0; &]
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
[s3;%- &]
@ -99,4 +103,4 @@ ator`=]([@(0.128.128) pick`_]_[_^Vector^ Vector][@(0.0.255) <][*@4 T][@(0.0.255)
time, but destroys it by picking.&]
[s7; [*@3 x]-|Source Vector.&]
[s3; &]
[s0; ]
[s0; ]]

View file

@ -100,4 +100,10 @@ for creating map.&]
[s5;:SortedArrayMap`:`:SortedArrayMap`(const SortedArrayMap`&`,int`):%- [* SortedArrayM
ap]([@(0.0.255) const]_[* SortedArrayMap][@(0.0.255) `&]_[*@3 s], [@(0.0.255) int])&]
[s2; Deep copy constructor.&]
[s4;%- &]
[s5;:Upp`:`:SortedArrayMap`:`:SortedArrayMap`(std`:`:initializer`_list`<std`:`:pair`<K`,T`>`>`):%- [* S
ortedArrayMap]([_^std`:`:initializer`_list^ std`::initializer`_list]<[_^std`:`:pair^ s
td`::pair]<[*@4 K], [*@4 T]>>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3; &]
[s0; ]]

View file

@ -85,4 +85,10 @@ for creating map.&]
torMap]([@(0.0.255) const]_[* SortedVectorMap][@(0.0.255) `&]_[*@3 s],
[@(0.0.255) int])&]
[s2; Deep copy constructor.&]
[s4;%- &]
[s5;:Upp`:`:SortedVectorMap`:`:SortedVectorMap`(std`:`:initializer`_list`<std`:`:pair`<K`,T`>`>`):%- [* S
ortedVectorMap]([_^std`:`:initializer`_list^ std`::initializer`_list]<[_^std`:`:pair^ s
td`::pair]<[*@4 K], [*@4 T]>>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3; &]
[s0; ]]

View file

@ -55,6 +55,12 @@ version).&]
[s2;%% Destructor.&]
[s3; &]
[s4; &]
[s5;:Upp`:`:ValueArray`:`:ValueArray`(std`:`:initializer`_list`<Upp`:`:Value`>`): [* Va
lueArray]([_^std`:`:initializer`_list^ std`::initializer`_list]<[_^Upp`:`:Value^ Value
]>_[*@3 init])&]
[s2;%% C`+`+11 initialization.&]
[s3;%% &]
[s4; &]
[s5;:ValueArray`:`:operator`=`(const ValueArray`&`): [_^ValueArray^ ValueArray][@(0.0.255) `&
]_[* operator`=]([@(0.0.255) const]_[_^ValueArray^ ValueArray][@(0.0.255) `&]_[*@3 v])&]
[s2;%% Assignment operator.&]

View file

@ -76,6 +76,12 @@ onst]_[_^VectorMap^ VectorMap]<[_^Value^ Value], [_^Value^ Value]>`&_[*@3 m],
[s2; Destructor.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:ValueMap`:`:ValueMap`(std`:`:initializer`_list`<std`:`:pair`<Upp`:`:Value`,Upp`:`:Value`>`>`):%- [* V
alueMap]([_^std`:`:initializer`_list^ std`::initializer`_list]<[_^std`:`:pair^ std`::pa
ir]<[_^Upp`:`:Value^ Value], [_^Upp`:`:Value^ Value]>>_[*@3 init])&]
[s2; C`+`+11 initialization.&]
[s3; &]
[s4;%- &]
[s5;:ValueMap`:`:operator`=`(const ValueMap`&`):%- [_^ValueMap^ ValueMap][@(0.0.255) `&]_
[* operator`=]([@(0.0.255) const]_[_^ValueMap^ ValueMap][@(0.0.255) `&]_[*@3 v])&]
[s2; Assignment.&]

View file

@ -65,6 +65,11 @@ constructor.&]
[s5;:Vector`:`:`~Vector`(`):%- [@(0.0.255) `~][* Vector]()&]
[s2; Destructor. Calls destructors of all elements in Vector.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Vector`:`:Vector`(std`:`:initializer`_list`<T`>`):%- [* Vector]([_^std`:`:initializer`_list^ s
td`::initializer`_list]<[*@4 T]>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3; &]
[s0; &]
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
[s3;%- &]
@ -344,6 +349,18 @@ inserted.&]
[s7; [*C@3 count]-|Number of elements to insert.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Vector`:`:Insert`(int`,std`:`:initializer`_list`<T`>`):%- [@(0.0.255) void]_
[* Insert]([@(0.0.255) int]_[*@3 i], [_^std`:`:initializer`_list^ std`::initializer`_list]<
[*@4 T]>_[*@3 init])&]
[s2; Inserts C`+`+11 style initialization list.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Vector`:`:Append`(int`,std`:`:initializer`_list`<T`>`):%- [@(0.0.255) void]_
[* Append]([@(0.0.255) int]_[*@3 i], [_^std`:`:initializer`_list^ std`::initializer`_list]<
[*@4 T]>_[*@3 init])&]
[s2; Appends C`+`+11 style initialization list.&]
[s3; &]
[s4;%- &]
[s5;:Vector`:`:InsertPick`(int`,pick`_ Vector`&`):%- [@(0.0.255) void]_[* InsertPick]([@(0.0.255) i
nt]_[*@3 i], [@(0.128.128) pick`_]_[_^Vector^ Vector][@(0.0.255) `&]_[*@3 x])&]
[s2; Inserts source Vector at specified position using pick transfer
@ -497,7 +514,7 @@ but destroys it by picking.&]
[s2; Returns [* true] if Vector is in picked state.&]
[s7; [*/ Return value]-|[* true] if Vector is in picked state, [* false]
otherwise.&]
[s3;%- &]
[s3; &]
[s4; &]
[s5;%- friend_T`&_operator<<`=[@(64) (T`&_][@3 dest][@(64) , ][@(0.0.255) const][@(64) _T`&_][@3 s
rc][@(64) )]&]

View file

@ -55,6 +55,12 @@ operator is implicitly defined by composition.&]
[s2; Default constructor. Constructs empty [* VectorMap].&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:VectorMap`:`:VectorMap`(std`:`:initializer`_list`<std`:`:pair`<K`,T`>`>`):%- [* V
ectorMap]([_^std`:`:initializer`_list^ std`::initializer`_list]<[_^std`:`:pair^ std`::p
air]<[*@4 K], [*@4 T]>>_[*@3 init])&]
[s2; C`+`+ 11 initialization.&]
[s3; &]
[s4;%- &]
[s5;:VectorMap`:`:VectorMap`(const VectorMap`&`,int`):%- [* VectorMap]([@(0.0.255) const]_
[* VectorMap][@(0.0.255) `&]_[*@3 s], [@(0.0.255) int])&]
[s2; Optional deep copy constructor.&]
@ -90,4 +96,4 @@ of elements.&]
[s2; Drops last element of VectorMap and returns its value.&]
[s7; [*/ Return value]-|Value of dropped element.&]
[s3; &]
[s0; ]
[s0; ]]