t_classsibling.mod 636 B

123456789101112131415161718192021222324
  1. MODULE TClassSibling;
  2. (* A method body calls a sibling method by its bare name; it is a
  3. call on THIS. Exit 7. *)
  4. VAR ExitCode : INTEGER;
  5. TYPE
  6. CLASS Acc;
  7. total : INTEGER;
  8. PROCEDURE Add(v : INTEGER);
  9. PROCEDURE AddTwice(a, b : INTEGER);
  10. PROCEDURE Get() : INTEGER;
  11. END Acc;
  12. CLASS IMPLEMENTATION Acc;
  13. PROCEDURE Add(v : INTEGER);
  14. BEGIN total := total + v END Add;
  15. PROCEDURE AddTwice(a, b : INTEGER);
  16. BEGIN Add(a); Add(b) END AddTwice; (* sibling calls *)
  17. PROCEDURE Get() : INTEGER;
  18. BEGIN RETURN total END Get;
  19. END Acc;
  20. VAR c : Acc;
  21. BEGIN
  22. c.AddTwice(3, 4);
  23. ExitCode := c.Get()
  24. END TClassSibling.