码迷,mamicode.com
首页 > 其他好文 > 详细

mormot2 TRawByteStringStream

时间:2020-12-03 12:12:22      阅读:5      评论:0      收藏:0      [点我收藏+]

标签:into   utf8   ram   hang   word   within   designed   art   overload   

mormot2 TRawByteStringStream

mormot.core.base.pas

  /// TStream using a RawByteString as internal storage
  // - default TStringStream uses WideChars since Delphi 2009, so it is
  // not compatible with previous versions, and it does make sense to
  // work with RawByteString/RawUTF8 in our UTF-8 oriented framework
  // - just like TStringStream, is designed for appending data, not modifying
  // in-place, as requested e.g. by TTextWriter or TBufferWriter classes
  TRawByteStringStream = class(TStream)
  protected
    fPosition: integer;
    fDataString: RawByteString;
    {$ifdef FPC}
    function GetPosition: Int64; override;
    {$endif FPC}
    function  GetSize: Int64; override;
    procedure SetSize(NewSize: Longint); override;
  public
    /// initialize a void storage
    constructor Create; overload;
    /// initialize the storage, optionally with some RawByteString content
    constructor Create(const aString: RawByteString); overload;
    /// read some bytes from the internal storage
    // - returns the number of bytes filled into Buffer (<=Count)
    function Read(var Buffer; Count: Longint): Longint; override;
    /// change the current Read/Write position, within current stored range
    function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
    /// change the current Read/Write position, within current stored range
    function Seek(Offset: Longint; Origin: Word): Longint; override;
    /// append some data to the buffer
    // - will resize the buffer, i.e. will replace the end of the string from
    // the current position with the supplied data
    function Write(const Buffer; Count: Longint): Longint; override;
    /// retrieve the stored content from a given position, as UTF-8 text
    procedure GetAsText(StartPos, Len: PtrInt; var Text: RawUTF8);
    /// direct low-level access to the internal RawByteString storage
    property DataString: RawByteString
      read fDataString write fDataString;
  end;

  

mormot2 TRawByteStringStream

标签:into   utf8   ram   hang   word   within   designed   art   overload   

原文地址:https://www.cnblogs.com/hnxxcxg/p/14055758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!