!! 基本データ型 教科書p64の'''表4.1'''を参考にしよう.データ型の名前からほぼ,類推できるはず. * C言語の基本的な型名の前に「g」を付与 ** gint, gchar, gdouble, ... * GLib独自の型もあるので注意 ** guint8, gpointer, gboolean, ... !! メモリ割り当て :'''g_new0(struct_type, n_structs)''' ::指定したデータ型 struct_type のメモリ領域を n_structs 分確保し, 0 で初期化した上で先頭アドレスを返す.実体はマクロ. :'''void g_free (gpointer mem)''' ::確保したメモリ領域を解放する. !! 文字列操作 :'''gchar* g_strdup(const gchar *str)''' ::文字列strを新しい文字列としてコピー.((color green 領域は新たに確保))してくれる. :'''gchar* g_strdup_printf(const gchar *format, ...)''' ::printf形式で新しい文字列を生成する.((color green 領域は新たに確保))してくれる. :'''gchar** g_strsplit(const gchar *string, const gchar *delimiter, gint max_token)''' ::文字列 string を,区切り文字 delimiter で最大 max_tokens 個に分割する.戻り値は,文字列の配列へのポインタ.もちろん,((color green 領域は新たに確保))してくれる. !! ファイルアクセス :'''gboolean g_file_test (const gchar *filename, GFileTest test)''' ::ファイルの状態を調べる関数. 第2引数に与える値(下記)によって, ファイルが存在するか,ディレクトリか,などを調へられる. ||G_FILE_TEST_IS_REGULAR|ファイルか ||G_FILE_TEST_IS_SYMLINK| シンボリックリンクか ||G_FILE_TEST_IS_DIR | ディレクトリか ||G_FILE_TEST_IS_EXECUTABLE | 実行可能か ||G_FILE_TEST_EXISTS | 存在するか :'''GDir* g_dir_open (const gchar *path, guint flags, GError **error)''' ::ディレクトリをオープンする. :'''G_CONST_RETURN gchar* g_dir_read_name (GDir *dir)''' ::ディレクトリ内のファイル名を調べる. 呼び出されるごとに,順番にファイル名を返す. 最後にNULLが返る. :'''void g_dir_close (GDir *dir)''' ::ディレクトリをクローズする. :'''G_CONST_RETURN gchar* g_get_home_dir (void)''' ::ホームディレクトリを取得する. :'''gchar* g_get_current_dir (void)''' ::現在のディレクトリを取得する. :'''gchar* g_path_get_basename (const gchar *file_name)''' ::パスを含んだbasenameから,最後のファイル名(またはディレクトリ名)を返す. :'''gchar* g_path_get_dirname (const gchar *file_name)''' ::パスを含んだbasenameから,最後のファイル名を取り除いたディレクトリ部分を返す. :'''gchar* g_build_filename (const gchar *first_element, ...)''' ::引数に与えた文字列(可変個)をファイル名用の区切り文字 (例えば/) で結合し,1つの文字列を作成する.引数の最後は NULL で終える必要がある. !! Unicode関係 * 日本語を扱いたい場合,基本的には((color red ソースに記述する日本語をUTF-8で書けばOK)). * 他の文字コードとUTF-8を相互変換する関数群も提供されている. ** g_locale_to_utf8, g_locale_from_utf8 ** g_filename_to_utf8, g_filename_from_utf8 !! 連結リスト GLibにおける双方向リスト 6< 8< struct GList { gpointer data; GList *next; GList *prev; }; >8 >9 :'''GList* g_list_append (GList *list, gpointer data)''' ::リストにデータを追加する. :'''GList* g_list_insert (GList *list, gpointer data, gint position)''' ::指定した位置に data を挿入する. :'''GList* g_list_delete_link (GList *list, GList *link_)''' ::link リストから指定した位置のノードを削除する.((color green リストのデータ領域をあらかじめ解放しておく))必要がある. :'''void g_list_free (GList *list)''' ::リストを解放する.((color green リスト中のデータは,あらかじめ解放しておく必要がある)). :'''void g_list_foreach (GList *list, GFunc func, gpointer user_data)''' ::リストの各々のノードに対して関数 func を実行する. GFuncの定義は以下.この関数の第1引数にリストの各データが渡され,第2引数に g_list_foreach の第3引数が渡される. 8< void (*GFunc) (gpointer data, gpointer user_data); >8 :'''guint g_list_length (GList *list)''' ::リストの長さを返す. :'''GList* g_list_first (GList *list)''' ::リストの先頭のノードを返す. :'''GList* g_list_last (GList *list)''' ::リストの末尾のノードを返す. :'''g_list_previous(list)''' ::現在のノードの前のノードを返す.実体はマクロ :'''g_list_next(list)''' ::現在のノードの次のノードを返す.実体はマクロ :'''GList* g_list_nth (GList *list, guint n)''' ::n番目のノードを返す. :'''gpointer g_list_nth_data (GList *list, guint n)''' ::n番目のリストのデータを返す. :'''GList* g_list_sort (GList *list, GCompareFunc compare_func)''' ::各ノードを,compare func に従ってソートする. 関数 GCompareFunc の定義は以下. 8< gint (*GCompareFunc) (gconstpointer a, gconstpointer b); >8 !! ハッシュ !! タイマー