unit Myc.DataRecord.Impl; interface uses System.SysUtils, System.Rtti, System.TypInfo, System.Generics.Collections, System.Generics.Defaults, Myc.DataRecord; type TFieldLayoutComparer = class(TComparer) strict private class var FDefaultComparer: IComparer; class constructor CreateClass; public function Compare(const Left, Right: TDataRecord.TField): Integer; override; class property DefaultComparer: IComparer 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.Default.Compare(Left.Name, Right.Name); end; end.