diff --git a/components/lazdebuggers/lazdebuggerintf/docs/lazdebuggervalueconverter.xml b/components/lazdebuggers/lazdebuggerintf/docs/lazdebuggervalueconverter.xml new file mode 100644 index 0000000000..b947dc721e --- /dev/null +++ b/components/lazdebuggers/lazdebuggerintf/docs/lazdebuggervalueconverter.xml @@ -0,0 +1,124 @@ + + + + + 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) + +
+
+
diff --git a/components/lazdebuggers/lazdebuggerintf/lazdebuggerintf.lpk b/components/lazdebuggers/lazdebuggerintf/lazdebuggerintf.lpk index 3ac20fd1c8..0c267adbed 100644 --- a/components/lazdebuggers/lazdebuggerintf/lazdebuggerintf.lpk +++ b/components/lazdebuggers/lazdebuggerintf/lazdebuggerintf.lpk @@ -42,6 +42,7 @@ See LCL license for details."/> + diff --git a/docs/IDEWindowHelpTree.xml b/docs/IDEWindowHelpTree.xml index d302508ef8..417da70cd9 100644 --- a/docs/IDEWindowHelpTree.xml +++ b/docs/IDEWindowHelpTree.xml @@ -148,7 +148,7 @@ - + @@ -182,6 +182,10 @@ + + + +