« Yash 2 その 73 | トップページ | テレビ番組等感想 その 150 »

2008年11月 1日 (土)

Curses ライブラリに関する下調べ

行編集機能の実装には curses ライブラリを使うので、その下調べ。

  • Curses の機能を使うには _XOPEN_CURSES マクロを定義する必要がある。
  • Enhanced Curses の機能はライブラリが _XOPEN_CURSES マクロを定義しているときのみ利用可能。その機能を使うにはアプリケーションで _XOPEN_SOURCE_EXTENDED マクロを値 1 で定義する必要がある。
  • 大文字 2 文字の識別子はライブラリが使用するため留保されている。
  • curses.h ヘッダでは以下の接頭辞で始まるマクロが定義される可能性がある: A_, ACS_, ALL_, BUTTON, COLOR_, KEY_, MOUSE, REPORT_, WA_, WACS_
  • term.h ヘッダでは接頭辞 ext_ で始まるマクロが定義される可能性がある。その他 capability 名が定義される。
  • Curses ライブラリを使用したプログラムは -l curses でリンクする。
  • Curses の仕様は C99 の策定前にできたので、Curses が定めるところの bool と C99 の stdbool.h ヘッダが定めるところの bool との関係は定義されていない。
  • Non-spacing characters とは wcwidth が 0 を返す文字である。(ナル文字を除く)
  • ウィンドウを切り替えるアプリケーションは最初に initscr または newterm を呼び、最後に endwin を呼ぶ。initscr または newterm を呼ぶ前に呼んでいいのは、filter, ripoffline, slk_init, use_env そして term.h でプロトタイプ宣言される関数のみである。
  • term.h ヘッダで宣言されるもの: cur_term, del_curterm(), putp(), restartterm(), set_curterm(), setupterm(), tgetent(), tgetflag(), tgetnum(), tgetstr(), tgoto(), tigetflag(), tigetnum(), tigetstr(), tparm(), tputs(), typedef bool, typedef TERMINAL
  • Terminfo データベースを使用するには、まず setupterm を呼ぶ。
  • 古い環境の事を考えると term.h の前に curses.h をインクルードしたほうが良い。
  • X/Open 規格によれば tparm() の一つ目以外の引数の型はすべて long となっているはずだが、実際のヘッダでは二つ目以降の引数は可変個数引数として宣言されている場合があるので注意を要する。

Yash においては curses の機能全体は不要で、terminfo だけあれば事足りる筈。

|

« Yash 2 その 73 | トップページ | テレビ番組等感想 その 150 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/169172/42973266

この記事へのトラックバック一覧です: Curses ライブラリに関する下調べ:

« Yash 2 その 73 | トップページ | テレビ番組等感想 その 150 »