Finished dicts ;)
This commit is contained in:
22
bytecode.cpp
22
bytecode.cpp
@@ -271,6 +271,28 @@ static void print_const(PycRef<PycObject> obj)
|
|||||||
printf("]");
|
printf("]");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case PycObject::TYPE_DICT:
|
||||||
|
{
|
||||||
|
printf("{");
|
||||||
|
PycDict::key_t keys = obj.cast<PycDict>()->keys();
|
||||||
|
PycDict::value_t values = obj.cast<PycDict>()->values();
|
||||||
|
PycDict::key_t::iterator ki = keys.begin();
|
||||||
|
PycDict::value_t::iterator vi = values.begin();
|
||||||
|
if (ki != keys.end()) {
|
||||||
|
print_const(*ki);
|
||||||
|
printf(": ");
|
||||||
|
print_const(*vi);
|
||||||
|
while (++ki != keys.end()) {
|
||||||
|
++vi;
|
||||||
|
printf(", ");
|
||||||
|
print_const(*ki);
|
||||||
|
printf(": ");
|
||||||
|
print_const(*vi);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("}");
|
||||||
|
}
|
||||||
|
break;
|
||||||
case PycObject::TYPE_NONE:
|
case PycObject::TYPE_NONE:
|
||||||
printf("None");
|
printf("None");
|
||||||
break;
|
break;
|
||||||
|
14
pycdas.cpp
14
pycdas.cpp
@@ -87,6 +87,20 @@ void output_object(PycRef<PycObject> obj, PycModule* mod, int indent)
|
|||||||
iprintf(indent, "]\n");
|
iprintf(indent, "]\n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case PycObject::TYPE_DICT:
|
||||||
|
{
|
||||||
|
iprintf(indent, "{\n");
|
||||||
|
PycDict::key_t keys = obj.cast<PycDict>()->keys();
|
||||||
|
PycDict::value_t values = obj.cast<PycDict>()->values();
|
||||||
|
PycDict::key_t::iterator ki = keys.begin();
|
||||||
|
PycDict::value_t::iterator vi = values.begin();
|
||||||
|
while (ki != keys.end()) {
|
||||||
|
output_object(*ki, mod, indent + 1);
|
||||||
|
output_object(*vi, mod, indent + 2);
|
||||||
|
}
|
||||||
|
iprintf(indent, "}\n");
|
||||||
|
}
|
||||||
|
break;
|
||||||
case PycObject::TYPE_NONE:
|
case PycObject::TYPE_NONE:
|
||||||
iprintf(indent, "None\n");
|
iprintf(indent, "None\n");
|
||||||
break;
|
break;
|
||||||
|
12
sequence.cpp
12
sequence.cpp
@@ -54,9 +54,15 @@ bool PycList::isEqual(PycRef<PycObject> obj) const
|
|||||||
/* PycDict */
|
/* PycDict */
|
||||||
void PycDict::load(PycData* stream, PycModule* mod)
|
void PycDict::load(PycData* stream, PycModule* mod)
|
||||||
{
|
{
|
||||||
m_size = stream->get32();
|
PycRef<PycObject> key, val;
|
||||||
for (int i=0; i<m_size; i++)
|
for (;;) {
|
||||||
m_values.push_back(LoadObject(stream, mod));
|
key = LoadObject(stream, mod);
|
||||||
|
if (key == Pyc_NULL)
|
||||||
|
break;
|
||||||
|
val = LoadObject(stream, mod);
|
||||||
|
m_keys.push_back(key);
|
||||||
|
m_values.push_back(val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PycDict::isEqual(PycRef<PycObject> obj) const
|
bool PycDict::isEqual(PycRef<PycObject> obj) const
|
||||||
|
Reference in New Issue
Block a user