Keep PycSet objects marshalled from files in order too
This commit is contained in:
@@ -134,7 +134,7 @@ void PycSet::load(PycData* stream, PycModule* mod)
|
|||||||
{
|
{
|
||||||
m_size = stream->get32();
|
m_size = stream->get32();
|
||||||
for (int i=0; i<m_size; i++)
|
for (int i=0; i<m_size; i++)
|
||||||
m_values.insert(LoadObject(stream, mod));
|
m_values.push_back(LoadObject(stream, mod));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PycSet::isEqual(PycRef<PycObject> obj) const
|
bool PycSet::isEqual(PycRef<PycObject> obj) const
|
||||||
@@ -154,16 +154,3 @@ bool PycSet::isEqual(PycRef<PycObject> obj) const
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PycRef<PycObject> PycSet::get(int idx) const
|
|
||||||
{
|
|
||||||
if (idx < 0)
|
|
||||||
throw std::out_of_range("Set index out of range");
|
|
||||||
|
|
||||||
auto it = m_values.cbegin();
|
|
||||||
while (idx-- && it != m_values.cend())
|
|
||||||
++it;
|
|
||||||
if (it == m_values.cend())
|
|
||||||
throw std::out_of_range("Set index out of range");
|
|
||||||
return *it;
|
|
||||||
}
|
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#include "pyc_object.h"
|
#include "pyc_object.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <set>
|
|
||||||
|
|
||||||
class PycSequence : public PycObject {
|
class PycSequence : public PycObject {
|
||||||
public:
|
public:
|
||||||
@@ -74,7 +73,7 @@ private:
|
|||||||
|
|
||||||
class PycSet : public PycSequence {
|
class PycSet : public PycSequence {
|
||||||
public:
|
public:
|
||||||
typedef std::set<PycRef<PycObject>> value_t;
|
typedef std::vector<PycRef<PycObject>> value_t;
|
||||||
|
|
||||||
PycSet(int type = TYPE_SET) : PycSequence(type) { }
|
PycSet(int type = TYPE_SET) : PycSequence(type) { }
|
||||||
|
|
||||||
@@ -83,7 +82,7 @@ public:
|
|||||||
void load(class PycData* stream, class PycModule* mod) override;
|
void load(class PycData* stream, class PycModule* mod) override;
|
||||||
|
|
||||||
const value_t& values() const { return m_values; }
|
const value_t& values() const { return m_values; }
|
||||||
PycRef<PycObject> get(int idx) const override;
|
PycRef<PycObject> get(int idx) const override { return m_values.at(idx); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
value_t m_values;
|
value_t m_values;
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
a = set ( ) <EOL>
|
a = set ( ) <EOL>
|
||||||
b = { 1 , 2 } <EOL>
|
b = { 1 , 2 } <EOL>
|
||||||
c = { 'AB' , 'CD' } <EOL>
|
c = { 'AB' , 'CD' } <EOL>
|
||||||
d = { 2 , 1 , 3 , 4 } <EOL>
|
d = { 1 , 2 , 3 , 4 } <EOL>
|
||||||
|
Reference in New Issue
Block a user