File: lazdebuggervalueconverter.xml

package info (click to toggle)
lazarus 4.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 275,760 kB
  • sloc: pascal: 2,341,904; xml: 509,420; makefile: 348,726; cpp: 93,608; sh: 3,387; java: 609; perl: 297; sql: 222; ansic: 137
file content (125 lines) | stat: -rw-r--r-- 6,068 bytes parent folder | download | duplicates (3)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?xml version="1.0" encoding="utf-8"?>
<fpdoc-descriptions>
  <package name="LazDebuggerIntf">
    <short>Interface between IDE and Debugger backend</short>
    <module name="LazDebuggerValueConverter">
      <short>Interface for "Value-Converter". Process watches data in the debugger backend</short>
      <descr>A "Value-Converter" can transform the value of a watch. They are implemented in the debugger-backend (if supported by the backend). This allows them to access internal data of the backend.

The backend can decide in its implementation, at which time to run a convertor. The convertor is free to perform any action, and can generate a new watch-result for the IDE's debugger frontend.

"Value-Converter" can be configured to be selected based on the typename for the watch-data.

They can also be directly assosiated with a given watch. See TWatchValueIntf.GetFpDbgConverter
</descr>
      <element name="ValueConverterRegistry">
        <short>List of all available "Value-Converter"</short>
        <descr>Using the TLazDbgValueConvertRegistryEntry interface packages can add their "classes" of "Value-Converter"
</descr>
      </element>
      <element name="TLazDbgValueConvertRegistry">
        <short>List of TLazDbgValueConvertRegistryEntry. Available classes of "Value-Converter"</short>
        <descr>Use Add/Remove from TFPGList to add/remove TLazDbgValueConvertRegistryEntry</descr>
        <seealso>
          <link id="TLazDbgValueConvertRegistryEntry">TLazDbgValueConvertRegistryEntry</link>
        </seealso>
      </element>
      <element name="TLazDbgValueConvertRegistry.FindByConvertorClassName">
        <short>Find entry by "GetConvertorClass"</short>
        <descr>For use by the IDE.
</descr>
      </element>
      <element name="TLazDbgValueConvertRegistry.IndexOfConvertorClass">
        <short>Find entry by GetConvertorClass.ClassName</short>
        <descr>For use by the IDE
</descr>
      </element>
      <element name="TLazDbgValueConvertRegistryEntry">
        <short>Describes an available "Value-Converter"</short>
        <descr>To register a "Value-Converter" with the IDE an inherited class of this should be declared, overriding all methods.

The new class is then registered like this

<p>
            <code>type
  TMyValConv = class(TObject, TLazDbgValueConverterIntf)
    //...
  end;

  TMyValConvEntry = class(TLazDbgValueConvertRegistryEntry)
    class function CreateValueConvertorIntf: TLazDbgValueConverterIntf; virtual; override;
      // return an instance off TMyValConv

    class function GetName: String; virtual; override;
      // return a display name for the IDE

    class function GetConvertorClass: TClass; virtual; override;
      // return the class TMyValConv

    class function GetDebuggerClass: TClass; virtual; override;
      // return the class of the debugger (inherits from TDebuggerIntf)
  end;

begin
  TheValueConverterRegistry.Add(TMyValConvEntry)</code>
          </p>
        </descr>
      </element>
      <element name="TLazDbgValueConvertRegistryEntry.CreateValueConvertorIntf">
        <short>Creates a new instance of a "Value-Converter"</short>
        <descr>Creates an new instance of a "Value-Converter" and returns an interface to it.
</descr>
      </element>
      <element name="TLazDbgValueConvertRegistryEntry.GetName">
        <short>Display-Name of the converter class</short>
        <descr>Shown in the IDE in the list of "Value-Converter" that can be created.
</descr>
      </element>
      <element name="TLazDbgValueConvertRegistryEntry.GetConvertorClass">
        <short>Returns the class of the "Value-Converter"</short>
        <descr>The classname is used to store a value in the IDE's xml config. It must be unique accross all converters and all debugger backends
</descr>
      </element>
      <element name="TLazDbgValueConvertRegistryEntry.GetDebuggerClass">
        <short>The (base-) class of the Debugger backend for wich the the "Value-Converter" is implemented</short>
        <descr>The IDE can use this to display the backend name.
</descr>
      </element>
      <element name="TLazDbgValueConverterIntf">
        <short>Interface to the instance of a "Value-Converter"</short>
        <descr>A configured "Value-Converter". 

The IDE will assign this to a TLazDbgValueConvertSelectorIntf, which it will add to a TLazDbgValueConvertSelectorListIntf list.

The backend can match a watch value against the TLazDbgValueConvertSelectorIntf. In case of a match, the backend will call GetObject to get the backend specific object. Invocation of the converter is not part of this interface. Each backend can implement its own means.</descr>
      </element>
      <element name="TLazDbgValueConverterIntf.AddReference">
        <short>Increase reference count</short>
      </element>
      <element name="TLazDbgValueConverterIntf.ReleaseReference">
        <short>Decrease reference count</short>
        <descr>The underlaying object will be freed, if the reference count goes to zero.
</descr>
      </element>
      <element name="TLazDbgValueConverterIntf.CreateCopy">
        <short>Create a copy of the instance</short>
      </element>
      <element name="TLazDbgValueConverterIntf.GetObject">
        <short>Get the object instance</short>
        <descr>The backend can use this to get the real object instance.

The class structure for "Value-Converter" object is determined by each debugger backend. It is up to each backend how to invoke it.
</descr>
      </element>
      <element name="TLazDbgValueConverterIntf.GetRegistryEntry">
        <short>Returns the info for the "Value-Converter"</short>
      </element>
      <element name="TLazDbgValueConverterIntf.GetSettingsFrame">
        <short>Returns an interface to configure the "Value-Converter" in the IDE options dialog</short>
      </element>
      <element name="TLazDbgValueConvertSelectorIntf">
        <short>Specify for witch watches a converter should be used (list of typenames)</short>
      </element>
    </module>
  </package>
</fpdoc-descriptions>