[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]