mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-21 12:00:18 +00:00
up
This commit is contained in:
parent
0c2e239e97
commit
ea8d982866
@ -87,7 +87,7 @@ PyVar VM::run_frame(Frame* frame){
|
||||
PyVar clsBase = frame->pop_value(this);
|
||||
if(clsBase == None) clsBase = _t(tp_object);
|
||||
check_type(clsBase, tp_type);
|
||||
PyVar cls = new_type_object(frame->_module, name.first, clsBase);
|
||||
PyVar cls = new_type_object(frame->_module, name.first, OBJ_GET(Type, clsBase));
|
||||
frame->push(cls);
|
||||
} continue;
|
||||
case OP_END_CLASS: {
|
||||
|
@ -153,12 +153,12 @@ inline bool is_float(const PyVar& obj) noexcept {
|
||||
|
||||
#define PY_CLASS(T, mod, name) \
|
||||
static Type _type(VM* vm) { \
|
||||
static StrName __x0(#mod); \
|
||||
static StrName __x1(#name); \
|
||||
static const StrName __x0(#mod); \
|
||||
static const StrName __x1(#name); \
|
||||
return OBJ_GET(Type, vm->_modules[__x0]->attr(__x1)); \
|
||||
} \
|
||||
static PyVar register_class(VM* vm, PyVar mod) { \
|
||||
PyVar type = vm->new_type_object(mod, #name, vm->_t(vm->tp_object));\
|
||||
PyVar type = vm->new_type_object(mod, #name, vm->tp_object); \
|
||||
if(OBJ_NAME(mod) != #mod) UNREACHABLE(); \
|
||||
T::_register(vm, mod, type); \
|
||||
type->attr()._try_perfect_rehash(); \
|
||||
|
@ -202,6 +202,7 @@ const StrName __json__ = StrName::get("__json__");
|
||||
const StrName __name__ = StrName::get("__name__");
|
||||
const StrName __len__ = StrName::get("__len__");
|
||||
const StrName __get__ = StrName::get("__get__");
|
||||
const StrName __set__ = StrName::get("__set__");
|
||||
const StrName __getattr__ = StrName::get("__getattr__");
|
||||
const StrName __setattr__ = StrName::get("__setattr__");
|
||||
const StrName __call__ = StrName::get("__call__");
|
||||
|
@ -96,6 +96,15 @@ namespace pkpy {
|
||||
return ret;
|
||||
}
|
||||
|
||||
template<typename T1, typename T2, typename T3>
|
||||
Args three_args(T1&& a, T2&& b, T3&& c) {
|
||||
Args ret(3);
|
||||
ret[0] = std::forward<T1>(a);
|
||||
ret[1] = std::forward<T2>(b);
|
||||
ret[2] = std::forward<T3>(c);
|
||||
return ret;
|
||||
}
|
||||
|
||||
typedef Args Tuple;
|
||||
THREAD_LOCAL SmallArrayPool<PyVar, 10> Args::_pool;
|
||||
} // namespace pkpy
|
Loading…
x
Reference in New Issue
Block a user