123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- { TStringBuilder }
- TStringBuilder = class
- private
- const
- DefaultCapacity = 64;
- private
- Function GetCapacity: Integer;
- Procedure SetCapacity(AValue: Integer);
- Function GetC(Index: Integer): SBChar;
- Procedure SetC(Index: Integer; AValue: SBChar);
- Function GetLength: Integer; inline;
- Procedure SetLength(AValue: Integer);
- protected
- FData: TSBCharArray;
- FLength: Integer;
- FMaxCapacity: Integer;
- // Raise error on range check.
- Procedure CheckRange(Idx,Count,MaxLen : Integer);inline;
- Procedure CheckNegative(Const AValue : Integer; Const AName: SBString); inline;
- // All appends/inserts pass through here.
- Procedure DoAppend(Const S : {$IFDEF SBUNICODE}SBString{$ELSE}RawByteString{$ENDIF});virtual;
- Procedure DoAppend(const AValue: TSBCharArray; Idx, aCount: Integer); virtual;
- Procedure DoInsert(Index: Integer; const AValue: SBString); virtual;
- Procedure DoInsert(Index: Integer; const AValue: TSBCharArray; StartIndex, SBCharCount: Integer); virtual;
- Procedure DoReplace(Index: Integer; const Old, New: SBString); virtual;
- Procedure Grow;
- Procedure Shrink;
- public
- Constructor Create;
- Constructor Create(aCapacity: Integer);
- Constructor Create(const AValue: SBString);
- Constructor Create(aCapacity: Integer; aMaxCapacity: Integer);
- Constructor Create(const AValue: SBString; aCapacity: Integer);
- Constructor Create(const AValue: SBString; StartIndex: Integer; aLength: Integer; aCapacity: Integer);
- Function Append(const AValue: Boolean): TStringBuilder;
- Function Append(const AValue: Byte): TStringBuilder;
- Function Append(const AValue: SBChar): TStringBuilder;
- Function Append(const AValue: Currency): TStringBuilder;
- Function Append(const AValue: Double): TStringBuilder;
- Function Append(const AValue: Smallint): TStringBuilder;
- Function Append(const AValue: LongInt): TStringBuilder;
- Function Append(const AValue: Int64): TStringBuilder;
- Function Append(const AValue: TObject): TStringBuilder;
- Function Append(const AValue: Shortint): TStringBuilder;
- Function Append(const AValue: Single): TStringBuilder;
- Function Append(const AValue: UInt64): TStringBuilder;
- Function Append(const AValue: TSBCharArray): TStringBuilder;
- Function Append(const AValue: Word): TStringBuilder;
- Function Append(const AValue: Cardinal): TStringBuilder;
- Function Append(const AValue: PSBChar): TStringBuilder;
- {$IFDEF SBUNICODE}
- // Do not use SBRawstring, we need 2 versions in case of unicode
- Function Append(const AValue: SBString): TStringBuilder;
- {$ENDIF}
- Function Append(const AValue: RawByteString): TStringBuilder;
- Function Append(const AValue: SBChar; RepeatCount: Integer): TStringBuilder;
- Function Append(const AValue: TSBCharArray; StartIndex: Integer; SBCharCount: Integer): TStringBuilder;
- Function Append(const AValue: SBString; StartIndex: Integer; Count: Integer): TStringBuilder;
- Function Append(const Fmt: SBString; const Args: array of const): TStringBuilder;
- Function AppendFormat(const Fmt: SBString; const Args: array of const): TStringBuilder;
- Function AppendLine: TStringBuilder;
- Function AppendLine(const AValue: RawByteString): TStringBuilder;
- Procedure Clear;
- Procedure CopyTo(SourceIndex: Integer; Var Destination: TSBCharArray; DestinationIndex: Integer; Count: Integer);
- Function EnsureCapacity(aCapacity: Integer): Integer;
- Function Equals(StringBuilder: TStringBuilder): Boolean; reintroduce;
- Function Insert(Index: Integer; const AValue: Boolean): TStringBuilder;
- Function Insert(Index: Integer; const AValue: Byte): TStringBuilder;
- Function Insert(Index: Integer; const AValue: SBChar): TStringBuilder;
- Function Insert(Index: Integer; const AValue: Currency): TStringBuilder;
- Function Insert(Index: Integer; const AValue: Double): TStringBuilder;
- Function Insert(Index: Integer; const AValue: Smallint): TStringBuilder;
- Function Insert(Index: Integer; const AValue: LongInt): TStringBuilder;
- Function Insert(Index: Integer; const AValue: TSBCharArray): TStringBuilder;
- Function Insert(Index: Integer; const AValue: Int64): TStringBuilder;
- Function Insert(Index: Integer; const AValue: TObject): TStringBuilder;
- Function Insert(Index: Integer; const AValue: Shortint): TStringBuilder;
- Function Insert(Index: Integer; const AValue: Single): TStringBuilder;
- Function Insert(Index: Integer; const AValue: SBString): TStringBuilder;
- Function Insert(Index: Integer; const AValue: Word): TStringBuilder;
- Function Insert(Index: Integer; const AValue: Cardinal): TStringBuilder;
- Function Insert(Index: Integer; const AValue: UInt64): TStringBuilder;
- Function Insert(Index: Integer; const AValue: SBString; const aRepeatCount: Integer): TStringBuilder;
- Function Insert(Index: Integer; const AValue: TSBCharArray; startIndex: Integer; SBCharCount: Integer): TStringBuilder;
- Function Remove(StartIndex: Integer; RemLength: Integer): TStringBuilder;
- Function Replace(const OldChar, NewChar: SBChar): TStringBuilder;
- Function Replace(const OldChar, NewChar: SBChar; StartIndex: Integer; Count: Integer): TStringBuilder;
- Function Replace(const OldValue, NewValue: SBRawString): TStringBuilder;
- Function Replace(const OldValue, NewValue: SBRawString; StartIndex: Integer; Count: Integer): TStringBuilder;
- {$IFDEF SBUNICODE}
- Function ToString: SBString;
- {$ELSE}
- Function ToString: SBString; override;
- {$ENDIF}
- Function ToString(aStartIndex: Integer; aLength: Integer): SBString; reintroduce;
- property Chars[index: Integer]: SBChar read GetC write SetC; default;
- property Length: Integer read GetLength write SetLength;
- property Capacity: Integer read GetCapacity write SetCapacity;
- property MaxCapacity: Integer read FMaxCapacity;
- end;
|