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