mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 19:40:18 +00:00
update Tuple
's constructor
This commit is contained in:
parent
067c333de9
commit
068abe347f
@ -172,7 +172,7 @@ struct PyLuaTable: PyLuaObject{
|
||||
lua_rawgeti(_L, LUA_REGISTRYINDEX, self.r);
|
||||
List ret;
|
||||
table_apply(vm, [&](PyObject* key, PyObject* val){
|
||||
PyObject* item = VAR(Tuple({key, val}));
|
||||
PyObject* item = VAR(Tuple(key, val));
|
||||
ret.push_back(item);
|
||||
});
|
||||
lua_pop(_L, 1);
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <algorithm>
|
||||
#include <initializer_list>
|
||||
#include <variant>
|
||||
#include <type_traits>
|
||||
#include <random>
|
||||
|
@ -15,12 +15,14 @@ struct Tuple {
|
||||
int _size;
|
||||
|
||||
Tuple(int n);
|
||||
Tuple(std::initializer_list<PyObject*> list);
|
||||
Tuple(const Tuple& other);
|
||||
Tuple(Tuple&& other) noexcept;
|
||||
Tuple(List&& other) noexcept;
|
||||
~Tuple();
|
||||
|
||||
Tuple(PyObject*, PyObject*);
|
||||
Tuple(PyObject*, PyObject*, PyObject*);
|
||||
|
||||
bool is_inlined() const { return _args == _inlined; }
|
||||
PyObject*& operator[](int i){ return _args[i]; }
|
||||
PyObject* operator[](int i) const { return _args[i]; }
|
||||
|
@ -205,7 +205,7 @@ void add_module_math(VM* vm){
|
||||
vm->bind_func<1>(mod, "modf", [](VM* vm, ArgsView args) {
|
||||
f64 i;
|
||||
f64 f = std::modf(CAST_F(args[0]), &i);
|
||||
return VAR(Tuple({VAR(f), VAR(i)}));
|
||||
return VAR(Tuple(VAR(f), VAR(i)));
|
||||
});
|
||||
|
||||
vm->bind_func<1>(mod, "factorial", [](VM* vm, ArgsView args) {
|
||||
|
@ -164,7 +164,7 @@ void init_builtins(VM* _vm) {
|
||||
i64 rhs = CAST(i64, args[1]);
|
||||
if(rhs == 0) vm->ZeroDivisionError();
|
||||
auto res = std::div(lhs, rhs);
|
||||
return VAR(Tuple({VAR(res.quot), VAR(res.rem)}));
|
||||
return VAR(Tuple(VAR(res.quot), VAR(res.rem)));
|
||||
}else{
|
||||
return vm->call_method(args[0], __divmod__, args[1]);
|
||||
}
|
||||
@ -1056,7 +1056,7 @@ void init_builtins(VM* _vm) {
|
||||
MappingProxy& self = _CAST(MappingProxy&, args[0]);
|
||||
List items;
|
||||
for(auto& item : self.attr().items()){
|
||||
PyObject* t = VAR(Tuple({VAR(item.first.sv()), item.second}));
|
||||
PyObject* t = VAR(Tuple(VAR(item.first.sv()), item.second));
|
||||
items.push_back(std::move(t));
|
||||
}
|
||||
return VAR(std::move(items));
|
||||
@ -1216,7 +1216,7 @@ void init_builtins(VM* _vm) {
|
||||
Tuple items(self.size());
|
||||
int j = 0;
|
||||
self.apply([&](PyObject* k, PyObject* v){
|
||||
items[j++] = VAR(Tuple({k, v}));
|
||||
items[j++] = VAR(Tuple(k, v));
|
||||
});
|
||||
return VAR(std::move(items));
|
||||
});
|
||||
|
@ -33,9 +33,15 @@ Tuple::Tuple(List&& other) noexcept {
|
||||
other._data = nullptr;
|
||||
}
|
||||
|
||||
Tuple::Tuple(std::initializer_list<PyObject*> list): Tuple(list.size()){
|
||||
int i = 0;
|
||||
for(PyObject* obj: list) _args[i++] = obj;
|
||||
Tuple::Tuple(PyObject* _0, PyObject* _1): Tuple(2){
|
||||
_args[0] = _0;
|
||||
_args[1] = _1;
|
||||
}
|
||||
|
||||
Tuple::Tuple(PyObject* _0, PyObject* _1, PyObject* _2): Tuple(3){
|
||||
_args[0] = _0;
|
||||
_args[1] = _1;
|
||||
_args[2] = _2;
|
||||
}
|
||||
|
||||
Tuple::~Tuple(){ if(!is_inlined()) pool64_dealloc(_args); }
|
||||
|
Loading…
x
Reference in New Issue
Block a user