#ifndef STRING_MANAGER_H #define STRING_MANAGER_H #include <stddef.h> #include <stdbool.h> #ifdef __cplusplus extern "C" { #endif /** * 文字列を管理します. * create関数にて渡された文字列をコピー&管理します. * 管理した文字列は, clean 関数にて破棄できます. */ typedef struct StringManager_ { /** * 指定された文字列を管理します. * 指定された文字列は管理領域にコピーされ, * 管理された文字列へのポインタを返します. * * @param[in,out] sm 文字列管理 * @param[in] str 管理に加える文字列 * @return 加えられた文字列 */ char* (*create)(struct StringManager_* const sm, const char* const str); /** * 管理している文字列をクリアします. * * @param[in,out] sm 文字列管理 */ void (*clean )(struct StringManager_* const sm); int size; ///< 現在の使用データサイズ. size_t capacity; ///< 文字列管理データ容量. bool isAutoExt; ///< サイズ自動拡張有効/無効. char* data; ///< 文字列管理データ. } StringManager; StringManager* StringManager_new(const size_t cap, const bool ext); void StringManager_delete(StringManager* const sm); #ifdef __cplusplus } #endif #endif /* STRING_MANAGER_H */