Skip to content

Commit 83089d8

Browse files
committed
Use size_t, update .pyi
1 parent 54372c5 commit 83089d8

3 files changed

Lines changed: 38 additions & 23 deletions

File tree

Python/PRP/Avatar/pyClothingItem.cpp

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,18 @@ PY_METHOD_VA(ClothingItem, getElementTexture,
7070
"Params: element, layer\n"
7171
"Gets the Key of the texture for the specified element and layer")
7272
{
73-
int element, layer;
74-
if (!PyArg_ParseTuple(args, "ii", &element, &layer)) {
73+
Py_ssize_t element, layer;
74+
if (!PyArg_ParseTuple(args, "nn", &element, &layer)) {
7575
PyErr_SetString(PyExc_TypeError, "getElementTexture expects int, int");
7676
return nullptr;
7777
}
7878

79-
if (element >= 0 && element < self->fThis->getNumElements()) {
80-
if (layer >= 0 && layer < plClothingItem::kLayerMax) {
81-
return pyPlasma_convert(self->fThis->getElementTexture(element, layer));
79+
size_t element_s = size_t(element);
80+
size_t layer_s = size_t(layer);
81+
82+
if (element_s < self->fThis->getNumElements()) {
83+
if (layer_s < plClothingItem::kLayerMax) {
84+
return pyPlasma_convert(self->fThis->getElementTexture(element_s, layer_s));
8285
}
8386

8487
PyErr_SetString(PyExc_IndexError, "layer index out of range");
@@ -93,10 +96,10 @@ PY_METHOD_VA(ClothingItem, setElementTexture,
9396
"Params: element idx, layer idx, texture\n"
9497
"Sets the texture of the specified element and layer")
9598
{
96-
int element, layer;
99+
Py_ssize_t element, layer;
97100
pyKey* key;
98101

99-
if (!PyArg_ParseTuple(args, "iiO", &element, &layer, &key)) {
102+
if (!PyArg_ParseTuple(args, "nnO", &element, &layer, &key)) {
100103
PyErr_SetString(PyExc_TypeError, "setElementTexture expects int, int, plKey");
101104
return nullptr;
102105
}
@@ -105,9 +108,12 @@ PY_METHOD_VA(ClothingItem, setElementTexture,
105108
return nullptr;
106109
}
107110

108-
if (element >= 0 && element < self->fThis->getNumElements()) {
109-
if (layer >= 0 && layer < plClothingItem::kLayerMax) {
110-
self->fThis->setElementTexture(element, layer, *(key->fThis));
111+
size_t element_s = size_t(element);
112+
size_t layer_s = size_t(layer);
113+
114+
if (element_s < self->fThis->getNumElements()) {
115+
if (layer_s < plClothingItem::kLayerMax) {
116+
self->fThis->setElementTexture(element_s, layer_s, *(key->fThis));
111117
Py_RETURN_NONE;
112118
}
113119

@@ -123,14 +129,16 @@ PY_METHOD_VA(ClothingItem, getElementName,
123129
"Params: element idx\n"
124130
"Gets the name of the specified element")
125131
{
126-
int element;
127-
if (!PyArg_ParseTuple(args, "i", &element)) {
132+
Py_ssize_t element;
133+
if (!PyArg_ParseTuple(args, "n", &element)) {
128134
PyErr_SetString(PyExc_TypeError, "getElementName expects int");
129135
return nullptr;
130136
}
131137

132-
if (element >= 0 && element < self->fThis->getNumElements())
133-
return pyPlasma_convert(self->fThis->getElementName(element));
138+
size_t element_s = size_t(element);
139+
140+
if (element_s < self->fThis->getNumElements())
141+
return pyPlasma_convert(self->fThis->getElementName(element_s));
134142

135143
PyErr_SetString(PyExc_IndexError, "element index out of range");
136144
return nullptr;
@@ -140,15 +148,17 @@ PY_METHOD_VA(ClothingItem, setElementName,
140148
"Params: element idx, name\n"
141149
"Sets the name of the specified element")
142150
{
143-
int element;
151+
Py_ssize_t element;
144152
const char* name;
145-
if (!PyArg_ParseTuple(args, "is", &element, &name)) {
153+
if (!PyArg_ParseTuple(args, "ns", &element, &name)) {
146154
PyErr_SetString(PyExc_TypeError, "setElementName expects int, string");
147155
return nullptr;
148156
}
149157

150-
if (element >= 0 && element < self->fThis->getNumElements()) {
151-
self->fThis->setElementName(element, name);
158+
size_t element_s = size_t(element);
159+
160+
if (element_s < self->fThis->getNumElements()) {
161+
self->fThis->setElementName(element_s, name);
152162
Py_RETURN_NONE;
153163
}
154164

@@ -174,14 +184,16 @@ PY_METHOD_VA(ClothingItem, delElement,
174184
"Params: element idx\n"
175185
"Remove an element from the clothingItem")
176186
{
177-
int idx;
178-
if (!PyArg_ParseTuple(args, "i", &idx)) {
187+
Py_ssize_t idx;
188+
if (!PyArg_ParseTuple(args, "n", &idx)) {
179189
PyErr_SetString(PyExc_TypeError, "delElement expects an int");
180190
return nullptr;
181191
}
182192

183-
if (idx >= 0 && idx < self->fThis->getNumElements()) {
184-
self->fThis->delElement(idx);
193+
size_t idx_s = size_t(idx);
194+
195+
if (idx_s < self->fThis->getNumElements()) {
196+
self->fThis->delElement(idx_s);
185197
Py_RETURN_NONE;
186198
}
187199

Python/PyHSPlasma.pyi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1671,6 +1671,7 @@ class plClothingItem(hsKeyedObject):
16711671
kLODLow: int = ...
16721672
kLODMedium: int = ...
16731673
kLayerBase: int = ...
1674+
kLayerMax: int = ...
16741675
kLayerSkin: int = ...
16751676
kLayerSkinBlend1: int = ...
16761677
kLayerSkinBlend2: int = ...
@@ -1680,6 +1681,7 @@ class plClothingItem(hsKeyedObject):
16801681
kLayerSkinBlend6: int = ...
16811682
kLayerTint1: int = ...
16821683
kLayerTint2: int = ...
1684+
kNumLODLevels: int = ...
16831685
kSetBackpack: int = ...
16841686
kSetEye: int = ...
16851687
kSetFace: int = ...
@@ -1708,6 +1710,7 @@ class plClothingItem(hsKeyedObject):
17081710
group: int = ...
17091711
icon: Optional[plKey[plMipmap]] = ...
17101712
itemName: str = ...
1713+
numElements: int = ...
17111714
sortOrder: int = ...
17121715
tileset: int = ...
17131716
type: int = ...

core/PRP/Avatar/plClothingItem.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ class HSPLASMA_EXPORT plClothingItem : public hsKeyedObject
199199
void addElement(const ST::string& elementName);
200200

201201
/** Return the number of elements in the clothing item. */
202-
int getNumElements() const { return fElementNames.size(); }
202+
size_t getNumElements() const { return fElementNames.size(); }
203203

204204
/**
205205
* Sets the texture for element number \a element, at layer \a layer

0 commit comments

Comments
 (0)