Skip to content

Commit 07001b7

Browse files
committed
Including new Python C API types
1 parent 5aaa829 commit 07001b7

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

Source/PythonEngine.pas

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1612,6 +1612,7 @@ TPythonInterface=class(TDynamicDll)
16121612
PyBytes_Size:function (ob:PPyObject):NativeInt; cdecl;
16131613
PyBytes_DecodeEscape:function(s:PAnsiChar; len:NativeInt; errors:PAnsiChar; unicode:NativeInt; recode_encoding:PAnsiChar):PPyObject; cdecl;
16141614
PyBytes_Repr:function(ob:PPyObject; smartquotes:integer):PPyObject; cdecl;
1615+
PyBytes_FromObject: function(ob:PPyObject): PPyObject; cdecl;
16151616
PyByteArray_Concat: procedure(var ob1: PPyObject; ob2: PPyObject); cdecl;
16161617
PyByteArray_Resize: procedure(var ob1: PPyObject; len: Py_ssize_t); cdecl;
16171618
PyByteArray_FromObject: function(ob:PPyObject): PPyObject; cdecl;
@@ -1986,6 +1987,7 @@ TPythonEngine = class(TPythonInterface)
19861987
function PyUnicodeAsString( obj : PPyObject ) : UnicodeString;
19871988
function PyUnicodeAsUTF8String( obj : PPyObject ) : RawByteString;
19881989
function PyBytesAsAnsiString( obj : PPyObject ) : AnsiString;
1990+
function PyByteArrayAsAnsiString( obj : PPyObject ) : AnsiString;
19891991

19901992
// Public Properties
19911993
property ClientCount : Integer read GetClientCount;
@@ -3810,6 +3812,7 @@ procedure TPythonInterface.MapDll;
38103812
PyBytes_DecodeEscape := Import('PyBytes_DecodeEscape');
38113813
PyBytes_Repr := Import('PyBytes_Repr');
38123814
_PyBytes_Resize := Import('_PyBytes_Resize');
3815+
PyBytes_FromObject := Import('PyBytes_FromObject');
38133816
PyByteArray_AsString := Import('PyByteArray_AsString');
38143817
PyByteArray_Concat := Import('PyByteArray_Concat');
38153818
PyByteArray_Resize := Import('PyByteArray_Resize');
@@ -6040,6 +6043,21 @@ procedure TPythonEngine.PyTupleToStrings( tuple: PPyObject; strings : TStrings )
60406043
strings.Add( PyObjectAsString( PyTuple_GetItem( tuple, i ) ) );
60416044
end;
60426045

6046+
function TPythonEngine.PyByteArrayAsAnsiString(obj: PPyObject): AnsiString;
6047+
var
6048+
LBuffer: PAnsiChar;
6049+
LSize: Py_ssize_t;
6050+
begin
6051+
if PyByteArray_Check(obj) then
6052+
begin
6053+
LSize := PyByteArray_Size(obj);
6054+
LBuffer := PyByteArray_AsString(obj);
6055+
SetString(Result, LBuffer, LSize);
6056+
end
6057+
else
6058+
raise EPythonError.CreateFmt(SPyConvertionError, ['PyByteArrayAsAnsiString', 'ByteArray']);
6059+
end;
6060+
60436061
function TPythonEngine.PyBytesAsAnsiString(obj: PPyObject): AnsiString;
60446062
var
60456063
buffer: PAnsiChar;

0 commit comments

Comments
 (0)