From bdcf743e892913478195ff4a5decd0f634b62159 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sun, 9 Oct 2011 07:31:03 +0000 Subject: [PATCH] Some fixes for Array WrapperTemplate and ListWraperTemplate dealign with raising IndexError and using references instead of values in some places git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@69333 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- etgtools/tweaker_tools.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/etgtools/tweaker_tools.py b/etgtools/tweaker_tools.py index 1781d714..1ebc87a3 100644 --- a/etgtools/tweaker_tools.py +++ b/etgtools/tweaker_tools.py @@ -540,8 +540,10 @@ public: if (node) sipRes = ({ItemClass}*)node->GetData(); }} - PyErr_SetString(PyExc_IndexError, "sequence index out of range"); - sipError = sipErrorFail; + else {{ + PyErr_SetString(PyExc_IndexError, "sequence index out of range"); + sipError = sipErrorFail; + }} %End int __contains__(const {ItemClass}* obj); @@ -599,30 +601,32 @@ public: sipRes = sipCpp->GetCount(); %End - {ItemClass} __getitem__(size_t index); + {ItemClass}& __getitem__(size_t index); %MethodCode if (index < sipCpp->GetCount()) {{ sipRes = &({RealItemClass})sipCpp->Item(index); }} - PyErr_SetString(PyExc_IndexError, "sequence index out of range"); - sipError = sipErrorFail; + else {{ + PyErr_SetString(PyExc_IndexError, "sequence index out of range"); + sipError = sipErrorFail; + }} %End - int __contains__(const {ItemClass} obj); + int __contains__(const {ItemClass}& obj); %MethodCode int idx = sipCpp->Index(({RealItemClass})*obj, false); sipRes = idx != wxNOT_FOUND; %End - void append(const {ItemClass} obj); + void append(const {ItemClass}& obj); %MethodCode sipCpp->Add(({RealItemClass})*obj); %End // TODO: add support for index(value, [start, [stop]]) - int index({ItemClass} obj); + int index(const {ItemClass}& obj); %MethodCode - int idx = sipCpp->Index((const {RealItemClass})obj, false); + int idx = sipCpp->Index(({RealItemClass})*obj, false); if (idx == wxNOT_FOUND) {{ sipError = sipErrorFail; PyErr_SetString(PyExc_ValueError,