aboutsummaryrefslogtreecommitdiff
path: root/gprofng/src/StringBuilder.h
blob: cb7127bc1371af0961e38e4e0d91c6228a45af54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/* Copyright (C) 2021-2023 Free Software Foundation, Inc.
   Contributed by Oracle.

   This file is part of GNU Binutils.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */

/*
 *	java/lang/StringBuilder
 *
 *	Based on JavaTM 2 Platform Standard Ed. 5.0
 */

#ifndef _StringBuilder_h
#define _StringBuilder_h

class StringBuilder
{
public:
  StringBuilder ();
  StringBuilder (int capacity);
  virtual ~StringBuilder ();

  int
  length ()
  {
    return count;
  }

  int
  capacity ()
  {
    return maxCapacity;
  }

  bool endsWith (const char str[]);
  void ensureCapacity (int minimumCapacity);
  void expandCapacity (int minimumCapacity);
  void trimToSize ();
  void trim ();
  void setLength (int newLength);
  char charAt (int index);
  void getChars (int srcBegin, int srcEnd, char dst[], int dstBegin);
  void setCharAt (int index, char ch);
  StringBuilder *append (StringBuilder *sb);
  StringBuilder *append (const char str[]);
  StringBuilder *append (const char str[], int offset, int len);
  StringBuilder *append (bool b);
  StringBuilder *append (char c);
  StringBuilder *append (int i);
  StringBuilder *append (unsigned int i);
  StringBuilder *append (long lng);
  StringBuilder *append (unsigned long i);
  StringBuilder *append (long long lng);
  StringBuilder *append (unsigned long long lng);
  StringBuilder *append (float f);
  StringBuilder *append (double d);
  StringBuilder *_delete (int start, int end);
  StringBuilder *deleteCharAt (int index);
  StringBuilder *insert (int index, const char str[], int offset, int len);
  StringBuilder *insert (int offset, const char str[]);
  StringBuilder *insert (int offset, bool b);
  StringBuilder *insert (int offset, char c);
  StringBuilder *insert (int offset, int i);
  StringBuilder *insert (int offset, long l);
  StringBuilder *insert (int offset, float f);
  StringBuilder *insert (int offset, double d);
  StringBuilder *reverse ();
  char *toString ();
  void toFile (FILE *fp);
  void toFileLn (FILE *fp);

  // Not in Java
  StringBuilder *appendf (const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
  StringBuilder *sprintf (const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));

  int indexOf (const char str[]);
  int indexOf (const char str[], int fromIndex);
  int lastIndexOf (const char str[]);
  int lastIndexOf (const char str[], int fromIndex);

private:
  char *value;
  int count;
  int maxCapacity;
};

#endif /* _StringBuilder_h */