/* * Copyright (C) 2021 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef HC_STRING_H #define HC_STRING_H #include "hc_parcel.h" #ifdef __cplusplus extern "C" { #endif typedef struct HcString { HcParcel parcel; // parcel data, used to storage the string data } HcString; /* * Append a HcString * Notice: It will add '\0' automatically. * @param self: self pointer. * @param str: append string. * @return HC_TRUE (ok), HC_FALSE (error) */ HcBool StringAppend(HcString *self, HcString str); /* * Append string pointer * Notice: It will add '\0' automatically. * @param self: self pointer. * @param str: string pointer. * @return HC_TRUE (ok), HC_FALSE (error) */ HcBool StringAppendPointer(HcString *self, const char *str); /* * Append a char * Notice: It will add '\0' automatically. * @param self: self pointer. * @param str: char. * @return HC_TRUE (ok), HC_FALSE (error) */ HcBool StringAppendChar(HcString *self, char c); /* * Assign a value to the HcString * Notice: It will add '\0' automatically. * @param self: self pointer. * @param str: assign value of ta_sting. * @return HC_TRUE (ok), HC_FALSE (error) */ HcBool StringSet(HcString *self, HcString str); /* * Assign a value to the HcString * Notice: It will add '\0' automatically. * @param self: self pointer. * @param str: assign value of string pointer. * @return HC_TRUE (ok), HC_FALSE (error) */ HcBool StringSetPointer(HcString *self, const char *str); /* * Get the string pointer data * @param self: self pointer. * @return the pointer data of the string */ const char* StringGet(const HcString *self); /* * Get the length of the string * @param self: self pointer. * @return the length of the string */ uint32_t StringLength(const HcString *self); /* * Create a string. * Notice: You should delete string when you don't need the string anymore. * @return the created string. */ HcString CreateString(void); /* * Delete a string. In fact it will not destroy the string, * but only free the allocated memory of the string and reset the member's value * of the string. You can continue to use the string if you want. * Notice: You should delete the string when you don't need it any more to avoid memory leak. * @param str: The string you want to delete. */ void DeleteString(HcString *str); #ifdef __cplusplus } #endif #endif