File: WatchesPrgProc.inc

package info (click to toggle)
lazarus 2.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 214,460 kB
  • sloc: pascal: 1,862,622; xml: 265,709; cpp: 56,595; sh: 3,008; java: 609; makefile: 535; perl: 297; sql: 222; ansic: 137
file content (84 lines) | stat: -rw-r--r-- 2,724 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

{%region FooFunc}
  {$IFDEF FooFunc_Param}
  //procedure FooFunc(
    ArgProcedure: TProcedure;             var VArgProcedure: TProcedure;
    ArgFunction: TFunction;               var VArgFunction: TFunction;
    ArgObjProcedure: TObjProcedure;       var VArgObjProcedure: TObjProcedure;
    ArgObjFunction: TObjFunction;         var VArgObjFunction: TObjFunction;
  {$ENDIF}

  {$IFDEF FooFunc_LocalVar}
  //var
    VarProcedureA: procedure(a1: Integer; var a2: String);
    VarFunctionA:  function(a1: Integer; var a2: String): Integer;
    VarObjProcedureA: procedure(a1: Integer; var a2: String) of object;
    VarObjFunctionA:  function(a1: Integer; var a2: String): Integer of object;
  {$ENDIF}

  {$IFDEF FooFunc_Body}
  //begin
    VarProcedureA := ArgProcedure;
    VarFunctionA := ArgFunction;
    VarObjProcedureA := ArgObjProcedure;
    VarObjFunctionA := ArgObjFunction;
  {$ENDIF}
{%endregion FooFunc}

{%region GLOBAL}
  {$IFDEF Global_Implementation}
    procedure ProcProcedure(a1: Integer; var a2: String); begin end;
    function  FuncFunction(a1: Integer; var a2: String): Integer; begin end;
    type
      TMethodHolderClass = class
      public
        procedure ProcObjProcedure(a1: Integer; var a2: String);
        function  FuncObjFuntion(a1: Integer; var a2: String): Integer;
      end;
    procedure TMethodHolderClass.ProcObjProcedure(a1: Integer; var a2: String); begin end;
    function  TMethodHolderClass.FuncObjFuntion(a1: Integer; var a2: String): Integer; begin end;
  {$ENDIF}

  {$IFDEF Global_Type}
  //type
    TProcedure = procedure(a1: Integer; var a2: String);
    TFunction  = function(a1: Integer; var a2: String): Integer;
    TObjProcedure = procedure(a1: Integer; var a2: String) of object;
    TObjFunction  = function(a1: Integer; var a2: String): Integer of object;
  {$ENDIF}

  {$IFDEF Global_Var}
  //var
    MethodHolderClass: TMethodHolderClass;
    GlobProcedure: TProcedure;
    GlobFunction: TFunction;
    GlobObjProcedure: TObjProcedure;
    GlobObjFunction: TObjFunction;
  {$ENDIF}

  {$IFDEF Global_Body}
  //begin
    MethodHolderClass := TMethodHolderClass.Create;
    GlobProcedure := @ProcProcedure;
    GlobFunction := @FuncFunction;
    GlobObjProcedure := @MethodHolderClass.ProcObjProcedure;
    GlobObjFunction := @MethodHolderClass.FuncObjFuntion;
  {$ENDIF}

  {$IFDEF Global_Body_NIL}
  //begin
    GlobProcedure := nil;
    GlobFunction := nil;
    GlobObjProcedure := nil;
    GlobObjFunction := nil;
  {$ENDIF}

  {$IFDEF Global_Call_FooFunc}
  //FooFunc(
    GlobProcedure,    GlobProcedure,
    GlobFunction,     GlobFunction,
    GlobObjProcedure, GlobObjProcedure,
    GlobObjFunction,  GlobObjFunction,
  {$ENDIF}
{%endregion GLOBAL}