mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-25 14:00:18 +00:00
...
This commit is contained in:
parent
f4597ed01a
commit
e1fe3cd4dc
@ -26,10 +26,8 @@ class array2d[T]:
|
|||||||
@overload
|
@overload
|
||||||
def is_valid(self, pos: vec2i) -> bool: ...
|
def is_valid(self, pos: vec2i) -> bool: ...
|
||||||
|
|
||||||
@overload
|
def get[R](self, col: int, row: int, default: R = None) -> T | R:
|
||||||
def get[R](self, col: int, row: int, default: R) -> T | R: ...
|
"""Gets the value at the given position. If the position is out of bounds, return the default value."""
|
||||||
@overload
|
|
||||||
def get[R](self, pos: vec2i, default: R) -> T | R: ...
|
|
||||||
|
|
||||||
@overload
|
@overload
|
||||||
def __getitem__(self, index: tuple[int, int]) -> T: ...
|
def __getitem__(self, index: tuple[int, int]) -> T: ...
|
||||||
|
|||||||
@ -118,24 +118,17 @@ static bool array2d_is_valid(int argc, py_Ref argv) {
|
|||||||
static bool array2d_get(int argc, py_Ref argv) {
|
static bool array2d_get(int argc, py_Ref argv) {
|
||||||
py_Ref default_;
|
py_Ref default_;
|
||||||
c11_array2d* self = py_touserdata(argv);
|
c11_array2d* self = py_touserdata(argv);
|
||||||
int col, row;
|
|
||||||
if(argc == 3) {
|
|
||||||
// get[R](self, pos: vec2i, default: R) -> T | R
|
|
||||||
PY_CHECK_ARG_TYPE(1, tp_vec2i);
|
|
||||||
c11_vec2i pos = py_tovec2i(py_arg(1));
|
|
||||||
col = pos.x;
|
|
||||||
row = pos.y;
|
|
||||||
default_ = py_arg(2);
|
|
||||||
} else if(argc == 4) {
|
|
||||||
// get(self, col: int, row: int, default: T) -> T
|
|
||||||
PY_CHECK_ARG_TYPE(1, tp_int);
|
PY_CHECK_ARG_TYPE(1, tp_int);
|
||||||
PY_CHECK_ARG_TYPE(2, tp_int);
|
PY_CHECK_ARG_TYPE(2, tp_int);
|
||||||
col = py_toint(py_arg(1));
|
if(argc == 3) {
|
||||||
row = py_toint(py_arg(2));
|
default_ = py_None();
|
||||||
|
} else if(argc == 4) {
|
||||||
default_ = py_arg(3);
|
default_ = py_arg(3);
|
||||||
} else {
|
} else {
|
||||||
return TypeError("get() expected 3 or 4 arguments");
|
return TypeError("get() expected 2 or 3 arguments");
|
||||||
}
|
}
|
||||||
|
int col = py_toint(py_arg(1));
|
||||||
|
int row = py_toint(py_arg(2));
|
||||||
if(py_array2d_is_valid(self, col, row)) {
|
if(py_array2d_is_valid(self, col, row)) {
|
||||||
py_assign(py_retval(), py_array2d__get(self, col, row));
|
py_assign(py_retval(), py_array2d__get(self, col, row));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user