mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-08-13 06:09:04 +02:00
Create the TRttiDataMember to Delphi compatibility.
This commit is contained in:
parent
6717b54b3e
commit
a88f985230
@ -168,16 +168,35 @@ type
|
|||||||
property Visibility: TMemberVisibility read GetVisibility;
|
property Visibility: TMemberVisibility read GetVisibility;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TRttiDataMember }
|
||||||
|
|
||||||
|
TRttiDataMember = class abstract(TRttiMember)
|
||||||
|
private
|
||||||
|
function GetDataType: TRttiType; virtual; abstract;
|
||||||
|
function GetIsReadable: Boolean; virtual; abstract;
|
||||||
|
function GetIsWritable: Boolean; virtual; abstract;
|
||||||
|
public
|
||||||
|
function GetValue(Instance: JSValue): TValue; virtual; abstract;
|
||||||
|
procedure SetValue(Instance: JSValue; const AValue: TValue); virtual; abstract;
|
||||||
|
property DataType: TRttiType read GetDataType;
|
||||||
|
property IsReadable: Boolean read GetIsReadable;
|
||||||
|
property IsWritable: Boolean read GetIsWritable;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TRttiField }
|
{ TRttiField }
|
||||||
|
|
||||||
TRttiField = class(TRttiMember)
|
TRttiField = class(TRttiDataMember)
|
||||||
private
|
private
|
||||||
function GetFieldType: TRttiType;
|
function GetFieldType: TRttiType;
|
||||||
function GetFieldTypeInfo: TTypeMemberField;
|
function GetFieldTypeInfo: TTypeMemberField;
|
||||||
|
function GetDataType: TRttiType; override;
|
||||||
|
function GetIsReadable: Boolean; override;
|
||||||
|
function GetIsWritable: Boolean; override;
|
||||||
public
|
public
|
||||||
constructor Create(AParent: TRttiType; ATypeInfo: TTypeMember);
|
constructor Create(AParent: TRttiType; ATypeInfo: TTypeMember);
|
||||||
function GetValue(Instance: JSValue): TValue;
|
|
||||||
procedure SetValue(Instance: JSValue; const AValue: TValue);
|
function GetValue(Instance: JSValue): TValue; override;
|
||||||
|
procedure SetValue(Instance: JSValue; const AValue: TValue); override;
|
||||||
property FieldType: TRttiType read GetFieldType;
|
property FieldType: TRttiType read GetFieldType;
|
||||||
property FieldTypeInfo: TTypeMemberField read GetFieldTypeInfo;
|
property FieldTypeInfo: TTypeMemberField read GetFieldTypeInfo;
|
||||||
end;
|
end;
|
||||||
@ -246,20 +265,21 @@ type
|
|||||||
|
|
||||||
{ TRttiProperty }
|
{ TRttiProperty }
|
||||||
|
|
||||||
TRttiProperty = class(TRttiMember)
|
TRttiProperty = class(TRttiDataMember)
|
||||||
private
|
private
|
||||||
|
function GetDataType: TRttiType; override;
|
||||||
function GetPropertyTypeInfo: TTypeMemberProperty;
|
function GetPropertyTypeInfo: TTypeMemberProperty;
|
||||||
function GetPropertyType: TRttiType;
|
function GetPropertyType: TRttiType;
|
||||||
function GetIsWritable: boolean;
|
function GetIsWritable: boolean; override;
|
||||||
function GetIsReadable: boolean;
|
function GetIsReadable: boolean; override;
|
||||||
protected
|
protected
|
||||||
function GetVisibility: TMemberVisibility; override;
|
function GetVisibility: TMemberVisibility; override;
|
||||||
public
|
public
|
||||||
constructor Create(AParent: TRttiType; ATypeInfo: TTypeMember);
|
constructor Create(AParent: TRttiType; ATypeInfo: TTypeMember);
|
||||||
|
|
||||||
function GetValue(Instance: JSValue): TValue;
|
function GetValue(Instance: JSValue): TValue; override;
|
||||||
|
|
||||||
procedure SetValue(Instance: JSValue; const AValue: TValue);
|
procedure SetValue(Instance: JSValue; const AValue: TValue); override;
|
||||||
|
|
||||||
property PropertyTypeInfo: TTypeMemberProperty read GetPropertyTypeInfo;
|
property PropertyTypeInfo: TTypeMemberProperty read GetPropertyTypeInfo;
|
||||||
property PropertyType: TRttiType read GetPropertyType;
|
property PropertyType: TRttiType read GetPropertyType;
|
||||||
@ -1773,6 +1793,21 @@ begin
|
|||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TRttiField.GetDataType: TRttiType;
|
||||||
|
begin
|
||||||
|
Result := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TRttiField.GetIsReadable: Boolean;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TRttiField.GetIsWritable: Boolean;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
function TRttiField.GetFieldType: TRttiType;
|
function TRttiField.GetFieldType: TRttiType;
|
||||||
begin
|
begin
|
||||||
Result := Pool.GetType(FieldTypeInfo.TypeInfo);
|
Result := Pool.GetType(FieldTypeInfo.TypeInfo);
|
||||||
@ -1983,6 +2018,11 @@ begin
|
|||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TRttiProperty.GetDataType: TRttiType;
|
||||||
|
begin
|
||||||
|
Result := GetPropertyType;
|
||||||
|
end;
|
||||||
|
|
||||||
function TRttiProperty.GetPropertyTypeInfo: TTypeMemberProperty;
|
function TRttiProperty.GetPropertyTypeInfo: TTypeMemberProperty;
|
||||||
begin
|
begin
|
||||||
Result := TTypeMemberProperty(inherited Handle);
|
Result := TTypeMemberProperty(inherited Handle);
|
||||||
|
Loading…
Reference in New Issue
Block a user