git @ Cat's Eye Technologies Dipple / master oberon / AssocDemo.mod
master

Tree @master (Download .tar.gz)

AssocDemo.mod @masterraw · history · blame

MODULE AssocDemo;

(*
 * SPDX-FileCopyrightText: Chris Pressey, the original author of this work, has dedicated it to the public domain.
 * For more information, please refer to <https://unlicense.org/>
 * SPDX-License-Identifier: Unlicense
 *)

IMPORT Out, AssocList;

PROCEDURE DisplayValue*(v: AssocList.ValuePtr);
BEGIN
  IF v # NIL THEN
    Out.String(v^.str);
  ELSE
    Out.String("...");
  END;
END DisplayValue;

PROCEDURE Scan(list: AssocList.ListPtr);
  VAR
    k: INTEGER;
BEGIN
  FOR k := 1 TO 10 DO
    Out.Int(k * 10, 3);
    Out.String(" ");
    DisplayValue(AssocList.Lookup(list, k * 10));
    Out.Ln;
  END;
  Out.Ln
END Scan;

PROCEDURE Demo*;
  VAR
    a, b: AssocList.ListPtr;
    r: BOOLEAN;
BEGIN
  a := AssocList.Empty();
  r := AssocList.Insert(a, 40, "Hello");
  ASSERT(r);
  r := AssocList.Insert(a, 80, "World");
  ASSERT(r);
  r := AssocList.Insert(a, 20, "!");
  ASSERT(r);
  Scan(a);
  AssocList.Remove(a, 80);
  Scan(a);

  b := AssocList.Empty();
  r := AssocList.Insert(b, 30, "Wonderful");
  ASSERT(r);
  r := AssocList.Insert(b, 70, "Fantastic");
  ASSERT(r);

  r := AssocList.Merge(a, b);
  ASSERT(r);
  Scan(a)

END Demo;

BEGIN
END AssocDemo.