OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [gnu/] [gcj/] [runtime/] [StringBuffer.java] - Blame information for rev 756

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 756 jeremybenn
// This is a simplified copy of java.lang.StringBuffer with
2
// `synchronized' removed.
3
 
4
/* StringBuffer.java -- Growable strings
5
   Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
6
 
7
This file is part of GNU Classpath.
8
 
9
GNU Classpath is free software; you can redistribute it and/or modify
10
it under the terms of the GNU General Public License as published by
11
the Free Software Foundation; either version 2, or (at your option)
12
any later version.
13
 
14
GNU Classpath is distributed in the hope that it will be useful, but
15
WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
General Public License for more details.
18
 
19
You should have received a copy of the GNU General Public License
20
along with GNU Classpath; see the file COPYING.  If not, write to the
21
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22
02110-1301 USA.
23
 
24
Linking this library statically or dynamically with other modules is
25
making a combined work based on this library.  Thus, the terms and
26
conditions of the GNU General Public License cover the whole
27
combination.
28
 
29
As a special exception, the copyright holders of this library give you
30
permission to link this library with independent modules to produce an
31
executable, regardless of the license terms of these independent
32
modules, and to copy and distribute the resulting executable under
33
terms of your choice, provided that you also meet, for each linked
34
independent module, the terms and conditions of the license of that
35
module.  An independent module is a module which is not derived from
36
or based on this library.  If you modify this library, you may extend
37
this exception to your version of the library, but you are not
38
obligated to do so.  If you do not wish to do so, delete this
39
exception statement from your version. */
40
 
41
package gnu.gcj.runtime;
42
 
43
public final class StringBuffer
44
{
45
  /** Append the <code>String</code> value of the argument to this <code>StringBuffer</code>.
46
   *  Uses <code>String.valueOf()</code> to convert to
47
   *  <code>String</code>.
48
   *  @param bool the <code>boolean</code> to convert and append.
49
   *  @return this <code>StringBuffer</code>.
50
   *  @see java.lang.String#valueOf(boolean)
51
   */
52
  public StringBuffer append (boolean bool)
53
  {
54
    return append (bool ? "true" : "false");
55
  }
56
 
57
  /** Append the <code>char</code> to this <code>StringBuffer</code>.
58
   *  @param c the <code>char</code> to append.
59
   *  @return this <code>StringBuffer</code>.
60
   */
61
  public StringBuffer append (char ch)
62
  {
63
    ensureCapacity_unsynchronized (count + 1);
64
    value[count++] = ch;
65
    return this;
66
  }
67
 
68
  /** Append the <code>String</code> value of the argument to this <code>StringBuffer</code>.
69
   *  Uses <code>String.valueOf()</code> to convert to
70
   *  <code>String</code>.
71
   *  @param inum the <code>int</code> to convert and append.
72
   *  @return this <code>StringBuffer</code>.
73
   *  @see java.lang.String#valueOf(int)
74
   */
75
  public native StringBuffer append (int inum);
76
 
77
  /** Append the <code>String</code> value of the argument to this <code>StringBuffer</code>.
78
   *  Uses <code>String.valueOf()</code> to convert to
79
   *  <code>String</code>.
80
   *  @param lnum the <code>long</code> to convert and append.
81
   *  @return this <code>StringBuffer</code>.
82
   *  @see java.lang.String#valueOf(long)
83
   */
84
  public StringBuffer append (long lnum)
85
  {
86
    return append (Long.toString (lnum));
87
  }
88
 
89
  /** Append the <code>String</code> value of the argument to this <code>StringBuffer</code>.
90
   *  Uses <code>String.valueOf()</code> to convert to
91
   *  <code>String</code>.
92
   *  @param fnum the <code>float</code> to convert and append.
93
   *  @return this <code>StringBuffer</code>.
94
   *  @see java.lang.String#valueOf(float)
95
   */
96
  public StringBuffer append (float fnum)
97
  {
98
    return append (Float.toString (fnum));
99
  }
100
 
101
  /** Append the <code>String</code> value of the argument to this <code>StringBuffer</code>.
102
   *  Uses <code>String.valueOf()</code> to convert to
103
   *  <code>String</code>.
104
   *  @param dnum the <code>double</code> to convert and append.
105
   *  @return this <code>StringBuffer</code>.
106
   *  @see java.lang.String#valueOf(double)
107
   */
108
  public StringBuffer append (double dnum)
109
  {
110
    return append (Double.toString (dnum));
111
  }
112
 
113
  /** Append the <code>String</code> value of the argument to this <code>StringBuffer</code>.
114
   *  Uses <code>String.valueOf()</code> to convert to
115
   *  <code>String</code>.
116
   *  @param obj the <code>Object</code> to convert and append.
117
   *  @return this <code>StringBuffer</code>.
118
   *  @see java.lang.String#valueOf(java.lang.Object)
119
   */
120
  public StringBuffer append (Object obj)
121
  {
122
    return append (String.valueOf(obj));
123
  }
124
 
125
  /** Append the <code>String</code> to this <code>StringBuffer</code>.
126
   *  @param str the <code>String</code> to append.
127
   *  @return this <code>StringBuffer</code>.
128
   */
129
  public StringBuffer append (String str)
130
  {
131
    if (str == null)
132
      str = "null";
133
    int len = str.length();
134
    ensureCapacity_unsynchronized (count + len);
135
    str.getChars(0, len, value, count);
136
    count += len;
137
    return this;
138
  }
139
 
140
  private void ensureCapacity_unsynchronized (int minimumCapacity)
141
  {
142
    if (minimumCapacity > value.length)
143
      {
144
        minimumCapacity = Math.max (minimumCapacity, value.length * 2 + 2);
145
        char[] nb = new char[minimumCapacity];
146
        System.arraycopy(value, 0, nb, 0, count);
147
        value = nb;
148
      }
149
  }
150
 
151
  /** Create a new StringBuffer with default capacity 16.
152
   *  @see JLS 20.13.1
153
   */
154
  public StringBuffer ()
155
  {
156
    this (DEFAULT_CAPACITY);
157
  }
158
 
159
  /** Create an empty <code>StringBuffer</code> with the specified initial capacity.
160
   *  @param capacity the initial capacity.
161
   */
162
  public StringBuffer (int capacity)
163
  {
164
    count = 0;
165
    value = new char[capacity];
166
  }
167
 
168
  /** Create a new <code>StringBuffer</code> with the characters in the specified <code>String</code>.
169
   *  Initial capacity will be the size of the String plus 16.
170
   *  @param str the <code>String</code> to make a <code>StringBuffer</code> out of.
171
   */
172
  public StringBuffer (String str)
173
  {
174
    if (str == null)
175
      str = "null";
176
    count = str.length();
177
    // JLS: The initial capacity of the string buffer is 16 plus the
178
    // length of the argument string.
179
    value = new char[count + DEFAULT_CAPACITY];
180
    str.getChars(0, count, value, 0);
181
  }
182
 
183
  /** Convert this <code>StringBuffer</code> to a <code>String</code>.
184
   *  @return the characters in this StringBuffer
185
   */
186
  // This is native because efficient implementation requires avoiding
187
  // the Java protection mechanism.
188
  public native String toString ();
189
 
190
  // Index of next available character.  Note that this has
191
  // permissions set this way so that String can get the value.
192
  int count;
193
 
194
  // The buffer.  Note that this has permissions set this way so that
195
  // String can get the value.
196
  char[] value;
197
 
198
  private final static int DEFAULT_CAPACITY = 16; // JLS 20.13.1
199
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.