/*
 * 文字列ライブラリ
 */

#ifndef MIANTO_STRING_H
#define MINATO_STRING_H

/* 文字列オブジェクト */
typedef struct
{
    char* mStr;
    int mLen;

    int mMallocLen;
} string_obj;

////////////////////////////////////////////////////////////////////////////////
// 関数定義
////////////////////////////////////////////////////////////////////////////////
string_obj* string_new(char* str);                      // 初期化
void string_delete(string_obj* str);                    // 解放

int string_length(string_obj* obj);                     // 文字列数を返す
int string_size(string_obj* obj);                       // 文字列数を返す
char* string_c_str(string_obj* obj);                    // c文字列のポインタを返す

void string_push_back(string_obj* self, char* key);     // 後ろから文字列を追加
void string_push_back2(string_obj* self, char key);     // 後ろから文字を追加
void string_put(string_obj* self, char* str);           // 文字列を代入

void string_trunc(string_obj* self, int n);             // 文字列を短くする

void string_insert(string_obj* obj, int pos, char* str);    // 文字列をposの位置に追加
void string_erase(string_obj* obj, int pos, int len);       // 文字列をposの位置からlenだけ削除

#endif
