2.12.1.2 tm_typeswへの新しいバッファ・タイプの追加
新しいスイッチ要素ルーチンを記述し、そのコンパイルに成功したら、そのバッファ・タイプ・スイッチに新しいバッファ・タイプを追加する必要があります。その場合、$TUXDIR/lib/tmtypesw.c
(デフォルトのバッファ・タイプ・スイッチのソース・コード)をコピーします。コピーしたファイル名に、mytypesw.c
など、拡張子として.c
を付けます。コピーしたファイルに新しいタイプを追加します。タイプ名は8文字以内で指定します。サブタイプには、NULL(""
)または16文字以内の文字列を指定できます。新しいスイッチ要素ルーチンの名前は、extern
宣言も含めて適切な場所に入力します。次のリストは、その例を示しています。
新しいタイプのバッファ・スイッチへの追加のリスト
#include <stdio.h>
#include <tmtypes.h>
/* Customized the buffer type switch */
static struct tmtype_sw_t tm_typesw[] = {
{
"SOUND", /* type */
“", /* subtype */
50000, /* dfltsize */
snd_init, /* initbuf */
snd_init, /* reinitbuf */
NULL, /* uninitbuf */
snd_cmprs, /* presend */
snd_uncmprs, /* postsend */
snd_uncmprs /* postrecv */
},
{
"FML", /* type */
"", /* subtype */
1024, /* dfltsize */
_finit, /* initbuf */
_freinit, /* reinitbuf */
_funinit, /* uninitbuf */
_fpresend, /* presend */
_fpostsend, /* postsend */
_fpostrecv, /* postrecv */
_fencdec, /* encdec */
_froute, /* route */
_ffilter, /* filter */
_fformat /* format */
},
{
""
}
};
この例では、SOUND
という新しいタイプを追加しています。また、VIEW
、X_OCTET
、X_COMMON
、およびX_C_TYPE
のエントリを削除して、デフォルト・スイッチで不要なエントリを削除できることを示しています。配列の最後にNULLがあることに注目してください。
新しいバッファ・タイプを定義する別の方法は、既存のタイプを再定義することです。引数のために、次のバッファ・タイプを定義したデータ圧縮を想定します
MYTYPE
文字列に対して実行されたとします。その場合、STRING
型の2つの_dfltblen
のかわりに、新しいスイッチ要素ルーチン_mypresend
と_mypostrecv
を使用できます。
親トピック: 独自のバッファ・タイプの定義