Interface between IDE and Debugger backend
Interface for "Value-Converter". Process watches data in the debugger backend
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
List of all available "Value-Converter"
Using the TLazDbgValueConvertRegistryEntry interface packages can add their "classes" of "Value-Converter"
List of TLazDbgValueConvertRegistryEntry. Available classes of "Value-Converter"
Use Add/Remove from TFPGList to add/remove TLazDbgValueConvertRegistryEntry
TLazDbgValueConvertRegistryEntry
Find entry by "GetConvertorClass"
For use by the IDE.
Find entry by GetConvertorClass.ClassName
For use by the IDE
Describes an available "Value-Converter"
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

`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)`

Creates a new instance of a "Value-Converter"
Creates an new instance of a "Value-Converter" and returns an interface to it.
Display-Name of the converter class
Shown in the IDE in the list of "Value-Converter" that can be created.
Returns the class of the "Value-Converter"
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
The (base-) class of the Debugger backend for wich the the "Value-Converter" is implemented
The IDE can use this to display the backend name.
Interface to the instance of a "Value-Converter"
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.
Increase reference count
Decrease reference count
The underlaying object will be freed, if the reference count goes to zero.
Create a copy of the instance
Get the object instance
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.
Returns the info for the "Value-Converter"
Returns an interface to configure the "Value-Converter" in the IDE options dialog
Specify for witch watches a converter should be used (list of typenames)