xref: /aosp_15_r20/libnativehelper/ExpandableString.h (revision 0797b24ee566c78eb48500180cb4bf71f81c8aab)
1*0797b24eSAndroid Build Coastguard Worker /*
2*0797b24eSAndroid Build Coastguard Worker  * Copyright (C) 2020 The Android Open Source Project
3*0797b24eSAndroid Build Coastguard Worker  *
4*0797b24eSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*0797b24eSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*0797b24eSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*0797b24eSAndroid Build Coastguard Worker  *
8*0797b24eSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*0797b24eSAndroid Build Coastguard Worker  *
10*0797b24eSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*0797b24eSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*0797b24eSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*0797b24eSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*0797b24eSAndroid Build Coastguard Worker  * limitations under the License.
15*0797b24eSAndroid Build Coastguard Worker  */
16*0797b24eSAndroid Build Coastguard Worker 
17*0797b24eSAndroid Build Coastguard Worker #pragma once
18*0797b24eSAndroid Build Coastguard Worker 
19*0797b24eSAndroid Build Coastguard Worker #include <sys/cdefs.h>
20*0797b24eSAndroid Build Coastguard Worker 
21*0797b24eSAndroid Build Coastguard Worker #include <stdbool.h>
22*0797b24eSAndroid Build Coastguard Worker #include <stddef.h>
23*0797b24eSAndroid Build Coastguard Worker 
24*0797b24eSAndroid Build Coastguard Worker __BEGIN_DECLS
25*0797b24eSAndroid Build Coastguard Worker 
26*0797b24eSAndroid Build Coastguard Worker struct ExpandableString {
27*0797b24eSAndroid Build Coastguard Worker     size_t dataSize;  // The length of the C string data (not including the null-terminator).
28*0797b24eSAndroid Build Coastguard Worker     char* data;       // The C string data.
29*0797b24eSAndroid Build Coastguard Worker };
30*0797b24eSAndroid Build Coastguard Worker 
31*0797b24eSAndroid Build Coastguard Worker // Initialize ExpandableString.
32*0797b24eSAndroid Build Coastguard Worker void ExpandableStringInitialize(struct ExpandableString* s);
33*0797b24eSAndroid Build Coastguard Worker 
34*0797b24eSAndroid Build Coastguard Worker // Release memory associated with ExpandableString.
35*0797b24eSAndroid Build Coastguard Worker void ExpandableStringRelease(struct ExpandableString* s);
36*0797b24eSAndroid Build Coastguard Worker 
37*0797b24eSAndroid Build Coastguard Worker // Append null-terminated string |text| to ExpandableString, expanding the storage if required.
38*0797b24eSAndroid Build Coastguard Worker // Returns true on success, false othewise.
39*0797b24eSAndroid Build Coastguard Worker bool ExpandableStringAppend(struct ExpandableString* s, const char* text);
40*0797b24eSAndroid Build Coastguard Worker 
41*0797b24eSAndroid Build Coastguard Worker // Assign null-terminate string |text| to ExpandableString, expanding the storage if required.
42*0797b24eSAndroid Build Coastguard Worker // Returns true on success, false othewise.
43*0797b24eSAndroid Build Coastguard Worker bool ExpandableStringAssign(struct ExpandableString*s, const char* text);
44*0797b24eSAndroid Build Coastguard Worker 
45*0797b24eSAndroid Build Coastguard Worker __END_DECLS
46