lazarus/components/ideintf/idedebuggerwatchvalueintf.pas
2024-02-10 20:57:59 +01:00

144 lines
4.7 KiB
ObjectPascal

{
*****************************************************************************
See the file COPYING.modifiedLGPL.txt, included in this distribution,
for details about the license.
*****************************************************************************
Abstract:
Interface for the package IdeDebugger
}
unit IdeDebuggerWatchValueIntf experimental;
{$mode objfpc}{$H+}
{$INTERFACES CORBA}
interface
uses
LazDebuggerIntf, LazDebuggerIntfBaseTypes;
type
TWatchResultDataKind = (
rdkUnknown,
rdkError, rdkPrePrinted,
rdkString, rdkWideString, rdkChar,
rdkSignedNumVal, rdkUnsignedNumVal, rdkPointerVal, rdkFloatVal,
rdkBool, rdkEnum, rdkEnumVal, rdkSet,
rdkVariant,
rdkPCharOrString,
rdkArray,
rdkStruct,
rdkConvertRes,
rdkFunction, rdkProcedure,
rdkFunctionRef, rdkProcedureRef
);
IWatchResultDataIntf = interface;
IWatchResultPrinter = interface
function PrintWatchValue(AResValue: IWatchResultDataIntf; ADispFormat: TWatchDisplayFormat): String;
end;
TWatchResultDataFieldInfoIntf = record
FieldName: String;
FieldVisibility: TLzDbgFieldVisibility;
FieldFlags: TLzDbgFieldFlags;
Field: IWatchResultDataIntf;
Owner: IWatchResultDataIntf; // defined in class
end;
IWatchResultDataIntf = interface
// function GetClassID: TWatchResultDataClassID;
function GetInternalObject: TObject;
function GetValueKind: TWatchResultDataKind;
function GetTypeName: String;
function GetAsString: String;
function GetAsDesc: String;
function GetAsWideString: WideString;
function GetAsQWord: QWord;
function GetAsInt64: Int64;
function GetAsFloat: Extended;
function GetByteSize: Integer;
function GetFloatPrecission: TLzDbgFloatPrecission; experimental;
function GetCount: Integer;
function GetLength: Integer;
function GetElementName(AnIndex: integer): String;
function GetDerefDataIntf: IWatchResultDataIntf;
function GetArrayType: TLzDbgArrayType;
function GetBoundTypeIntf: IWatchResultDataIntf;
function GetLowBound: Int64;
function GetSelectedEntryIntf: IWatchResultDataIntf;
function GetDataAddress: TDBGPtr;
function GetHasDataAddress: Boolean;
function GetStructType: TLzDbgStructType;
function GetAnchestorIntf: IWatchResultDataIntf;
function GetAnchestorCount: Integer;
function GetAnchestorsIntf(AnIndex: Integer): IWatchResultDataIntf;
function GetDirectFieldCount: Integer;
function GetFieldCount: Integer;
function GetFieldsIntf(AnIndex: Integer): TWatchResultDataFieldInfoIntf;
// function GetConvertedRes: IWatchResultDataIntf; experimental;
function GetFieldVisibility: TLzDbgFieldVisibility;
////// property ClassID: TWatchResultDataClassID read GetClassId;
property ValueKind: TWatchResultDataKind read GetValueKind;
property TypeName: String read GetTypeName;
property AsString: String read GetAsString;
property AsDesc: String read GetAsDesc;
property AsWideString: WideString read GetAsWideString;
property AsQWord: QWord read GetAsQWord;
property AsInt64: Int64 read GetAsInt64;
property AsFloat: Extended read GetAsFloat;
property ByteSize: Integer read GetByteSize;
property FloatPrecission: TLzDbgFloatPrecission read GetFloatPrecission; experimental;
property DerefData: IWatchResultDataIntf read GetDerefDataIntf;
property ElementName[AnIndex: Integer]: String read GetElementName;
// Array
property ArrayType: TLzDbgArrayType read GetArrayType;
property LowBound: Int64 read GetLowBound;
property Count: Integer read GetCount; // Count of Entries evaluated
property ArrayLength: Integer read GetLength; // Declared Length
property BoundType: IWatchResultDataIntf read GetBoundTypeIntf;
procedure SetSelectedIndex(AnIndex: Integer);
property SelectedEntry: IWatchResultDataIntf read GetSelectedEntryIntf;
property DataAddress: TDBGPtr read GetDataAddress;
property HasDataAddress: Boolean read GetHasDataAddress;
// Struct
property StructType: TLzDbgStructType read GetStructType;
property Anchestor: IWatchResultDataIntf read GetAnchestorIntf;
property AnchestorCount: Integer read GetAnchestorCount;
property Anchestors[AnIndex: Integer]: IWatchResultDataIntf read GetAnchestorsIntf;
property FieldCount: Integer read GetFieldCount;
property DirectFieldCount: Integer read GetDirectFieldCount; // without inherited fields
property Fields[AnIndex: Integer]: TWatchResultDataFieldInfoIntf read GetFieldsIntf;
// property ConvertedRes: IWatchResultDataIntf read GetConvertedRes; experimental;
// variant
property FieldVisibility: TLzDbgFieldVisibility read GetFieldVisibility;
end;
implementation
end.