90 lines
2.3 KiB
ObjectPascal
90 lines
2.3 KiB
ObjectPascal
unit Myc.DataRecord.Impl;
|
|
|
|
interface
|
|
|
|
uses
|
|
System.SysUtils,
|
|
System.Rtti,
|
|
System.TypInfo,
|
|
System.Generics.Collections,
|
|
System.Generics.Defaults,
|
|
Myc.DataRecord;
|
|
|
|
type
|
|
TFieldLayoutComparer = class(TComparer<TDataRecord.TField>)
|
|
strict private
|
|
class var
|
|
FDefaultComparer: IComparer<TDataRecord.TField>;
|
|
class constructor CreateClass;
|
|
public
|
|
function Compare(const Left, Right: TDataRecord.TField): Integer; override;
|
|
class property DefaultComparer: IComparer<TDataRecord.TField> read FDefaultComparer;
|
|
end;
|
|
|
|
implementation
|
|
|
|
(*
|
|
procedure TIntegerField.GetRaw(const [ref] Buffer: TBytes; Dst: Pointer);
|
|
begin
|
|
PInteger(Dst)^ := PInteger(GetRawRef(Buffer))^;
|
|
end;
|
|
|
|
procedure TIntegerField.SetRaw(const [ref] Buffer: TBytes; Src: Pointer);
|
|
begin
|
|
PInteger(GetRawRef(Buffer))^ := PInteger(Src)^;
|
|
end;
|
|
|
|
procedure TSingleField.GetRaw(const [ref] Buffer: TBytes; Dst: Pointer);
|
|
begin
|
|
PSingle(Dst)^ := PSingle(GetRawRef(Buffer))^;
|
|
end;
|
|
|
|
procedure TSingleField.SetRaw(const [ref] Buffer: TBytes; Src: Pointer);
|
|
begin
|
|
PSingle(GetRawRef(Buffer))^ := PSingle(Src)^;
|
|
end;
|
|
|
|
procedure TDoubleField.GetRaw(const [ref] Buffer: TBytes; Dst: Pointer);
|
|
begin
|
|
PDouble(Dst)^ := PDouble(GetRawRef(Buffer))^;
|
|
end;
|
|
|
|
procedure TDoubleField.SetRaw(const [ref] Buffer: TBytes; Src: Pointer);
|
|
begin
|
|
PDouble(GetRawRef(Buffer))^ := PDouble(Src)^;
|
|
end;
|
|
|
|
procedure TInt64Field.GetRaw(const [ref] Buffer: TBytes; Dst: Pointer);
|
|
begin
|
|
PInt64(Dst)^ := PInt64(GetRawRef(Buffer))^;
|
|
end;
|
|
|
|
procedure TInt64Field.SetRaw(const [ref] Buffer: TBytes; Src: Pointer);
|
|
begin
|
|
PInt64(GetRawRef(Buffer))^ := PInt64(Src)^;
|
|
end;
|
|
|
|
procedure TStringField.GetRaw(const [ref] Buffer: TBytes; Dst: Pointer);
|
|
begin
|
|
PString(Dst)^ := PString(GetRawRef(Buffer))^;
|
|
end;
|
|
|
|
procedure TStringField.SetRaw(const [ref] Buffer: TBytes; Src: Pointer);
|
|
begin
|
|
PString(GetRawRef(Buffer))^ := PString(Src)^;
|
|
end;
|
|
*)
|
|
{ TFieldLayoutComparer }
|
|
|
|
class constructor TFieldLayoutComparer.CreateClass;
|
|
begin
|
|
FDefaultComparer := TFieldLayoutComparer.Create;
|
|
end;
|
|
|
|
function TFieldLayoutComparer.Compare(const Left, Right: TDataRecord.TField): Integer;
|
|
begin
|
|
Result := TComparer<string>.Default.Compare(Left.Name, Right.Name);
|
|
end;
|
|
|
|
end.
|