WIP: minor fix

This commit is contained in:
S. Mahmudul Hasan 2023-10-14 13:24:20 -04:00
parent ff5e1a8de2
commit d17e1368da

View File

@ -55,7 +55,7 @@ namespace pkpy
vm->bind(type, "copy(self) -> deque", vm->bind(type, "copy(self) -> deque",
[](VM *vm, ArgsView args) [](VM *vm, ArgsView args)
{ {
//TODO: STILL MEMORY LEAKING?? // TODO: STILL MEMORY LEAKING??
PyDeque &self = _CAST(PyDeque &, args[0]); PyDeque &self = _CAST(PyDeque &, args[0]);
PyDeque *newDeque = new PyDeque(); PyDeque *newDeque = new PyDeque();
for (auto it = self.dequeItems.begin(); it != self.dequeItems.end(); ++it) for (auto it = self.dequeItems.begin(); it != self.dequeItems.end(); ++it)
@ -123,14 +123,14 @@ namespace pkpy
vm->bind(type, "insert(self, index, obj) -> None", vm->bind(type, "insert(self, index, obj) -> None",
[](VM *vm, ArgsView args) [](VM *vm, ArgsView args)
{ {
PyDeque &self = _CAST(PyDeque &, args[0]); PyDeque &self = _CAST(PyDeque &, args[0]);
int index = CAST(int, args[1]); int index = CAST(int, args[1]);
PyObject *obj = args[2]; PyObject *obj = args[2];
//TODO: HANDLE MAX SIZE CASE LATER -> Throw IndexError // TODO: HANDLE MAX SIZE CASE LATER -> Throw IndexError
self.insert(index, obj); self.insert(index, obj);
return vm->None; return vm->None;
}); });
vm->bind(type, "__repr__(self) -> str", vm->bind(type, "__repr__(self) -> str",
@ -158,14 +158,14 @@ namespace pkpy
vm->bind(type, "remove(self, obj) -> None", vm->bind(type, "remove(self, obj) -> None",
[](VM *vm, ArgsView args) [](VM *vm, ArgsView args)
{ {
PyDeque &self = _CAST(PyDeque &, args[0]); PyDeque &self = _CAST(PyDeque &, args[0]);
PyObject *obj = args[1]; PyObject *obj = args[1];
bool removed = self.remove(vm, obj); bool removed = self.remove(vm, obj);
if(!removed) if (!removed)
vm->ValueError(_CAST(Str &, vm->py_repr(obj)) + " is not in list"); vm->ValueError(_CAST(Str &, vm->py_repr(obj)) + " is not in list");
return vm->None; return vm->None;
}); });
vm->bind(type, "reverse(self) -> None", vm->bind(type, "reverse(self) -> None",
@ -176,14 +176,13 @@ namespace pkpy
return vm->None; return vm->None;
}); });
vm->bind(type, "rotate(self, n=1) -> None", vm->bind(type, "rotate(self, n=1) -> None",
[](VM *vm, ArgsView args) [](VM *vm, ArgsView args)
{ {
PyDeque &self = _CAST(PyDeque &, args[0]); PyDeque &self = _CAST(PyDeque &, args[0]);
int n = CAST(int, args[1]); int n = CAST(int, args[1]);
self.rotate(n); self.rotate(n);
return vm->None; return vm->None;
}); });
// vm->bind(type,"maxlen", // vm->bind(type,"maxlen",
@ -197,10 +196,10 @@ namespace pkpy
{ {
int direction = n > 0 ? 1 : -1; int direction = n > 0 ? 1 : -1;
int sz = this->dequeItems.size(); int sz = this->dequeItems.size();
n = abs(n); n = abs(n);
n = n % sz; // make sure n is in range n = n % sz; // make sure n is in range
for (int i = 0; i < n; i++) for (int i = 0; i < n; i++)
{ {
if (direction == 1) if (direction == 1)
@ -234,12 +233,12 @@ namespace pkpy
bool PyDeque::insert(int index, PyObject *item) bool PyDeque::insert(int index, PyObject *item)
{ {
if (index < 0) if (index < 0)
this->dequeItems.appendLeft(item); this->dequeItems.push_front(item);
else if(index >= this->dequeItems.size()) else if (index >= this->dequeItems.size())
this->dequeItems.append(item); this->dequeItems.push_back(item);
else else
this->dequeItems.insert((this->dequeItems.begin() + index), item); this->dequeItems.insert((this->dequeItems.begin() + index), item);
return true; return true;
} }