xref: /trunk/main/sal/inc/rtl/strbuf.h (revision 5d328669834268fa077da8fd0d9b44cc5ce2793b)
19eab2a37SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
39eab2a37SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
49eab2a37SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
59eab2a37SAndrew Rist  * distributed with this work for additional information
69eab2a37SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
79eab2a37SAndrew Rist  * to you under the Apache License, Version 2.0 (the
89eab2a37SAndrew Rist  * "License"); you may not use this file except in compliance
99eab2a37SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
119eab2a37SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
139eab2a37SAndrew Rist  * Unless required by applicable law or agreed to in writing,
149eab2a37SAndrew Rist  * software distributed under the License is distributed on an
159eab2a37SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
169eab2a37SAndrew Rist  * KIND, either express or implied.  See the License for the
179eab2a37SAndrew Rist  * specific language governing permissions and limitations
189eab2a37SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
209eab2a37SAndrew Rist  *************************************************************/
219eab2a37SAndrew Rist 
229eab2a37SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _RTL_STRBUF_H_
25cdf0e10cSrcweir #define _RTL_STRBUF_H_
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <rtl/string.h>
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #ifdef __cplusplus
30cdf0e10cSrcweir extern "C" {
31cdf0e10cSrcweir #endif
32cdf0e10cSrcweir 
33cdf0e10cSrcweir /** @HTML
34cdf0e10cSrcweir     Allocates a new <code>String</code> that contains characters from
35cdf0e10cSrcweir     the character array argument.
36cdf0e10cSrcweir 
37cdf0e10cSrcweir     The <code>count</code> argument specifies
38cdf0e10cSrcweir     the length of the array. The initial capacity of the string buffer is
39cdf0e10cSrcweir     <code>16</code> plus the length of the string argument.
40cdf0e10cSrcweir 
41cdf0e10cSrcweir     @param  newStr   out parameter, contains the new string. The reference count is 1.
42cdf0e10cSrcweir     @param  value    the initial value of the string.
43cdf0e10cSrcweir     @param  count    the length of value.
44cdf0e10cSrcweir  */
45cdf0e10cSrcweir void SAL_CALL rtl_stringbuffer_newFromStr_WithLength( rtl_String ** newStr,
46cdf0e10cSrcweir                                                       const sal_Char * value,
47cdf0e10cSrcweir                                                       sal_Int32 count);
48cdf0e10cSrcweir 
49cdf0e10cSrcweir /**
50cdf0e10cSrcweir     Allocates a new <code>String</code> that contains the same sequence of
51cdf0e10cSrcweir     characters as the string argument.
52cdf0e10cSrcweir 
53cdf0e10cSrcweir     The initial capacity is the larger of:
54cdf0e10cSrcweir     <ul>
55cdf0e10cSrcweir     <li> The <code>bufferLen</code> argument.
56cdf0e10cSrcweir     <li> The <code>length</code> of the string argument.
57cdf0e10cSrcweir     </ul>
58cdf0e10cSrcweir 
59cdf0e10cSrcweir     @param  newStr      out parameter, contains the new string. The reference count is 1.
60cdf0e10cSrcweir     @param  capacity    the initial len of the string buffer.
61cdf0e10cSrcweir     @param  oldStr      the initial value of the string.
62cdf0e10cSrcweir     @return the new capacity of the string buffer
63cdf0e10cSrcweir  */
64cdf0e10cSrcweir sal_Int32 SAL_CALL rtl_stringbuffer_newFromStringBuffer( rtl_String ** newStr,
65cdf0e10cSrcweir                                                          sal_Int32 capacity,
66cdf0e10cSrcweir                                                          rtl_String * olsStr );
67cdf0e10cSrcweir 
68cdf0e10cSrcweir /**
69cdf0e10cSrcweir     Ensures that the capacity of the buffer is at least equal to the
70cdf0e10cSrcweir     specified minimum.
71cdf0e10cSrcweir 
72cdf0e10cSrcweir     If the current capacity of this string buffer is less than the
73cdf0e10cSrcweir     argument, then a new internal buffer is allocated with greater
74cdf0e10cSrcweir     capacity. The new capacity is the larger of:
75cdf0e10cSrcweir     <ul>
76cdf0e10cSrcweir     <li>The <code>minimumCapacity</code> argument.
77cdf0e10cSrcweir     <li>Twice the old capacity, plus <code>2</code>.
78cdf0e10cSrcweir     </ul>
79cdf0e10cSrcweir     If the <code>minimumCapacity</code> argument is nonpositive, this
80cdf0e10cSrcweir     method takes no action and simply returns.
81cdf0e10cSrcweir 
82*dcaf07f7SJohn Bampton     @param   capacity         in: old capacity, out: new capacity.
83cdf0e10cSrcweir     @param   minimumCapacity   the minimum desired capacity.
84cdf0e10cSrcweir  */
85cdf0e10cSrcweir void SAL_CALL rtl_stringbuffer_ensureCapacity(  /*inout*/rtl_String ** This,
86cdf0e10cSrcweir                                                 /*inout*/sal_Int32* capacity,
87cdf0e10cSrcweir                                                 sal_Int32 minimumCapacity);
88cdf0e10cSrcweir 
89cdf0e10cSrcweir 
90cdf0e10cSrcweir /**
91cdf0e10cSrcweir     Inserts the string representation of the <code>char</code> array
92cdf0e10cSrcweir     argument into this string buffer.
93cdf0e10cSrcweir 
94cdf0e10cSrcweir     The characters of the array argument are inserted into the
95cdf0e10cSrcweir     contents of this string buffer at the position indicated by
96cdf0e10cSrcweir     <code>offset</code>. The length of this string buffer increases by
97cdf0e10cSrcweir     the length of the argument.
98cdf0e10cSrcweir 
99cdf0e10cSrcweir     @param  capacity    the capacity of the string buffer
100cdf0e10cSrcweir     @param  offset      the offset.
101cdf0e10cSrcweir     @param  ch          a character array.
102cdf0e10cSrcweir     @param  len         the number of characters to append.
103cdf0e10cSrcweir     @return this string buffer.
104cdf0e10cSrcweir  */
105cdf0e10cSrcweir void SAL_CALL rtl_stringbuffer_insert( /*inout*/rtl_String ** This,
106cdf0e10cSrcweir                                        /*inout*/sal_Int32 * capacity,
107cdf0e10cSrcweir                                        sal_Int32 offset,
108cdf0e10cSrcweir                                        const sal_Char * str,
109cdf0e10cSrcweir                                        sal_Int32 len);
110cdf0e10cSrcweir 
111cdf0e10cSrcweir #ifdef __cplusplus
112cdf0e10cSrcweir }
113cdf0e10cSrcweir #endif
114cdf0e10cSrcweir 
115cdf0e10cSrcweir #endif  /* _RTL_STRBUF_H_ */
116