home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 28 / amigaformatcd28.iso / -seriously_amiga- / programming / c / asap / signalsemaphore.h < prev    next >
C/C++ Source or Header  |  1998-04-23  |  3KB  |  92 lines

  1. /*****************************************************************************
  2.  *                                                                           *
  3.  * ASAP - Amiga Software Authoring Platform                                  *
  4.  *                                                                           *
  5.  * Written by Laurie Perrin                                                  *
  6.  *                                                                           *
  7.  * ASignalSemaphore wrapper class                                            *
  8.  *                                                                           *
  9.  *****************************************************************************/
  10.  
  11. #ifndef ASAP_ASignalSemaphore_H
  12. #define ASAP_ASignalSemaphore_H
  13.  
  14. extern "C"
  15. {
  16.  #include <EXEC/Semaphores.h>
  17.  #include <Proto/EXEC.h>
  18. }
  19.  
  20. class ASignalSemaphore : public SignalSemaphore
  21. {
  22.  public:
  23.  inline void AddSemaphore();
  24.  inline ULONG AttemptSemaphore();
  25.  inline ULONG AttemptSemaphoreShared();
  26.  inline static ASignalSemaphore * FindSemaphore(UBYTE * sigSem);
  27.  inline void InitSemaphore();
  28.  inline void ObtainSemaphore();
  29.  inline void ObtainSemaphoreShared();
  30.  inline ULONG Procure(SemaphoreMessage * bidMsg);
  31.  inline void ReleaseSemaphore();
  32.  inline void RemSemaphore();
  33.  inline void Vacate(SemaphoreMessage * bidMsg);
  34. };
  35. //----------------------------------------------------------------------------
  36. void ASignalSemaphore::AddSemaphore ()
  37. {
  38.  ::AddSemaphore(this);
  39. }
  40. //----------------------------------------------------------------------------
  41. ULONG ASignalSemaphore::AttemptSemaphore ()
  42. {
  43.  return ::AttemptSemaphore(this);
  44. }
  45. //----------------------------------------------------------------------------
  46. ULONG ASignalSemaphore::AttemptSemaphoreShared ()
  47. {
  48.  return ::AttemptSemaphoreShared(this);
  49. }
  50. //----------------------------------------------------------------------------
  51. ASignalSemaphore * ASignalSemaphore::FindSemaphore (UBYTE * sigSem)
  52. {
  53.  return (ASignalSemaphore *) ::FindSemaphore(sigSem);
  54. }
  55. //----------------------------------------------------------------------------
  56. void ASignalSemaphore::InitSemaphore ()
  57. {
  58.  ::InitSemaphore(this);
  59. }
  60. //----------------------------------------------------------------------------
  61. void ASignalSemaphore::ObtainSemaphore ()
  62. {
  63.  ::ObtainSemaphore(this);
  64. }
  65. //----------------------------------------------------------------------------
  66. void ASignalSemaphore::ObtainSemaphoreShared ()
  67. {
  68.  ::ObtainSemaphoreShared(this);
  69. }
  70. //----------------------------------------------------------------------------
  71. ULONG ASignalSemaphore::Procure (SemaphoreMessage * bidMsg)
  72. {
  73.  return ::Procure(this, bidMsg);
  74. }
  75. //----------------------------------------------------------------------------
  76. void ASignalSemaphore::ReleaseSemaphore ()
  77. {
  78.  ::ReleaseSemaphore(this);
  79. }
  80. //----------------------------------------------------------------------------
  81. void ASignalSemaphore::RemSemaphore ()
  82. {
  83.  ::RemSemaphore(this);
  84. }
  85. //----------------------------------------------------------------------------
  86. void ASignalSemaphore::Vacate (SemaphoreMessage * bidMsg)
  87. {
  88.  ::Vacate(this, bidMsg);
  89. }
  90.  
  91. #endif
  92.