//// Created by Kosho on 2020年8月14日.//#ifndef PYTHONVM_HIOBJECT_HPP#define PYTHONVM_HIOBJECT_HPP#include "klass.hpp"class HiString;class ObjectKlass : public Klass {private:ObjectKlass();static ObjectKlass *instance;public:static ObjectKlass *get_instance();// TODO oops?};class HiObject {private:long _mark_word;Klass *_klass;HiDict *_obj_dict = NULL;public:Klass *klass() {assert(_klass != NULL);return _klass;}void set_klass(Klass *x) { _klass = x; }void print();HiObject *add(HiObject *x);HiObject *sub(HiObject *x);HiObject *mul(HiObject *x);HiObject *div(HiObject *x);HiObject *mod(HiObject *x);HiObject *greater(HiObject *x);HiObject *less(HiObject *x);HiObject *equal(HiObject *x);HiObject *not_equal(HiObject *x);HiObject *ge(HiObject *x);HiObject *le(HiObject *x);HiObject *getattr(HiObject *x);HiObject *setattr(HiObject *x, HiObject *y);HiObject *subscr(HiObject *x);HiObject *contains(HiObject *x);void store_subscr(HiObject *x, HiObject *y);void del_subscr(HiObject *x);HiObject *iter();HiObject *next();HiObject *len();HiDict *obj_dict() { return _obj_dict; }void set_obj_dict(HiDict *x) { _obj_dict = x; }void init_dict();void *operator new(size_t size);// interfaces for GC.void oops_do(OopClosure *closure);size_t size();char *new_address();void set_new_address(char *addr);};/*** Meta klass for object system*/class TypeKlass : public Klass {private:TypeKlass() {}static TypeKlass *instance;public:static TypeKlass *get_instance();virtual void print(HiObject *obj);virtual HiObject *setattr(HiObject *x, HiObject *y, HiObject *z);virtual size_t size();virtual void oops_do(OopClosure *f, HiObject *obj);};class HiTypeObject : public HiObject {private:Klass *_own_klass;public:HiTypeObject();void set_own_klass(Klass *k);Klass *own_klass() { return _own_klass; }};#endif //PYTHONVM_HIOBJECT_HPP
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。