#ifndef _PYC_SEQUENCE_H #define _PYC_SEQUENCE_H #include "object.h" #include #include #include class PycSequence : public PycObject { public: PycSequence(int type) : PycObject(type), m_size(0) { } int size() const { return m_size; } virtual PycRef get(int idx) const = 0; protected: int m_size; }; class PycTuple : public PycSequence { public: typedef std::vector > value_t; PycTuple(int type = TYPE_TUPLE) : PycSequence(type) { } bool isEqual(PycRef obj) const; void load(class PycData* stream, class PycModule* mod); const value_t& values() const { return m_values; } PycRef get(int idx) const { return m_values[idx]; } private: value_t m_values; }; class PycList : public PycSequence { public: typedef std::list > value_t; PycList(int type = TYPE_LIST) : PycSequence(type) { } bool isEqual(PycRef obj) const; void load(class PycData* stream, class PycModule* mod); const value_t& values() const { return m_values; } PycRef get(int idx) const { value_t::const_iterator it = m_values.begin(); for (int i=0; i > key_t; typedef std::list > value_t; PycDict(int type = TYPE_DICT) : PycSequence(type) { } bool isEqual(PycRef obj) const; void load(class PycData* stream, class PycModule* mod); PycRef get(PycRef key) const; const key_t& keys() const { return m_keys; } const value_t& values() const { return m_values; } PycRef get(int idx) const { value_t::const_iterator it = m_values.begin(); for (int i=0; i > value_t; PycSet(int type = TYPE_SET) : PycSequence(type) { } bool isEqual(PycRef obj) const; void load(class PycData* stream, class PycModule* mod); const value_t& values() const { return m_values; } PycRef get(int idx) const { value_t::const_iterator it = m_values.begin(); for (int i=0; i