SEMA.H
[目次 | 型・クラス・構造体 | マクロ]
1|/**************************************************************************
2|* 1. <<< 状態セマフォ (Sema) >>>
3|***************************************************************************/
4|
5|#ifndef __SEMA_H
6|#define __SEMA_H
7|
8|/*----------------------------------------------------------------------
9|[Module Property]
10|name = Sema
11|title = 状態セマフォ
12|category = エラー処理
13|src = sema.c
14|depend =
15|priority =
16|accord =
17|----------------------------------------------------------------------*/
18|
19|#ifndef USES_PRIORITY_HEADER
20|/*[START_OF_PRIORITY_HEADER]*/
21|
22|#define USES_SEMA
23|typedef void* Sema; /* 状態セマフォクラス */
24|typedef void** Sema_Res; /* 資源クラス */
25|
26|/*[END_OF_PRIORITY_HEADER]*/
27|#endif /* USES_PRIORITY_HEADER */
28|
29|
30|/* チェック */
31|#ifdef _CHECKER
32| #define Sema_chg(com,res) (*(res) = &(res), (com))
33| #define Sema_chk(com,res) (( *(res) != &(res) ? Sema_error : 0 ), (com) )
34|#else
35| #define Sema_chg(com,res) com
36| #define Sema_chk(com,res) com
37|#endif
38|
39|/* Sema_chk() の ?: 演算子に対する Sema_error のトリック */
40|#ifdef _DOS16
41| #define Sema_error error()
42|#endif
43|#ifdef _CA732
44| int Sema_error();
45| int Sema_error_func( char* file, int line );
46| #define Sema_error Sema_error_func( __FILE__, __LINE__ )
47| /* このファイルの全ての Sema_error を Sema_error() にすると */
48| /* 何故か macro : mismatch number of parameters エラーが出る */
49|#endif
50|
51|#endif
52|
53|