Add similar tactics to wxArray (and variants)

According to RobinD42, use cases in wxPython should be limited to Arrays that are full (no gaps)
This commit is contained in:
Mesalu
2018-01-06 11:36:39 -08:00
parent af084599a6
commit 24a6db6cd9

View File

@@ -1004,9 +1004,12 @@ def wxArrayWrapperTemplate(ArrayClass, ItemClass, module, itemIsPtr=False, getIt
if not getItemCopy:
getitemMeth = '''\
{ItemClass}{itemRef} __getitem__(ulong index);
{ItemClass}{itemRef} __getitem__(long index);
%MethodCode
if (index < sipCpp->GetCount()) {{
if (0 > index)
index += sipCpp->GetCount();
if ((index < sipCpp->GetCount()) && (0 <= index)) {{
sipRes = {addrOf}sipCpp->Item(index);
}}
else {{
@@ -1017,9 +1020,11 @@ def wxArrayWrapperTemplate(ArrayClass, ItemClass, module, itemIsPtr=False, getIt
'''.format(**locals())
else:
getitemMeth = '''\
{ItemClass}* __getitem__(ulong index) /Factory/;
{ItemClass}* __getitem__(long index) /Factory/;
%MethodCode
if (index < sipCpp->GetCount()) {{
if (0 > index)
index += sipCpp->GetCount();
if ((index < sipCpp->GetCount()) && (0 <= index)) {{
sipRes = new {ItemClass}(sipCpp->Item(index));
}}
else {{
@@ -1093,9 +1098,12 @@ public:
sipRes = sipCpp->GetCount();
%End
{ItemClass}* __getitem__(ulong index);
{ItemClass}* __getitem__(long index);
%MethodCode
if (index < sipCpp->GetCount()) {{
if (0 > index)
index += sipCpp->GetCount();
if ((index < sipCpp->GetCount()) && (0 <= index)) {{
sipRes = sipCpp->Item(index);
}}
else {{