@@ -31,27 +31,35 @@ public PyInt(IntPtr ptr) : base(ptr)
31
31
/// ArgumentException will be thrown if the given object is not a
32
32
/// Python int object.
33
33
/// </remarks>
34
- public PyInt ( PyObject o )
34
+ public PyInt ( PyObject o ) : base ( FromObject ( o ) )
35
35
{
36
- if ( ! IsIntType ( o ) )
36
+ }
37
+
38
+ private static IntPtr FromObject ( PyObject o )
39
+ {
40
+ if ( o == null || ! IsIntType ( o ) )
37
41
{
38
42
throw new ArgumentException ( "object is not an int" ) ;
39
43
}
40
44
Runtime . XIncref ( o . obj ) ;
41
- obj = o . obj ;
45
+ return o . obj ;
42
46
}
43
47
48
+ private static IntPtr FromInt ( int value )
49
+ {
50
+ IntPtr val = Runtime . PyInt_FromInt32 ( value ) ;
51
+ PythonException . ThrowIfIsNull ( val ) ;
52
+ return val ;
53
+ }
44
54
45
55
/// <summary>
46
56
/// PyInt Constructor
47
57
/// </summary>
48
58
/// <remarks>
49
59
/// Creates a new Python int from an int32 value.
50
60
/// </remarks>
51
- public PyInt ( int value )
61
+ public PyInt ( int value ) : base ( FromInt ( value ) )
52
62
{
53
- obj = Runtime . PyInt_FromInt32 ( value ) ;
54
- PythonException . ThrowIfIsNull ( obj ) ;
55
63
}
56
64
57
65
@@ -62,10 +70,8 @@ public PyInt(int value)
62
70
/// Creates a new Python int from a uint32 value.
63
71
/// </remarks>
64
72
[ CLSCompliant ( false ) ]
65
- public PyInt ( uint value )
73
+ public PyInt ( uint value ) : base ( FromLong ( value ) )
66
74
{
67
- obj = Runtime . PyInt_FromInt64 ( value ) ;
68
- PythonException . ThrowIfIsNull ( obj ) ;
69
75
}
70
76
71
77
@@ -75,10 +81,15 @@ public PyInt(uint value)
75
81
/// <remarks>
76
82
/// Creates a new Python int from an int64 value.
77
83
/// </remarks>
78
- public PyInt ( long value )
84
+ public PyInt ( long value ) : base ( FromLong ( value ) )
79
85
{
80
- obj = Runtime . PyInt_FromInt64 ( value ) ;
81
- PythonException . ThrowIfIsNull ( obj ) ;
86
+ }
87
+
88
+ private static IntPtr FromLong ( long value )
89
+ {
90
+ IntPtr val = Runtime . PyInt_FromInt64 ( value ) ;
91
+ PythonException . ThrowIfIsNull ( val ) ;
92
+ return val ;
82
93
}
83
94
84
95
@@ -89,10 +100,8 @@ public PyInt(long value)
89
100
/// Creates a new Python int from a uint64 value.
90
101
/// </remarks>
91
102
[ CLSCompliant ( false ) ]
92
- public PyInt ( ulong value )
103
+ public PyInt ( ulong value ) : base ( FromLong ( ( long ) value ) )
93
104
{
94
- obj = Runtime . PyInt_FromInt64 ( ( long ) value ) ;
95
- PythonException . ThrowIfIsNull ( obj ) ;
96
105
}
97
106
98
107
@@ -142,16 +151,21 @@ public PyInt(sbyte value) : this((int)value)
142
151
}
143
152
144
153
154
+ private static IntPtr FromString ( string value )
155
+ {
156
+ IntPtr val = Runtime . PyInt_FromString ( value , IntPtr . Zero , 0 ) ;
157
+ PythonException . ThrowIfIsNull ( val ) ;
158
+ return val ;
159
+ }
160
+
145
161
/// <summary>
146
162
/// PyInt Constructor
147
163
/// </summary>
148
164
/// <remarks>
149
165
/// Creates a new Python int from a string value.
150
166
/// </remarks>
151
- public PyInt ( string value )
167
+ public PyInt ( string value ) : base ( FromString ( value ) )
152
168
{
153
- obj = Runtime . PyInt_FromString ( value , IntPtr . Zero , 0 ) ;
154
- PythonException . ThrowIfIsNull ( obj ) ;
155
169
}
156
170
157
171
0 commit comments