From 6e4e6e9f93da0f98e3037369f333f52f80ff5ea3 Mon Sep 17 00:00:00 2001 From: cxl Date: Sat, 29 Aug 2015 21:08:51 +0000 Subject: [PATCH] Developing C++11 features git-svn-id: svn://ultimatepp.org/upp/trunk@8866 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Core/Vcont.h | 4 ++++ uppsrc/Core/Vcont.hpp | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/uppsrc/Core/Vcont.h b/uppsrc/Core/Vcont.h index f52353301..1635e9c62 100644 --- a/uppsrc/Core/Vcont.h +++ b/uppsrc/Core/Vcont.h @@ -131,6 +131,7 @@ public: #ifdef CPP_11 void Insert(int i, std::initializer_list init); + Vector(std::initializer_list init) { vector = NULL; items = alloc = 0; Insert(0, init); } #endif // Deep copy @@ -269,6 +270,9 @@ public: // Deep copy Array(const Array& v, int) { __DeepCopy(v); } + void Insert(int i, std::initializer_list init); + Array(std::initializer_list init) { Insert(0, init); } + class Iterator; class ConstIterator { diff --git a/uppsrc/Core/Vcont.hpp b/uppsrc/Core/Vcont.hpp index e65b63770..676879641 100644 --- a/uppsrc/Core/Vcont.hpp +++ b/uppsrc/Core/Vcont.hpp @@ -530,6 +530,16 @@ void Array::Insert(int i, const Array& x, int offset, int count) { vector[q + i] = DeepCopyNew(x[q + offset]); } +#ifdef CPP_11 +template +void Array::Insert(int i, std::initializer_list init) +{ + vector.InsertN(i, init.size()); + for(auto q : init) + vector[i++] = DeepCopyNew(q); +} +#endif + #ifdef UPP template void Array::Xmlize(XmlIO& xio, const char *itemtag)