home *** CD-ROM | disk | FTP | other *** search
/ Dream 57 / Amiga_Dream_57.iso / Amiga / Programmation / c / Outils / Edition / ASAPUpd.lha / FileLock.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-12-19  |  5.3 KB  |  140 lines

  1. /*****************************************************************************
  2.  *                                                                           *
  3.  * ASAP - Amiga Software Authoring Platform                                  *
  4.  *                                                                           *
  5.  * Written by Laurie Perrin                                                  *
  6.  *                                                                           *
  7.  * AFileLock wrapper class                                                   *
  8.  *                                                                           *
  9.  *****************************************************************************/
  10.  
  11. #ifndef ASAP_FileLock_H
  12. #define ASAP_FileLock_H
  13.  
  14. #include <New.h>
  15.  
  16. extern "C"
  17. {
  18.  #include <Proto/DOS.h>
  19. }
  20.  
  21. class AFileHandle;
  22.  
  23. class AFileLock : private FileLock
  24. {
  25.  public:
  26. // inline void operator -> () { return (AFileLock *) BADDR(this); }
  27. // inline AFileHandle& void operator * () { return *(AFileLock *) BADDR(this); }
  28. // inline AFileHandle * void operator & () { return (AFileLock *) MKBADDR(this); }
  29.  inline AFileLock * CurrentDir();
  30.  inline AFileLock * DupLock();
  31.  inline void * operator new (size_t, AFileLock *);
  32.  inline LONG ExAll(ExAllData * buffer, long size, long data, ExAllControl * control);
  33.  inline void ExAllEnd(ExAllData * buffer, long size, long data, ExAllControl * control);
  34.  inline LONG ExNext(FileInfoBlock * fileInfoBlock);
  35.  inline LONG Examine(FileInfoBlock * fileInfoBlock);
  36.  inline LONG Info(InfoData * parameterBlock);
  37.  inline static AFileLock * Lock(STRPTR name, long type);
  38.  inline void * operator new(size_t, STRPTR name, long type);
  39.  inline LONG NameFromLock(STRPTR buffer, long len);
  40.  inline AFileHandle * OpenFromLock();
  41.  inline AFileLock * ParentDir();
  42.  inline BOOL SameDevice(AFileLock * lock2);
  43.  inline LONG SameLock(AFileLock * lock2);
  44.  inline AFileLock * SetProgramDir();
  45.  inline void UnLock();
  46.  inline void operator delete(void *lock);
  47. };
  48. //----------------------------------------------------------------------------
  49. AFileLock * AFileLock::CurrentDir ()
  50. {
  51.  return (AFileLock *) ::CurrentDir((BPTR) this);
  52. }
  53. //----------------------------------------------------------------------------
  54. AFileLock * AFileLock::DupLock ()
  55. {
  56.  return (AFileLock *) ::DupLock((BPTR) this);
  57. }
  58. //----------------------------------------------------------------------------
  59. void * AFileLock::operator new (size_t, AFileLock *lock)
  60. {
  61.  return ((AFileLock *) lock)->DupLock(); // ::DupLock((BPTR) lock);
  62. }
  63. //----------------------------------------------------------------------------
  64. LONG AFileLock::ExAll (ExAllData * buffer, long size, long data, ExAllControl * control)
  65. {
  66.  return ::ExAll((BPTR) this, buffer, size, data, control);
  67. }
  68. //----------------------------------------------------------------------------
  69. void AFileLock::ExAllEnd (ExAllData * buffer, long size, long data, ExAllControl * control)
  70. {
  71.  ::ExAllEnd((BPTR) this, buffer, size, data, control);
  72. }
  73. //----------------------------------------------------------------------------
  74. LONG AFileLock::ExNext (FileInfoBlock * fileInfoBlock)
  75. {
  76.  return ::ExNext((BPTR) this, fileInfoBlock);
  77. }
  78. //----------------------------------------------------------------------------
  79. LONG AFileLock::Examine (FileInfoBlock * fileInfoBlock)
  80. {
  81.  return ::Examine((BPTR) this, fileInfoBlock);
  82. }
  83. //----------------------------------------------------------------------------
  84. LONG AFileLock::Info (InfoData * parameterBlock)
  85. {
  86.  return ::Info((BPTR) this, parameterBlock);
  87. }
  88. //----------------------------------------------------------------------------
  89. AFileLock * AFileLock::Lock (STRPTR name, long type)
  90. {
  91.  return (AFileLock *) ::Lock(name, type);
  92. }
  93. //----------------------------------------------------------------------------
  94. void * AFileLock::operator new (size_t, STRPTR name, long type)
  95. {
  96.  return AFileLock::Lock(name, type);
  97. }
  98. //----------------------------------------------------------------------------
  99. LONG AFileLock::NameFromLock (STRPTR buffer, long len)
  100. {
  101.  return ::NameFromLock((BPTR) this, buffer, len);
  102. }
  103. //----------------------------------------------------------------------------
  104. AFileHandle * AFileLock::OpenFromLock ()
  105. {
  106.  return (AFileHandle *) ::OpenFromLock((BPTR) this);
  107. }
  108. //----------------------------------------------------------------------------
  109. AFileLock * AFileLock::ParentDir ()
  110. {
  111.  return (AFileLock *) ::ParentDir((BPTR) this);
  112. }
  113. //----------------------------------------------------------------------------
  114. BOOL AFileLock::SameDevice (AFileLock * lock2)
  115. {
  116.  return ::SameDevice((BPTR) this, (BPTR) lock2);
  117. }
  118. //----------------------------------------------------------------------------
  119. LONG AFileLock::SameLock (AFileLock * lock2)
  120. {
  121.  return ::SameLock((BPTR) this, (BPTR) lock2);
  122. }
  123. //----------------------------------------------------------------------------
  124. AFileLock * AFileLock::SetProgramDir ()
  125. {
  126.  return (AFileLock *) ::SetProgramDir((BPTR) this);
  127. }
  128. //----------------------------------------------------------------------------
  129. void AFileLock::UnLock ()
  130. {
  131.  ::UnLock((BPTR) this);
  132. }
  133. //----------------------------------------------------------------------------
  134. void AFileLock::operator delete (void *lock)
  135. {
  136.  ((AFileLock *) lock)->UnLock();
  137. }
  138.  
  139. #endif
  140.