文字列を格納するコンテナモジュールAPIの実装
More...
#include <string.h>
#include <stddef.h>
#include <stdbool.h>
#include <stdint.h>
#include "engine/containers/choco_string.h"
#include "engine/core/memory/choco_memory.h"
#include "engine/base/choco_macros.h"
#include "engine/base/choco_message.h"
文字列を格納するコンテナモジュールAPIの実装
- Author
- chocolate-pie24
- Version
- 0.1
- Date
- 2025-09-26
- Copyright
- Copyright (c) 2025 chocolate-pie24
- License
- MIT License. See LICENSE file in the project root for full license text.
◆ choco_string_c_str()
文字列コンテナstring_が管理する文字列の先頭アドレスを取得する
- Note
-
fprintf(stdout, "%s\n", c_ptr);
choco_string_result_t
文字列API実行結果コードリスト
Definition: choco_string.h:40
const char * choco_string_c_str(const choco_string_t *string_)
文字列コンテナstring_が管理する文字列の先頭アドレスを取得する
Definition: choco_string.c:399
void choco_string_destroy(choco_string_t **string_)
string_が管理しているメモリと自身のメモリを解放し、*string_=NULLにする
Definition: choco_string.c:167
choco_string_result_t choco_string_create_from_c_string(choco_string_t **string_, const char *src_)
const char*型文字列src_で文字列コンテナを生成する
Definition: choco_string.c:122
文字列コンテナ内部状態管理構造体
Definition: choco_string.c:68
- Parameters
-
| string_ | 文字列先頭アドレス取得元構造体インスタンス |
- Returns
- const char* 文字列先頭アドレス
◆ choco_string_concat()
文字列コンテナstring_が管理する文字列をdst_の末尾に連結する
- Note
- 自己連結(dst_にdst_を連結する)ことは禁止する(内部バッファ管理を簡便にするため)
- string_が管理する文字列が""の場合は何もしない
- dst_が管理するバッファの容量が足りない場合は,新規にバッファを取得し直す
choco_string_result_t choco_string_concat(const choco_string_t *string_, choco_string_t *dst_)
文字列コンテナstring_が管理する文字列をdst_の末尾に連結する
Definition: choco_string.c:281
- Parameters
-
- Return values
-
| CHOCO_STRING_INVALID_ARGUMENT | 以下のいずれか
- dst_ == NULL
- string_ == NULL
|
| CHOCO_STRING_BAD_OPERATION | 連結先文字列と連結元文字列の先頭アドレスが等しい(自己連結は禁止する) |
| CHOCO_STRING_DATA_CORRUPTED | 以下のいずれか
- string_の内部データが破損(アドレスへの不正アクセス等により発生)
- dst_の内部データが破損(アドレスへの不正アクセス等により発生)
|
| CHOCO_STRING_OVERFLOW | 連結後の文字列長さがsize_tの上限を超過 |
| CHOCO_STRING_NO_MEMORY | メモリ確保失敗 |
| CHOCO_STRING_LIMIT_EXCEEDED | メモリ管理システムの管理変数が使用可能範囲を超過 |
| CHOCO_STRING_SUCCESS | 文字列の連結に成功し,正常終了 |
◆ choco_string_concat_from_c_string()
const char*型文字列string_をdst_の末尾に連結する
- Note
- string_が""の場合は何もしない
- dst_が管理するバッファの容量が足りない場合は,新規にバッファを取得し直す
choco_string_result_t choco_string_concat_from_c_string(const char *string_, choco_string_t *dst_)
const char*型文字列string_をdst_の末尾に連結する
Definition: choco_string.c:338
- Parameters
-
- Return values
-
| CHOCO_STRING_INVALID_ARGUMENT | 以下のいずれか
- dst_ == NULL
- string_ == NULL
|
| CHOCO_STRING_DATA_CORRUPTED | dst_の内部データが破損(アドレスへの不正アクセス等により発生) |
| CHOCO_STRING_OVERFLOW | 連結後の文字列長さがsize_tの上限を超過 |
| CHOCO_STRING_NO_MEMORY | メモリ確保失敗 |
| CHOCO_STRING_LIMIT_EXCEEDED | メモリ管理システムの管理変数が使用可能範囲を超過 |
| CHOCO_STRING_SUCCESS | 文字列の連結に成功し,正常終了 |
◆ choco_string_copy()
文字列コンテナsrc_が管理する文字列をdst_にコピーする
- Note
- dst_のバッファサイズにより下記の動作をする
- dst_のバッファサイズがsrc_の文字列長さ+1(終端文字)よりも小さい: dst_のバッファサイズをsrc_の文字列長さ+1(終端文字)に拡張
- dst_のバッファサイズがsrc_の文字列長さ+1(終端文字)よりも大きい: dst_のバッファサイズは変更せず,文字列をコピー
- dst_のバッファサイズとsrc_の文字列長さ+1(終端文字)が等しい: dst_のバッファサイズは変更せず,文字列をコピー
choco_string_result_t choco_string_copy(choco_string_t *dst_, const choco_string_t *src_)
文字列コンテナsrc_が管理する文字列をdst_にコピーする
Definition: choco_string.c:184
choco_string_result_t choco_string_default_create(choco_string_t **string_)
空の文字列コンテナを生成する
Definition: choco_string.c:92
- Parameters
-
| dst_ | コピー先文字列コンテナ |
| src_ | コピー元文字列コンテナ |
- Return values
-
| CHOCO_STRING_INVALID_ARGUMENT | 以下のいずれか
- dst_ == NULL
- src_ == NULL
|
| CHOCO_STRING_DATA_CORRUPTED | 以下のいずれか
- dst_内部データが破損(アドレスへの不正アクセス等により発生)
- src_内部データが破損(アドレスへの不正アクセス等により発生)
|
| CHOCO_STRING_OVERFLOW | src_の文字列長さ+1(終端文字)がsize_tの最大値を超過 |
| CHOCO_STRING_NO_MEMORY | メモリ確保失敗 |
| CHOCO_STRING_LIMIT_EXCEEDED | メモリ管理システムの管理変数が使用可能範囲を超過 |
| CHOCO_STRING_SUCCESS | コピーに成功し,正常終了 |
- Warning
- 上記以外のエラーは,テストなどで意図的に発生させない限り起こり得ないエラーで確実にバグ
◆ choco_string_copy_from_c_string()
const char*型文字列src_をdst_にコピーする
- Note
- dst_のバッファサイズにより下記の動作をする
- dst_のバッファがsrc_の文字列長さ+1(終端文字)よりも小さい: dst_のバッファサイズをsrc_の文字列長さ+1(終端文字)に拡張
- dst_のバッファがsrc_の文字列長さ+1(終端文字)よりも大きい: dst_のバッファサイズは変更せず,文字列をコピー
- dst_のバッファとsrc_の文字列長さ+1(終端文字)に等しい: dst_のバッファサイズは変更せず,文字列をコピー
choco_string_result_t choco_string_copy_from_c_string(choco_string_t *dst_, const char *src_)
const char*型文字列src_をdst_にコピーする
Definition: choco_string.c:234
- Parameters
-
| dst_ | コピー先文字列コンテナ |
| src_ | コピー元文字列 |
- Return values
-
| CHOCO_STRING_INVALID_ARGUMENT | 以下のいずれか
|
| CHOCO_STRING_DATA_CORRUPTED | dst_の内部データが破損(アドレスへの不正アクセス等により発生) |
| CHOCO_STRING_OVERFLOW | src_の文字列長さ+1(終端文字)がsize_tの上限を超過 |
| CHOCO_STRING_NO_MEMORY | メモリ確保失敗 |
| CHOCO_STRING_LIMIT_EXCEEDED | メモリ管理システムの管理変数が使用可能範囲を超過 |
| CHOCO_STRING_SUCCESS | コピーに成功し,正常終了 |
- Warning
- 上記以外のエラーは,テストなどで意図的に発生させない限り起こり得ないエラーで確実にバグ
◆ choco_string_create_from_c_string()
const char*型文字列src_で文字列コンテナを生成する
- Note
-
- Parameters
-
| string_ | 初期化対象文字列コンテナ |
| src_ | 初期化文字列 |
- Return values
-
| CHOCO_STRING_INVALID_ARGUMENT | 以下のいずれか
- string_ == NULL
- *string_ != NULL
- src_ == NULL
|
| CHOCO_STRING_NO_MEMORY | メモリ確保失敗 |
| CHOCO_STRING_LIMIT_EXCEEDED | メモリ管理システムの管理変数が使用可能範囲を超過 |
| CHOCO_STRING_OVERFLOW | src_の文字列長さ+1(終端文字)がsize_tの最大値を超過 |
| CHOCO_STRING_SUCCESS | 初期化に成功し,正常終了 |
- Warning
- 上記以外のエラーは,テストなどで意図的に発生させない限り起こり得ないエラーで確実にバグ
◆ choco_string_default_create()
空の文字列コンテナを生成する
- Note
-
- Parameters
-
- Return values
-
| CHOCO_STRING_INVALID_ARGUMENT | 以下のいずれか
- string_ == NULL
- *string_ != NULL
|
| CHOCO_STRING_NO_MEMORY | メモリ確保失敗 |
| CHOCO_STRING_LIMIT_EXCEEDED | メモリ管理システムの管理変数が使用可能範囲を超過 |
| CHOCO_STRING_SUCCESS | 初期化に成功し,正常終了 |
◆ choco_string_destroy()
string_が管理しているメモリと自身のメモリを解放し、*string_=NULLにする
- Note
- 2重デストロイ許可
- string_ == NULLの場合はno-op
- *string_ == NULLの場合はno-op
- Parameters
-
◆ choco_string_length()
文字列コンテナstring_が管理する文字列の長さを取得する
- Note
- string_がNULLまたはstring_内部管理バッファサイズが0の場合は0を返す
- 終端文字を含まない長さが返される
size_t choco_string_length(const choco_string_t *string_)
文字列コンテナstring_が管理する文字列の長さを取得する
Definition: choco_string.c:391
- Parameters
-
- Returns
- size_t 文字列長さ