Skip to content

Commit da17611

Browse files
committed
Added VarHasAttr
1 parent ba57c13 commit da17611

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

Source/VarPyth.pas

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ function VarIsSubtypeOf(const ADerived, AType : Variant): Boolean;
7171
function VarIsNone(const AValue : Variant): Boolean;
7272
function VarIsTrue(const AValue : Variant): Boolean;
7373

74-
function VarModuleHasObject(const AModule : Variant; aObj: AnsiString): Boolean;
74+
function VarModuleHasObject(const AModule : Variant; const aObj: AnsiString): Boolean;
75+
function VarHasAttr(const AValue: Variant; const AAttr: AnsiString): Boolean;
7576

7677
function NewPythonList( const ASize : Integer = 0 ): Variant;
7778
function NewPythonTuple( const ASize : Integer ): Variant;
@@ -570,15 +571,22 @@ function VarIsTrue(const AValue : Variant): Boolean;
570571
Result := AValue; // the cast into a boolean will call the PyObject_IsTrue API.
571572
end;
572573

573-
function VarModuleHasObject(const AModule : Variant; aObj: AnsiString): Boolean;
574+
function VarModuleHasObject(const AModule : Variant; const aObj: AnsiString):
575+
Boolean;
574576
begin
575577
with GetPythonEngine do
576-
Result := VarIsPython(AModule) and
577-
PyModule_Check(ExtractPythonObjectFrom(AModule)) and
578+
Result := VarIsPythonModule(AModule) and
578579
Assigned(PyDict_GetItemString(
579580
PyModule_GetDict(ExtractPythonObjectFrom(AModule)),PAnsiChar(aObj)));
580581
end;
581582

583+
function VarHasAttr(const AValue: Variant; const AAttr: AnsiString): Boolean;
584+
begin
585+
with GetPythonEngine do
586+
Result := VarIsPython(AValue) and
587+
(PyObject_HasAttrString(ExtractPythonObjectFrom(AValue), PAnsiChar(AAttr)) = 1);
588+
end;
589+
582590
function NewPythonList( const ASize : Integer = 0 ): Variant;
583591
var
584592
_list : PPyObject;

0 commit comments

Comments
 (0)