@@ -41,10 +41,17 @@ CPointer* ExtractPointer(object oPtr);
41
41
// ============================================================================
42
42
inline object GetObjectPointer (object obj)
43
43
{
44
- if (!PyObject_HasAttrString (obj .ptr (), GET_PTR_NAME ))
44
+ object _ptr;
45
+ try
46
+ {
47
+ _ptr = obj.attr (GET_PTR_NAME);
48
+ }
49
+ catch (...)
50
+ {
45
51
BOOST_RAISE_EXCEPTION (PyExc_ValueError, " Unable to retrieve a pointer of this object." );
52
+ }
46
53
47
- return obj . attr ( GET_PTR_NAME ) ();
54
+ return _ptr ();
48
55
}
49
56
50
57
@@ -53,14 +60,21 @@ inline object GetObjectPointer(object obj)
53
60
// ============================================================================
54
61
inline object MakeObject (object cls, object oPtr)
55
62
{
56
- if (!PyObject_HasAttrString (cls .ptr (), GET_OBJ_NAME ))
63
+ object _obj;
64
+ try
65
+ {
66
+ _obj = cls.attr (GET_OBJ_NAME);
67
+ }
68
+ catch (...)
69
+ {
57
70
BOOST_RAISE_EXCEPTION (PyExc_ValueError, " Unable to make an object using this class." );
71
+ }
58
72
59
73
CPointer* pPtr = ExtractPointer (oPtr);
60
74
if (!pPtr->IsValid ())
61
75
BOOST_RAISE_EXCEPTION (PyExc_ValueError, " Pointer is NULL." );
62
76
63
- return cls . attr ( GET_OBJ_NAME ) (pPtr );
77
+ return _obj (pPtr);
64
78
}
65
79
66
80
@@ -69,10 +83,17 @@ inline object MakeObject(object cls, object oPtr)
69
83
// ============================================================================
70
84
inline object GetSize (object cls)
71
85
{
72
- if (!PyObject_HasAttrString (cls .ptr (), GET_SIZE_NAME ))
86
+ object _size;
87
+ try
88
+ {
89
+ _size = cls.attr (GET_SIZE_NAME);
90
+ }
91
+ catch (...)
92
+ {
73
93
BOOST_RAISE_EXCEPTION (PyExc_ValueError, " Unable to retrieve the size of this class." );
94
+ }
74
95
75
- return cls . attr ( GET_SIZE_NAME ) ;
96
+ return _size ;
76
97
}
77
98
78
99
0 commit comments