Skip to content

Commit e27faa1

Browse files
committed
Remove unnecessary sequence interface on PycDict
1 parent 9b384ad commit e27faa1

File tree

2 files changed

+9
-37
lines changed

2 files changed

+9
-37
lines changed

pyc_sequence.cpp

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ bool PycDict::isEqual(PycRef<PycObject> obj) const
6565
return false;
6666

6767
PycRef<PycDict> dictObj = obj.cast<PycDict>();
68-
if (m_size != dictObj->m_size)
68+
if (m_keys.size() != dictObj->m_keys.size())
6969
return false;
7070

7171
auto ki1 = m_keys.cbegin();
@@ -85,28 +85,3 @@ bool PycDict::isEqual(PycRef<PycObject> obj) const
8585
}
8686
return true;
8787
}
88-
89-
PycRef<PycObject> PycDict::get(PycRef<PycObject> key) const
90-
{
91-
auto ki = m_keys.cbegin();
92-
auto vi = m_values.cbegin();
93-
while (ki != m_keys.cend()) {
94-
if ((*ki)->isEqual(key))
95-
return *vi;
96-
++ki, ++vi;
97-
}
98-
return NULL; // Disassembly shouldn't get non-existent keys
99-
}
100-
101-
PycRef<PycObject> PycDict::get(int idx) const
102-
{
103-
if (idx < 0)
104-
throw std::out_of_range("Dict index out of range");
105-
106-
auto it = m_values.cbegin();
107-
while (idx-- && it != m_values.cend())
108-
++it;
109-
if (it == m_values.cend())
110-
throw std::out_of_range("Dict index out of range");
111-
return *it;
112-
}

pyc_sequence.h

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,32 +46,29 @@ class PycList : public PycSimpleSequence {
4646
PycList(int type = TYPE_LIST) : PycSimpleSequence(type) { }
4747
};
4848

49-
class PycDict : public PycSequence {
49+
class PycSet : public PycSimpleSequence {
50+
public:
51+
typedef PycSimpleSequence::value_t value_t;
52+
PycSet(int type = TYPE_SET) : PycSimpleSequence(type) { }
53+
};
54+
55+
class PycDict : public PycObject {
5056
public:
5157
typedef std::vector<PycRef<PycObject>> key_t;
5258
typedef std::vector<PycRef<PycObject>> value_t;
5359

54-
PycDict(int type = TYPE_DICT) : PycSequence(type) { }
60+
PycDict(int type = TYPE_DICT) : PycObject(type) { }
5561

5662
bool isEqual(PycRef<PycObject> obj) const override;
5763

5864
void load(class PycData* stream, class PycModule* mod) override;
5965

60-
PycRef<PycObject> get(PycRef<PycObject> key) const;
6166
const key_t& keys() const { return m_keys; }
6267
const value_t& values() const { return m_values; }
6368

64-
PycRef<PycObject> get(int idx) const override;
65-
6669
private:
6770
key_t m_keys;
6871
value_t m_values;
6972
};
7073

71-
class PycSet : public PycSimpleSequence {
72-
public:
73-
typedef PycSimpleSequence::value_t value_t;
74-
PycSet(int type = TYPE_SET) : PycSimpleSequence(type) { }
75-
};
76-
7774
#endif

0 commit comments

Comments
 (0)