1- public class PyAnsiString : PySequence {
2- /// <summary>
3- /// PyAnsiString Constructor
4- /// </summary>
5- ///
6- /// <remarks>
7- /// Creates a new PyAnsiString from an existing object reference. Note
8- /// that the instance assumes ownership of the object reference.
9- /// The object reference is not checked for type-correctness.
10- /// </remarks>
11-
12- public PyAnsiString ( IntPtr ptr ) : base ( ptr ) { }
13-
14-
15- /// <summary>
16- /// PyString Constructor
17- /// </summary>
18- ///
19- /// <remarks>
20- /// Copy constructor - obtain a PyAnsiString from a generic PyObject.
21- /// An ArgumentException will be thrown if the given object is not
22- /// a Python string object.
23- /// </remarks>
24-
25- public PyAnsiString ( PyObject o )
26- : base ( ) {
27- if ( ! IsStringType ( o ) ) {
28- throw new ArgumentException ( "object is not a string" ) ;
29- }
30- Runtime . Incref ( o . obj ) ;
31- obj = o . obj ;
32- }
33-
34-
35- /// <summary>
36- /// PyAnsiString Constructor
37- /// </summary>
38- ///
39- /// <remarks>
40- /// Creates a Python string from a managed string.
41- /// </remarks>
42-
43- public PyAnsiString ( string s )
44- : base ( ) {
45- obj = Runtime . PyString_FromStringAndSize ( s , s . Length ) ;
46- if ( obj == IntPtr . Zero ) {
47- throw new PythonException ( ) ;
48- }
49- }
50-
51-
52- /// <summary>
53- /// IsStringType Method
54- /// </summary>
55- ///
56- /// <remarks>
57- /// Returns true if the given object is a Python string.
58- /// </remarks>
59-
60- public static bool IsStringType ( PyObject value ) {
61- return Runtime . PyString_Check ( value . obj ) ;
62- }
1+ // ==========================================================================
2+ // This is a user contribution to the pythondotnet project.
3+ // THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
4+ // WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
5+ // WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
6+ // FOR A PARTICULAR PURPOSE.
7+ // ==========================================================================
8+
9+ using System ;
10+
11+ namespace Python . Runtime {
12+
13+ public class PyAnsiString : PySequence
14+ {
15+ /// <summary>
16+ /// PyAnsiString Constructor
17+ /// </summary>
18+ ///
19+ /// <remarks>
20+ /// Creates a new PyAnsiString from an existing object reference. Note
21+ /// that the instance assumes ownership of the object reference.
22+ /// The object reference is not checked for type-correctness.
23+ /// </remarks>
24+
25+ public PyAnsiString ( IntPtr ptr ) : base ( ptr ) { }
26+
27+
28+ /// <summary>
29+ /// PyString Constructor
30+ /// </summary>
31+ ///
32+ /// <remarks>
33+ /// Copy constructor - obtain a PyAnsiString from a generic PyObject.
34+ /// An ArgumentException will be thrown if the given object is not
35+ /// a Python string object.
36+ /// </remarks>
37+
38+ public PyAnsiString ( PyObject o )
39+ : base ( )
40+ {
41+ if ( ! IsStringType ( o ) )
42+ {
43+ throw new ArgumentException ( "object is not a string" ) ;
44+ }
45+ Runtime . Incref ( o . obj ) ;
46+ obj = o . obj ;
47+ }
48+
49+
50+ /// <summary>
51+ /// PyAnsiString Constructor
52+ /// </summary>
53+ ///
54+ /// <remarks>
55+ /// Creates a Python string from a managed string.
56+ /// </remarks>
57+
58+ public PyAnsiString ( string s )
59+ : base ( )
60+ {
61+ obj = Runtime . PyString_FromStringAndSize ( s , s . Length ) ;
62+ if ( obj == IntPtr . Zero )
63+ {
64+ throw new PythonException ( ) ;
65+ }
66+ }
67+
68+
69+ /// <summary>
70+ /// IsStringType Method
71+ /// </summary>
72+ ///
73+ /// <remarks>
74+ /// Returns true if the given object is a Python string.
75+ /// </remarks>
76+
77+ public static bool IsStringType ( PyObject value )
78+ {
79+ return Runtime . PyString_Check ( value . obj ) ;
80+ }
81+ }
6382}
0 commit comments