queue.h

キュー操作ライブラリ [詳細]

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

データ構造

struct  queue
 キューのデータ構造の定義 [詳細]

型定義

typedef queue QUEUE
 キューのデータ構造の定義

関数

Inline void queue_initialize (QUEUE *queue)
 キューの初期化
Inline void queue_insert_prev (QUEUE *queue, QUEUE *entry)
 キューの前エントリへの挿入
Inline void queue_delete (QUEUE *entry)
 エントリの削除
Inline QUEUEqueue_delete_next (QUEUE *queue)
 キューの次エントリの取出し
Inline BOOL queue_empty (QUEUE *queue)
 キューが空かどうかのチェック


説明

キュー操作ライブラリ

このキュー操作ライブラリでは,キューヘッダを含むリング構造のダブル リンクキューを扱う.具体的には,キューヘッダの次エントリはキューの 先頭のエントリ,前エントリはキューの末尾のエントリとする.また,キ ューの先頭のエントリの前エントリと,キューの末尾のエントリの次エン トリは,キューヘッダとする.空のキューは,次エントリ,前エントリと も自分自身を指すキューヘッダであらわす.

queue.h で定義されています。


型定義

typedef struct queue QUEUE
 

キューのデータ構造の定義


関数

Inline void queue_delete QUEUE entry  ) 
 

エントリの削除

entry をキューから削除する.

queue.h93 行で定義されています。

参照先 entry.

00094 {
00095     entry->prev->next = entry->next;
00096     entry->next->prev = entry->prev;
00097 }

Inline QUEUE* queue_delete_next QUEUE queue  ) 
 

キューの次エントリの取出し

queue の次エントリをキューから削除し,削除したエントリを返す.queue にキューヘッダを指定した場合には,キューの先頭のエントリを取り出す ことになる.queue に空のキューを指定して呼び出してはならない.

queue.h107 行で定義されています。

参照先 assertentryqueue::next.

00108 {
00109     QUEUE   *entry;
00110 
00111     assert(queue->next != queue);
00112     entry = queue->next;
00113     queue->next = entry->next;
00114     entry->next->prev = queue;
00115     return(entry);
00116 }

Inline BOOL queue_empty QUEUE queue  ) 
 

キューが空かどうかのチェック

queue にはキューヘッダを指定する.

queue.h124 行で定義されています。

参照先 assertFALSEqueue::nextqueue::prevTRUE.

00125 {
00126     if (queue->next == queue) {
00127         assert(queue->prev == queue);
00128         return(TRUE);
00129     }
00130     return(FALSE);
00131 }

Inline void queue_initialize QUEUE queue  ) 
 

キューの初期化

queue にはキューヘッダを指定する.

queue.h67 行で定義されています。

参照先 queue::nextqueue::prev.

00068 {
00069     queue->prev = queue->next = queue;
00070 }

Inline void queue_insert_prev QUEUE queue,
QUEUE entry
 

キューの前エントリへの挿入

queue の前に entry を挿入する.queue にキューヘッダを指定した場合 には,キューの末尾に entry を挿入することになる.

queue.h79 行で定義されています。

参照先 entryqueue::nextqueue::prev.

参照元 queue_insert_tpri()wobj_queue_insert().

00080 {
00081     entry->prev = queue->prev;
00082     entry->next = queue;
00083     queue->prev->next = entry;
00084     queue->prev = entry;
00085 }


Copyright © 2006 by TAKAGI Nobuhisa.
このページは Mon Apr 3 23:49:17 2006 に Doxygen によって生成されました。