Luxophia

Форк
0
/
LUX.Graph.pas 
72 строки · 1.1 Кб
1
unit LUX.Graph;
2

3
interface
4

5
uses
6
  LUX;
7

8
type
9

10
  TNodeLink<_TYPE_: class> = record
11
  private
12
  public
13
    o: _TYPE_;
14
    i: Integer;
15
    constructor Create(const o_: _TYPE_; const i_: Integer);
16
    class operator Implicit(const Node_: _TYPE_): TNodeLink<_TYPE_>;
17
    class operator Implicit(const Link_: TNodeLink<_TYPE_>): _TYPE_;
18
  end;
19

20
  TNode = class
21
  private
22
  protected
23
  public
24
  end;
25

26
  TRoot = class(TNode)
27
  private
28
  protected
29
  public
30
  end;
31

32
  TKnot = class(TNode)
33
  private
34
  protected
35
  public
36
  end;
37

38
  TLeaf = class(TNode)
39
  private
40
  protected
41
  public
42
  end;
43

44
implementation // -------------------------------------------------------------
45

46
constructor TNodeLink<_TYPE_>.Create(const o_: _TYPE_; const i_: Integer);
47
begin
48
  o := o_;
49
  i := i_;
50
end;
51

52
class operator TNodeLink<_TYPE_>.Implicit(const Node_: _TYPE_)
53
  : TNodeLink<_TYPE_>;
54
begin
55
  with Result do
56
  begin
57
    o := Node_;
58
    i := -1;
59
  end;
60
end;
61

62
class operator TNodeLink<_TYPE_>.Implicit(const Link_
63
  : TNodeLink<_TYPE_>): _TYPE_;
64
begin
65
  Result := Link_.o;
66
end;
67

68
initialization // -------------------------------------------------------------
69

70
finalization
71

72
end.
73

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.