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();
|
||||
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
|
||||
@@ -154,16 +154,3 @@ bool PycSet::isEqual(PycRef<PycObject> obj) const
|
||||
}
|
||||
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 <vector>
|
||||
#include <set>
|
||||
|
||||
class PycSequence : public PycObject {
|
||||
public:
|
||||
@@ -74,7 +73,7 @@ private:
|
||||
|
||||
class PycSet : public PycSequence {
|
||||
public:
|
||||
typedef std::set<PycRef<PycObject>> value_t;
|
||||
typedef std::vector<PycRef<PycObject>> value_t;
|
||||
|
||||
PycSet(int type = TYPE_SET) : PycSequence(type) { }
|
||||
|
||||
@@ -83,7 +82,7 @@ public:
|
||||
void load(class PycData* stream, class PycModule* mod) override;
|
||||
|
||||
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:
|
||||
value_t m_values;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
a = set ( ) <EOL>
|
||||
b = { 1 , 2 } <EOL>
|
||||
c = { 'AB' , 'CD' } <EOL>
|
||||
d = { 2 , 1 , 3 , 4 } <EOL>
|
||||
d = { 1 , 2 , 3 , 4 } <EOL>
|
||||
|
Reference in New Issue
Block a user