Core: ValueArray/Map::Pick fixed for GCC, CLANG (11)

git-svn-id: svn://ultimatepp.org/upp/trunk@7304 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2014-04-23 07:28:23 +00:00
parent 0028f31751
commit 0ba9ff4ed0
5 changed files with 13 additions and 9 deletions

View file

@ -17,7 +17,7 @@ CONSOLE_APP_MAIN
{
Vector<Value> v;
v << 5 << 1 << 3;
ValueArray va(v);
ValueArray va = pick(v);
ASSERT(v.IsPicked());
TEST(va, "[5, 1, 3]");
Vector<Value> v2 = va.Pick();
@ -48,4 +48,6 @@ CONSOLE_APP_MAIN
TEST(m, "{ 2: ahoj, 1: kamarade }");
}
LOG("============== OK");
}

View file

@ -4,6 +4,8 @@ using namespace Upp;
CONSOLE_APP_MAIN
{
StdLogSetup(LOG_COUT|LOG_FILE);
ValueArray va;
va << 12 << 3 << 5 << 1 << 10;
DUMP(va);

View file

@ -176,9 +176,9 @@ public:
bool operator>(const AIndex& x) const { return Compare(x) > 0; }
#endif
V PickKeys() { return pick(key); }
const V& GetKeys() const { return key; }
bool IsPicked(void) const { return key.IsPicked(); }
V PickKeys() pick_ { return pick(key); }
const V& GetKeys() const { return key; }
bool IsPicked(void) const { return key.IsPicked(); }
// Pick assignment & copy. Picked source can only Clear(), ~AIndex(), operator=, operator<<=

View file

@ -103,11 +103,11 @@ public:
Index<K, HashFn> PickIndex() { return pick(key); }
const Vector<K>& GetKeys() const { return key.GetKeys(); }
Vector<K> PickKeys() { return key.PickKeys(); }
Vector<K> PickKeys() pick_ { return key.PickKeys(); }
const V& GetValues() const { return value; }
V& GetValues() { return value; }
V PickValues() { return pick(value); }
V PickValues() pick_ { return pick(value); }
bool IsPicked() const { return value.IsPicked() || key.IsPicked(); }

View file

@ -216,12 +216,12 @@ class ValueArray : public ValueType<ValueArray, VALUEARRAY_V, Moveable<ValueArra
public:
ValueArray() { Init0(); }
ValueArray(const ValueArray& v);
explicit ValueArray(Vector<Value> rval_ values);
ValueArray(Vector<Value> rval_ values);
explicit ValueArray(const Vector<Value>& values, int deep);
~ValueArray();
ValueArray& operator=(const ValueArray& v);
ValueArray& operator=(Vector<Value> rval_ values) { *this = ValueArray(values); return *this; }
ValueArray& operator=(Vector<Value> rval_ values) { *this = ValueArray(pick(values)); return *this; }
operator Value() const;
ValueArray(const Value& src);
@ -308,7 +308,7 @@ public:
~ValueMap();
ValueMap& operator=(const ValueMap& v);
ValueMap& operator=(VectorMap<Value, Value> rval_ m) { *this = ValueMap(m); return *this; }
ValueMap& operator=(VectorMap<Value, Value> rval_ m) { *this = ValueMap(pick(m)); return *this; }
operator Value() const;
ValueMap(const Value& src);