[Back to OOP SWAG index] [Back to Main SWAG index] [Original]
{
Stuart Maclean
Hi there, I've found a neat way of passing an Object a method of its own
class, which it then executes. The idea comes from Smalltalk's
change/update mechanism For dependencies under the MVC paradigm.
Works under TP6.
}
Type
DependentPtr = ^Dependent;
Dependent = Object
Procedure Update(p : Pointer);
Procedure SomeMethod;
end;
Model = Object
dep : DependentPtr;
Procedure Change;
end;
Procedure Dependent.Update; Assembler;
Asm
les di, self
push es
push di
call dWord ptr p
end;
Procedure Dependent.SomeMethod;
begin
{ do something here }
end;
Procedure Model.Change;
begin
dep^.Update(@Dependent.Somemethod);
end;
Var
m : Model;
d : Dependent;
begin
m.dep := @d; { add d as a dependent of m }
m.Change; { caUses d to be updated }
end.
[Back to OOP SWAG index] [Back to Main SWAG index] [Original]