試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

C言語

多目的ユーティリティライブラリGLibの一部を再実装したEglibライブラリについて

概要 C言語で利用可能な多目的ユーティリティライブラリのGLibは(GTK+とともに)LGPLライセンスで公開されているが、使い方によってはLGPLライセンスでは都合が悪い場合もある(例:プロプライエタリなソフトウェア内への組み込み)。 Monoプロジェクトでは、こ…

C言語のGTK+でListStoreからデータを取り出す処理に関する追加メモ(後半)

「C言語のGTK+でListStoreからデータを取り出す処理に関する追加メモ(前半)」の続き。 「C言語でGTK+ 2を扱う上での幾つかのメモ(第9回)」の例と同じ処理をgtk_tree_model_get()を用いたものに書き換えると下のようになり、動作は同じものとなる。 [任意]フ…

C言語のGTK+でListStoreからデータを取り出す処理に関する追加メモ(前半)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第8回)」ではListStoreというデータ構造(オブジェクト)からデータを取り出すときにgtk_tree_model_get_value()とGValue型のデータを用いたが、これは値を取り出す際に型を柔軟に扱える反面、処理に面倒なところがあ…

C言語でGTK+ 2を扱う上での幾つかのメモ(第9回)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第8回)」の続きとして、C言語でGTK+ 2のツリービュー(ListStore使用)のテストを行う例を貼り付ける。 [任意]ファイル名: treeviewliststoretest.c #include <gtk/gtk.h> #include <stdlib.h> /* * C言語によるGTK+のTreeView(ListStore使</stdlib.h></gtk/gtk.h>…

C言語でGTK+ 2を扱う上での幾つかのメモ(第8回)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第7回)」の続き。 ListStoreに対するデータの出し入れとツリービュー関係の操作 ツリービューなどで表示するデータとして用いるListStoreというデータ構造に対するデータの出し入れの形がC言語やVala言語ではPyGTK…

GLib 2が用意している基本的なデータ型について(ページ3/3)

「GLib 2が用意している基本的なデータ型について(ページ2/3)」の続き。 特別な型 真偽値 真偽値としてgboolean型という型があり、TRUE(真)もしくはFALSE(偽)という値をとる。if文の丸括弧にこの型の変数のみを入れると、それがTRUEの場合にif文の条件が真と…

GLib 2が用意している基本的なデータ型について(ページ2/3)

「GLib 2が用意している基本的なデータ型について(ページ1/3)」の続き。 環境によらずbit数/値の範囲を保証する型 GLibが提供する型の中にはbit数を保証する型が存在し、例えばgint64という型はどのアーキテクチャであっても64bitであることが保証される(扱…

GLib 2が用意している基本的なデータ型について(ページ1/3)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第4回)」で一部触れているが、バージョン2系のGLibが用意している基本的な型についてを詳しくまとめておく。 C言語の標準と同じ型(環境依存) C言語で標準で用いることのできる型をそのままGLib上で用いるもので、全…

Vala言語でコマンド行オプションの解析と処理を行う(ページ1/3)

バージョン2.6以上のGLibにはPythonのoptparseモジュールのような高度なコマンド行オプション解析/ヘルプ生成の仕組みが用意されており、国際化にも対応している。また、ヘルプ項目はグループ化でき、例えばZenityは大量のオプションが指定可能だが(--help-c…

C言語でGTK+ 2を扱う上での幾つかのメモ(第7回)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第6回)」の続き。 GObjectオブジェクトの参照カウンタ操作の簡単な例 「C言語でGTK+ 2を扱う上での幾つかのメモ(第3回)」でGObjectオブジェクトの参照カウンタに関して少し触れているが、ここでは参照カウンタを操…

C言語でGTK+ 2を扱う上での幾つかのメモ(第6回)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第5回)」の続き。 メインループを用いた例2 下の例を実行すると button text change label の2つのボタンとその上に「default label」の文字列を含んだウィンドウが表示され 上のボタンを押すと ** (gtkhello2:xxxx…

C言語でGTK+ 2を扱う上での幾つかのメモ(第5回)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第4回)」の続き。 GObjectシグナル接続時の整数値のユーザデータのやりとりについて 関数g_signal_connect()でイベント(GObjectシグナル)とその発生時に呼ばれるハンドラ関数の関連付け(シグナルの接続)を行う際に…

C言語でGTK+ 2を扱う上での幾つかのメモ(第4回)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第3回)」の続き。 メインループを用いた簡単な例 下の例を実行すると、ラベル(文字列を表示するGUI部品)のみを含むウィンドウを表示し、これを閉じると終了する。 [任意]ファイル名: gtkhello.c #include <gtk/gtk.h> #include <stdlib.h></stdlib.h></gtk/gtk.h>…

C言語でGTK+ 2を扱う上での幾つかのメモ(第3回)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第2回)」の続き。 GUI部品(ウィジェット)のデータ型と型変換について GUI部品のオブジェクトとその管理 GUI部品は基本的にGtkWidget型構造体へのポインタ(「GtkWidget *」型)として宣言し、多くはgtk_[文字列]_new(…

C言語でGTK+ 2を扱う上での幾つかのメモ(第2回)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第1回)」の続き。 基本的な形 用いるヘッダファイル ヘッダファイルはgtk/gtk.hを参照する。GTK+ 2ではGLib 2の関数(「g_」で始まる名前の関数)を用いることも多いが、GLib 2のヘッダファイル(glib/glib.h)はプログ…

C言語でGTK+ 2を扱う上での幾つかのメモ(第1回)

GTK+ 2(GObject関係含む)に関することの内、C言語に特有のことを扱う。第1回では主に準備段階についてを扱う。 ライブラリのパッケージなどについて 一般的に、(GTK+を含む)ライブラリを用いたプログラムをビルドする際に必要なファイルは、ライブラリを用い…

Linux上におけるフォースフィードバックの振動の低レベル制御に関するメモ(後半)

「Linux上におけるフォースフィードバックの振動の低レベル制御に関するメモ(前半)」の続き。 振動の設定(effect)とその送信(upload) 振動の設定はstruct ff_effect型構造体(effect)を用いて行う。この型はフォースフィードバックにおける振動以外の種類にも…

Linux上におけるフォースフィードバックの振動の低レベル制御に関するメモ(前半)

「GNU/Linux上の振動対応ジョイパッドデバイスの振動テストを行うGUIツールを作成」のGUI振動テストツール作成上のメモの内、フォースフィードバック関係の(低レベル/OS依存な)操作に関するメモを扱う。ここで扱うのは主にカーネル付属ドキュメントのDocumen…

特定のプロファイルのFirefoxの動作中にcpufreqdのプロファイルを自動的に切り替える

cpufreqdのためにFirefoxの別プロファイルを異なるプロセス名で動かすことに 切り替えたいcpufreqdプロファイルについて シェルスクリプトがプロセス名にうまくマッチングしない? C言語のsystem()関数で実行すると... cpufreqdのためにFirefoxの別プロファイ…

ValaやC#の「ref」や「out」について

Vala言語と(影響を受けている)C#言語では、関数へ引数を渡すときに「ref」や「out」といったキーワードが手前に渡されることがある。 ref/outの効果 「ref」や「out」は関数を呼ぶ側で定義した変数を引数にして渡したときに、その内容を関数の中で操作した…

GLibのメッセージ記録システムを使用する

GTK+のアプリケーションなどで ** (appname:1234): WARNING **: foo ** (appname:5678): CRITICAL **: barのようなメッセージが端末に出るのを見ることがあるのだが、これはGLibのメッセージ記録システムを利用している。 メッセージ出力部 重要度によって g…

GLibで連結リスト(リスト構造)にデータを追加する方向とその時間について

先頭からデータを逆順に追加すると処理が少ない? GTK+をはじめとして広く利用されているライブラリのGLibにはリスト構造(自己参照構造体)のデータ型が標準で用意されていて 単方向(手前の要素をたどれない): GSList 双方向(手前にも後ろにもたどれる): GList…