Changeset 167 for UsbWattMeter/trunk/asp_dcre/include/queue.h
- Timestamp:
- Mar 8, 2016, 8:37:45 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
UsbWattMeter/trunk/asp_dcre/include/queue.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 11 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 12 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 13 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 14 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 15 * XR[hÉÜÜêĢ鱯D 16 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 17 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 18 gip 19 * Ò}j 20 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 21 * Ì³ÛØKèðfÚ·é±ÆD 22 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 23 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 24 * ÆD 25 * (a) Äzzɺ¤hL 26 gipÒ}j 27 AÈÇjÉCãLÌ 28 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 29 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 30 * ñ·é±ÆD 31 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 32 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 33 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 34 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 35 * ÆÓ·é±ÆD 36 * 37 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 38 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI 39 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF 40 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC» 41 * ÌÓCðíÈ¢D 10 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 11 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 12 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 13 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 14 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 15 * スコード中に含まれていること. 16 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 17 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 18 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 19 * の無保証規定を掲載すること. 20 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 21 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 22 * と. 23 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 24 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 25 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 26 * 報告すること. 27 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 28 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 29 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 30 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 31 * 免責すること. 32 * 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 42 38 * 43 39 * @(#) $Id$ … … 45 41 46 42 /* 47 * L 48 [ìCu 49 * 50 * ±ÌL 51 [ìCuÅÍCL 52 [wb_ðÜÞO\¢Ì_u 53 * NL 54 [ðµ¤DïÌIÉÍCL 55 [wb_ÌGgÍL 56 [Ì 57 * æªÌGgCOGgÍL 58 [ÌöÌGgÆ·éDܽCL 59 * 60 [ÌæªÌGgÌOGgÆCL 61 [ÌöÌGgÌG 62 * gÍCL 63 [wb_Æ·éDóÌL 64 [ÍCGgCOGgÆ 65 * ੪©gðw·L 66 [wb_Å çí·D 43 * キュー操作ライブラリ 44 * 45 * このキュー操作ライブラリでは,キューヘッダを含むリング構造のダブル 46 * リンクキューを扱う.具体的には,キューヘッダの次エントリはキューの 47 * 先頭のエントリ,前エントリはキューの末尾のエントリとする.また,キ 48 * ューの先頭のエントリの前エントリと,キューの末尾のエントリの次エン 49 * トリは,キューヘッダとする.空のキューは,次エントリ,前エントリと 50 * も自分自身を指すキューヘッダであらわす. 67 51 */ 68 52 … … 75 59 76 60 /* 77 * L 78 [Ìf[^\¢Ìè` 61 * キューのデータ構造の定義 79 62 */ 80 63 typedef struct queue { 81 struct queue *p_next; /* GgÖÌ|C^*/82 struct queue *p_prev; /* OGgÖÌ|C^*/64 struct queue *p_next; /* 次エントリへのポインタ */ 65 struct queue *p_prev; /* 前エントリへのポインタ */ 83 66 } QUEUE; 84 67 85 68 /* 86 * L 87 [Ìú» 88 * 89 * p_queueÉÍL 90 [wb_ðwè·éD 69 * キューの初期化 70 * 71 * p_queueにはキューヘッダを指定する. 91 72 */ 92 73 Inline void … … 98 79 99 80 /* 100 * L 101 [ÌOGgÖÌ}ü 102 * 103 * p_queueÌOÉp_entryð}ü·éDp_queueÉL 104 [wb_ðwèµ½ê 105 * ÉÍCL 106 [ÌöÉp_entryð}ü·é±ÆÉÈéD 81 * キューの前エントリへの挿入 82 * 83 * p_queueの前にp_entryを挿入する.p_queueにキューヘッダを指定した場 84 * 合には,キューの末尾にp_entryを挿入することになる. 107 85 */ 108 86 Inline void … … 116 94 117 95 /* 118 * L 119 [ÌGgÖÌ}ü 120 * 121 * p_queueÌÉp_entryð}ü·éDp_queueÉL 122 [wb_ðwèµ½ê 123 * ÉÍCL 124 [ÌæªÉp_entryð}ü·é±ÆÉÈéD 96 * キューの次エントリへの挿入 97 * 98 * p_queueの次にp_entryを挿入する.p_queueにキューヘッダを指定した場 99 * 合には,キューの先頭にp_entryを挿入することになる. 125 100 */ 126 101 Inline void … … 134 109 135 110 /* 136 * GgÌí 137 * 138 * p_entryðL 139 [©çí·éD 111 * エントリの削除 112 * 113 * p_entryをキューから削除する. 140 114 */ 141 115 Inline void … … 147 121 148 122 /* 149 * L 150 [Ìñ 151 * 152 * øp_topðL 153 [Æ·éGgðæª©çñ·éB 154 * ÅÌÄoµÅÍAp_entryÉNULLðn·BÔlÍp_topÌÌGg(ÂÜèæª)Å éB 155 * ñÈ~ÍOñɾ½Ggðp_entryÉn·BÔlÍp_entryÌÌGgÆÈéB 156 * p_entryÌÌGgªp_top¾Á½Æ«ANULLðÔlƵÄAL 157 [ÌI[ð çí·B 158 * p_topÌNULL`FbNâp_entryÌëØÍsÁĢȢBÄoµ¤ÌÓCÅs¤±ÆB 159 * ܽA¾¤ÜÅàÈ¢ªAXbhZ[tÉÍÈè¦È¢Bñ[vÍr¼Í 160 * Äoµ¤ÌÓCÅs¤±ÆB 123 * キューの列挙 124 * 125 * 引数p_topをキューとするエントリを先頭から列挙する。 126 * 最初の呼出しでは、p_entryにNULLを渡す。返値はp_topの次のエントリ(つまり先頭)である。 127 * 次回以降は前回に得たエントリをp_entryに渡す。返値はp_entryの次のエントリとなる。 128 * p_entryの次のエントリがp_topだったとき、NULLを返値として、キューの終端をあらわす。 129 * p_topのNULLチェックやp_entryの妥当性検証は行っていない。呼出し側の責任で行うこと。 130 * また、言うまでもないが、スレッドセーフにはなりえない。列挙ループ中は排他は 131 * 呼出し側の責任で行うこと。 161 132 */ 162 133 Inline QUEUE * … … 176 147 177 148 /* 178 * L 179 [ÌGgÌæoµ 180 * 181 * p_queueÌGgðL 182 [©çíµCíµ½GgðÔ·D 183 * p_queueÉL 184 [wb_ðwèµ½êÉÍCL 185 [ÌæªÌGgð 186 * æèo·±ÆÉÈéDp_queueÉóÌL 187 [ðwèµÄÄÑoµÄÍÈç 188 * È¢D 149 * キューの次エントリの取出し 150 * 151 * p_queueの次エントリをキューから削除し,削除したエントリを返す. 152 * p_queueにキューヘッダを指定した場合には,キューの先頭のエントリを 153 * 取り出すことになる.p_queueに空のキューを指定して呼び出してはなら 154 * ない. 189 155 */ 190 156 Inline QUEUE * … … 201 167 202 168 /* 203 * L 204 [ÌGgÌ|C^ðæ¾ 205 * 206 * p_queue ÌGgðÔ·Dp_queue ÉL 207 [wb_ðwèµ½êÉÍC 208 * L 209 [ÌæªÌGgðæèo·±ÆÉÈéDp_queue ÉóÌL 210 [ð 211 * wèµÄÄÑoµÄÍÈçÈ¢D 169 * キューの次エントリのポインタを取得 170 * 171 * p_queue の次エントリを返す.p_queue にキューヘッダを指定した場合には, 172 * キューの先頭のエントリを取り出すことになる.p_queue に空のキューを 173 * 指定して呼び出してはならない. 212 174 */ 213 175 Inline QUEUE * … … 220 182 221 183 /* 222 * L 223 [ªó©Ç¤©Ì`FbN 224 * 225 * p_queueÉÍL 226 [wb_ðwè·éD 184 * キューが空かどうかのチェック 185 * 186 * p_queueにはキューヘッダを指定する. 227 187 */ 228 188 Inline bool_t -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.