|
@@ -535,6 +535,7 @@ interface
|
|
|
procedure set_parent(c : tobjectdef);
|
|
|
function find_destructor: tprocdef;
|
|
|
function implements_any_interfaces: boolean;
|
|
|
+ function register_implemented_interface(intfdef:tobjectdef;useguid:boolean):timplementedinterface;
|
|
|
{ dispinterface support }
|
|
|
function get_next_dispid: longint;
|
|
|
{ enumerator support }
|
|
@@ -8115,6 +8116,17 @@ implementation
|
|
|
(assigned(childof) and childof.implements_any_interfaces);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+ function tobjectdef.register_implemented_interface(intfdef:tobjectdef;useguid:boolean):timplementedinterface;
|
|
|
+ begin
|
|
|
+ { allocate the GUID only if the class implements at least one interface }
|
|
|
+ if useguid then
|
|
|
+ prepareguid;
|
|
|
+ result:=timplementedinterface.create(intfdef);
|
|
|
+ ImplementedInterfaces.Add(result);
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
function tobjectdef.size : asizeint;
|
|
|
begin
|
|
|
if objecttype in [odt_class,odt_interfacecom,odt_interfacecorba,odt_dispinterface,odt_objcclass,odt_objcprotocol,odt_helper,odt_javaclass,odt_interfacejava] then
|