この章の目次にもどる
前頁:1.19 bitop.h にもどる
次頁:1.21 libwin.h にすすむ
  双方向リンクを持ったキューを扱う関数群で、
  ヘッダ・ファイルは bsys / queue.h である。
  キューの双方向リンクの先頭と終端もリンクされるため、リングを構成する。
  キューの構造そのものはリンクのみであるため、
  通常は他の構造体のメンバーとして使用する。
  キューの要素の追加、削除、検索等の関数が用意されている。
□ キューの構造
/* ダブルリンクキュー(リング) */
typedef struct queue {
    struct  queue   *next;
    struct  queue   *prev;
} QUEUE;
【形式】
Bool    isQueEmpty(QUEUE *que)
【パラメータ】
QUEUE *que  キュー構造へのポインタ
【リターン値】
True        キューは空である。
False       キューは空ではない。
【解説】
  キューに要素が含まれているかどうかをチェックする。
  空であるキューとは、
  que == que->next, que == que->prev
  であるキューを意味する。
【形式】
VOID    QueInit(QUEUE *que)
【パラメータ】
QUEUE *que  キュー構造へのポインタ
【リターン値】
なし
【解説】
  キューを空の状態
  ( que == que->next, que == que->prev) に初期化する。
【形式】
VOID    QueInsert(QUEUE *entry, QUEUE *que)
【パラメータ】
QUEUE *entry    挿入するエントリへのポインタ
QUEUE *que      キュー構造へのポインタ
【リターン値】
なし
【解説】
   que の直前に entry を挿入する。
【形式】
VOID    QueRemove(QUEUE *entry)
【パラメータ】
QUEUE *entry    削除するエントリへのポインタ
【リターン値】
なし
【解説】
  entry をキューから削除する。 
  entry の直前と直後のエントリがリンクされる。
  キューがすでに空である場合には、なにもしない。
| QueRemoveNext |  
|   |  
| キューの先頭のエントリ取り出し |  
  | 
【形式】
QUEUE   *QueRemoveNext(QUEUE *que)
【パラメータ】
QUEUE *que  キューのポインタ
【リターン値】
QUEUE*      取り出したエントリへのポインタ
【解説】
  キューの先頭の要素をキューから取り出し、関数値として戻す。
  キューが空であった場合には NULL を戻す。
| QueSearch |  
|   |  
| キューエントリのサーチ: EQ |  
  | 
【形式】
QUEUE   *QueSearch(QUEUE *start, QUEUE *end, W val, W offset)
QUEUE   *QueSearchH(QUEUE *start, QUEUE *end, H val, W offset)
【パラメータ】
QUEUE   *start  検索開始エントリ
QUEUE   *end    検索終了エントリ
W or H  val     検索する値
W       offset  検索する値へのキュー構造の先頭アドレスからのオフセット
【リターン値】
QUEUE*  検索したエントリ
【解説】
  start の次のエントリから end
  の直前のエントリまでを検索する
  ( start と end
  のエントリはサーチ対象に含まれない)。
  キュー構造の先頭アドレス + offset
  バイトの領域に位置するデータの内容が val
  と同じ値であるエントリを検索し、関数値として戻す。
  該当するエントリが存在しなかった場合は関数値として
  end を戻す。
  検索対象データのサイズによって、
  QueSearch(), QueSearchH()
  の 2 つの関数がある。
| QueSearchNE |  
|   |  
| キューエントリのサーチ: NE |  
  | 
【形式】
Inline  QUEUE   *QueSearchNE(QUEUE *start, QUEUE *end, W val, W offset)
Inline  QUEUE   *QueSearchNEH(QUEUE *start, QUEUE *end, H val, W offset)
【パラメータ】
QUEUE   *start  検索開始エントリ
QUEUE   *end    検索終了エントリ
W or H  val     検索する値
W       offset  検索する値へのキュー構造の先頭アドレスからのオフセット
【リターン値】
QUEUE*  検索したエントリ
【解説】
  start の次のエントリから end
  の直前のエントリまでを検索する
  ( start と end
  のエントリはサーチ対象に含まれない)。
  キュー構造の先頭アドレス + offset 
  バイトの領域に位置するデータの内容が val
  と異なる値であるエントリを検索し、関数値として戻す。
  該当するエントリが存在しなかった場合は関数値として
  end を戻す。
  検索対象データのサイズによって、
  QueSearchNE(), QueSearchNEH() の2つの関数がある。
| QueSearchGE |  
|   |  
| キューエントリのサーチ: GE |  
  | 
【形式】
QUEUE   *QueSearchGE(QUEUE *start, QUEUE *end, W val, W offset)
【パラメータ】
QUEUE   *start  検索開始エントリ
QUEUE   *end    検索終了エントリ
W       val     検索する値
W       offset  検索する値へのキュー構造の先頭アドレスからのオフセット
【リターン値】
QUEUE*  検索したエントリ
【解説】
  start の次のエントリから end
  の直前のエントリまでを検索する
  ( start と end
  のエントリはサーチ対象に含まれない)。
  キュー構造の先頭アドレス+offsetバイトの領域に位置するデータの内容が
  val 以上の値であるエントリを検索し、関数値として戻す。
  該当するエントリが存在しなかった場合は関数値として
  end を戻す。
| QueSearchGEU |  
|   |  
| キューエントリのサーチ: GEU |  
  | 
【形式】
QUEUE   *QueSearchGEU(QUEUE *start, QUEUE *end, W val, W offset)
【パラメータ】
QUEUE   *start  検索開始エントリ
QUEUE   *end    検索終了エントリ
W       val     検索する値
W       offset  検索する値へのキュー構造の先頭アドレスからのオフセット
【リターン値】
QUEUE*  検索したエントリ
【解説】
  start の次のエントリから end
  の直前のエントリまでを検索する
  ( start と end
  のエントリはサーチ対象に含まれない)。
  キュー構造の先頭アドレス  + offset
  バイトの領域に位置するデータの内容が
  val 以上の値であるエントリを検索し、
  関数値として戻す。
  データの内容と val の内容は符号無し整数
  (32bit) の値として比較される。
  該当するエントリが存在しなかった場合は関数値として
  end を戻す。
| QueSearchRevLTU |  
|   |  
| キューエントリのサーチ: RevLTU |  
  | 
【形式】
QUEUE   *QueSearchRevLTU(QUEUE *start, QUEUE *end, W val, W offset)
【パラメータ】
QUEUE   *start  検索開始エントリ
QUEUE   *end    検索終了エントリ
W       val     検索する値
W       offset  検索する値へのキュー構造の先頭アドレスからのオフセット
【リターン値】
QUEUE*  検索したエントリ
【解説】
  start の次のエントリから end
  の直前のエントリまでを検索する
  ( start と end
  のエントリはサーチ対象に含まれない)。
  キュー構造の先頭アドレス + offset 
  バイトの領域に位置するデータの内容が val
  よりも小さなエントリを検索し、関数値として戻す。
  データの内容と val
  の内容は符号無し整数 ( 32bit ) の値として比較される。
  該当するエントリが存在しなかった場合は関数値として end
  を戻す。
この章の目次にもどる
前頁:1.19 bitop.h にもどる
次頁:1.21 libwin.h にすすむ