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|