mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
*Core: Fixed ValueArray / ValueMap serialization
git-svn-id: svn://ultimatepp.org/upp/trunk@2806 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
7a51fa5cbd
commit
9435aa8bc4
2 changed files with 26 additions and 2 deletions
|
|
@ -127,6 +127,20 @@ VectorMap<dword, Value::Void *(*)(Stream& s)>& Value::Typemap()
|
|||
return x;
|
||||
}
|
||||
|
||||
Value::Void *ValueArrayDataCreate(Stream& s)
|
||||
{
|
||||
ValueArray::Data *a = new ValueArray::Data;
|
||||
a->Serialize(s);
|
||||
return a;
|
||||
}
|
||||
|
||||
Value::Void *ValueMapDataCreate(Stream& s)
|
||||
{
|
||||
ValueMap::Data *a = new ValueMap::Data;
|
||||
a->Serialize(s);
|
||||
return a;
|
||||
}
|
||||
|
||||
static void sRegisterStd()
|
||||
{
|
||||
ONCELOCK {
|
||||
|
|
@ -138,8 +152,8 @@ static void sRegisterStd()
|
|||
RichValue<WString>::Register();
|
||||
RichValue<Date>::Register();
|
||||
RichValue<Time>::Register();
|
||||
RichValue<ValueArray>::Register();
|
||||
RichValue<ValueMap>::Register();
|
||||
Value::Register(VALUEARRAY_V, ValueArrayDataCreate);
|
||||
Value::Register(VALUEMAP_V, ValueMapDataCreate);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -308,6 +322,7 @@ Vector<Value>& ValueArray::Clone() {
|
|||
|
||||
ValueArray::ValueArray() {
|
||||
data = &Single<NullData>();
|
||||
DDUMPC(data->data);
|
||||
data->Retain();
|
||||
}
|
||||
|
||||
|
|
@ -478,6 +493,7 @@ void ValueMap::Init0()
|
|||
{
|
||||
data = &Single<NullData>();
|
||||
data->Retain();
|
||||
DDUMP(data->value);
|
||||
}
|
||||
|
||||
ValueMap::ValueMap(const ValueMap& v)
|
||||
|
|
@ -538,12 +554,16 @@ void ValueMap::Clear() {
|
|||
|
||||
void ValueMap::Add(const Value& key, const Value& value) {
|
||||
Data& d = Clone();
|
||||
DDUMP(key);
|
||||
DDUMP(value);
|
||||
d.key.Add(key);
|
||||
d.value.Add(value);
|
||||
DDUMP(d.value);
|
||||
}
|
||||
|
||||
Value ValueMap::operator[](const Value& key) const
|
||||
{
|
||||
DDUMP(data->value);
|
||||
int q = data->key.Find(key);
|
||||
return q >= 0 ? data->value[q] : ErrorValue();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue