71 lines
2.4 KiB
C
71 lines
2.4 KiB
C
/**
|
|
* @file kString.x.h
|
|
*
|
|
* @internal
|
|
* Copyright (C) 2005-2021 by LMI Technologies Inc.
|
|
* Licensed under the MIT License.
|
|
* Redistributed files must retain the above copyright notice.
|
|
*/
|
|
#ifndef K_API_STRING_X_H
|
|
#define K_API_STRING_X_H
|
|
|
|
#define xkSTRING_MIN_CAPACITY (16)
|
|
#define xkSTRING_GROWTH_FACTOR (2)
|
|
|
|
typedef struct kStringClass
|
|
{
|
|
kObjectClass base;
|
|
kSize allocSize; //size of allocated array memory, in bytes
|
|
kChar* chars; //null-terminated character array
|
|
kSize length; //current number of elements (excluding null-terminator)
|
|
kSize capacity; //maximum elements before reallocation
|
|
kChar nullStr; //null string (avoids need for dynamic allocation when null content pointer passed)
|
|
} kStringClass;
|
|
|
|
kDeclareClassEx(k, kString, kObject)
|
|
|
|
/*
|
|
* Forward declarations.
|
|
*/
|
|
|
|
kFx(kStatus) kString_Set(kString str, const kChar* content);
|
|
kFx(kStatus) kString_Add(kString str, const kChar* content);
|
|
kFx(kStatus) kString_SplitEx(kString str, const kChar* delimiters, kArrayList* tokens, kBool discardEmpty, kAlloc allocator);
|
|
|
|
/*
|
|
* Private methods.
|
|
*/
|
|
|
|
kFx(kStatus) xkString_ConstructFramework(kString* string, kAlloc allocator);
|
|
|
|
kFx(kStatus) xkString_Init(kString str, kType classType, const kChar* content, kAlloc allocator);
|
|
|
|
kFx(kStatus) xkString_VClone(kString str, kString source, kAlloc valueAlloc, kObject context);
|
|
|
|
kFx(kStatus) xkString_VRelease(kString str);
|
|
|
|
kFx(kSize) xkString_VHashCode(kString str);
|
|
kFx(kBool) xkString_VEquals(kString str, kObject other);
|
|
kFx(kSize) xkString_VSize(kString str);
|
|
|
|
kFx(kStatus) xkString_WriteDat5V1(kString str, kSerializer serializer);
|
|
kFx(kStatus) xkString_ReadDat5V1(kString str, kSerializer serializer);
|
|
|
|
kFx(kStatus) xkString_WriteDat6V0(kString str, kSerializer serializer);
|
|
kFx(kStatus) xkString_ReadDat6V0(kString str, kSerializer serializer);
|
|
|
|
kFx(kStatus) xkString_SplitAdd(const kChar* start, kSize length, kArrayList tokens, kAlloc allocator, kBool discardEmpty);
|
|
|
|
/*
|
|
* Deprecated (Stage 1): not recommended for further use, but not yet announced via kDeprecate
|
|
*/
|
|
|
|
//[Deprecated] Use either kString_Add (append == kTRUE) or kString_Set (append == kFALSE)
|
|
kInlineFx(kStatus) kString_Import(kString str, const kChar* cstr, kBool append)
|
|
{
|
|
if (append) return kString_Add(str, cstr);
|
|
else return kString_Set(str, cstr);
|
|
}
|
|
|
|
#endif
|