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という新しいタイプを追加しています。また、VIEWX_OCTETX_COMMON、およびX_C_TYPEのエントリを削除して、デフォルト・スイッチで不要なエントリを削除できることを示しています。配列の最後にNULLがあることに注目してください。

新しいバッファ・タイプを定義する別の方法は、既存のタイプを再定義することです。引数のために、次のバッファ・タイプを定義したデータ圧縮を想定します

MYTYPE

文字列に対して実行されたとします。その場合、STRING型の2つの_dfltblenのかわりに、新しいスイッチ要素ルーチン_mypresend_mypostrecvを使用できます。