Luxophia
1unit LUX.Graph;
2
3interface
4
5uses
6LUX;
7
8type
9
10TNodeLink<_TYPE_: class> = record
11private
12public
13o: _TYPE_;
14i: Integer;
15constructor Create(const o_: _TYPE_; const i_: Integer);
16class operator Implicit(const Node_: _TYPE_): TNodeLink<_TYPE_>;
17class operator Implicit(const Link_: TNodeLink<_TYPE_>): _TYPE_;
18end;
19
20TNode = class
21private
22protected
23public
24end;
25
26TRoot = class(TNode)
27private
28protected
29public
30end;
31
32TKnot = class(TNode)
33private
34protected
35public
36end;
37
38TLeaf = class(TNode)
39private
40protected
41public
42end;
43
44implementation // -------------------------------------------------------------
45
46constructor TNodeLink<_TYPE_>.Create(const o_: _TYPE_; const i_: Integer);
47begin
48o := o_;
49i := i_;
50end;
51
52class operator TNodeLink<_TYPE_>.Implicit(const Node_: _TYPE_)
53: TNodeLink<_TYPE_>;
54begin
55with Result do
56begin
57o := Node_;
58i := -1;
59end;
60end;
61
62class operator TNodeLink<_TYPE_>.Implicit(const Link_
63: TNodeLink<_TYPE_>): _TYPE_;
64begin
65Result := Link_.o;
66end;
67
68initialization // -------------------------------------------------------------
69
70finalization
71
72end.
73