home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / midas / mfile.pas < prev    next >
Pascal/Delphi Source File  |  1994-08-06  |  8KB  |  248 lines

  1. {*      MFILE.PAS
  2.  *
  3.  * High-level file I/O for MIDAS Sound System
  4.  *
  5.  * Copyright 1994 Petteri Kangaslampi and Jarno Paananen
  6.  *
  7.  * This file is part of the MIDAS Sound System, and may only be
  8.  * used, modified and distributed under the terms of the MIDAS
  9.  * Sound System license, LICENSE.TXT. By continuing to use,
  10.  * modify or distribute this file you indicate that you have
  11.  * read the license and understand and accept it fully.
  12. *}
  13.  
  14.  
  15. unit    mFile;
  16.  
  17.  
  18.  
  19. interface
  20.  
  21.  
  22. {****************************************************************************\
  23. *       struct fileFile
  24. *       ---------------
  25. * Description:  File state structure
  26. \****************************************************************************}
  27.  
  28. type
  29.     fileFile = Record
  30.         rf : pointer;                   { raw file handle }
  31.     end;
  32.  
  33.  
  34.  
  35. {****************************************************************************\
  36. *       typedef fileHandle
  37. *       ------------------
  38. * Description: High-level file I/O file handle
  39. \****************************************************************************}
  40.  
  41. type
  42.     fileHandle = ^fileFile;
  43.     PfileHandle = ^fileHandle;
  44.  
  45.  
  46.  
  47. {****************************************************************************\
  48. *       enum fileOpenMode
  49. *       -----------------
  50. * Description:  File opening mode. Used by fileOpen()
  51. \****************************************************************************}
  52.  
  53. const
  54.     fileOpenRead = 1;                   { open file for reading }
  55.     fileOpenWrite = 2;                  { open file for writing }
  56.     fileOpenReadWrite = 3;              { open file for both reading and
  57.                                           writing }
  58.  
  59.  
  60. {****************************************************************************\
  61. *       enum fileSeekMode
  62. *       -----------------
  63. * Description:  File seeking mode. Used by fileSeek()
  64. \****************************************************************************}
  65.  
  66.     fileSeekAbsolute = 1;               { seek to an absolute position from
  67.                                           the beginning of the file }
  68.     fileSeekRelative = 2;               { seek to a position relative to
  69.                                           current position }
  70.     fileSeekEnd = 3;                    { seek relative to the end of file }
  71.  
  72.  
  73.  
  74. type
  75.     Pchar = ^char;
  76.     Plongint = ^longint;
  77.  
  78.  
  79. {****************************************************************************\
  80. *
  81. * Function:     fileOpen(fileName : Pchar; openMode : integer;
  82. *                   fileh : PfileHandle) : integer;
  83. *
  84. * Description:  Opens a file for reading or writing
  85. *
  86. * Input:        fileName : Pchar        pointer to file name ASCIIZ string
  87. *               openMode : integer      file opening mode, see enum
  88. *                                       fileOpenMode
  89. *               fileh : PfileHandle     pointer to file handle
  90. *
  91. * Returns:      MIDAS error code.
  92. *               File handle is stored in fileh^.
  93. *
  94. \****************************************************************************}
  95.  
  96. function fileOpen(fileName : Pchar; openMode : integer; fileh : PfileHandle)
  97.     : integer;
  98.  
  99.  
  100.  
  101. {****************************************************************************\
  102. *
  103. * Function:     fileClose(fileh : fileHandle) : integer;
  104. *
  105. * Description:  Closes a file opened with fileOpen().
  106. *
  107. * Input:        fileh : fileHandle      handle of an open file
  108. *
  109. * Returns:      MIDAS error code
  110. *
  111. \****************************************************************************}
  112.  
  113. function fileClose(fileh : fileHandle) : integer;
  114.  
  115.  
  116.  
  117.  
  118. {****************************************************************************\
  119. *
  120. * Function:     fileGetSize(fileh : fileHandle; fileSize : Plongint)
  121. *                   : integer;
  122. *
  123. * Description:  Get the size of a file
  124. *
  125. * Input:        fileh : fileHandle      handle of an open file
  126. *               fileSize : Plongint     pointer to file size
  127. *
  128. * Returns:      MIDAS error code.
  129. *               File size is stored in fileSize^.
  130. *
  131. \****************************************************************************}
  132.  
  133. function fileGetSize(fileh : fileHandle; fileSize : Plongint) : integer;
  134.  
  135.  
  136.  
  137.  
  138. {****************************************************************************\
  139. *
  140. * Function:     fileRead(fileh : fileHandle; buffer : pointer;
  141. *                   numBytes : longint) : integer;
  142. *
  143. * Description:  Reads binary data from a file
  144. *
  145. * Input:        fileh : fileHandle      file handle
  146. *               buffer : pointer        reading buffer
  147. *               numBytes : longint      number of bytes to read
  148. *
  149. * Returns:      MIDAS error code.
  150. *               Read data is stored in buffer^, which must be large enough
  151. *               for it.
  152. *
  153. \****************************************************************************}
  154.  
  155. function fileRead(fileh : fileHandle; buffer : pointer; numBytes : longint)
  156.     : integer;
  157.  
  158.  
  159.  
  160.  
  161. {****************************************************************************\
  162. *
  163. * Function:     fileWrite(fileh : fileHandle; buffer : pointer;
  164. *               numBytes : longint) : integer;
  165. *
  166. * Description:  Writes binary data to a file
  167. *
  168. * Input:        fileh : fileHandle      file handle
  169. *               buffer : pointer        pointer to data to be written
  170. *               numBytes : longint      number of bytes to write
  171. *
  172. * Returns:      MIDAS error code
  173. *
  174. \****************************************************************************}
  175.  
  176. function fileWrite(fileh : fileHandle; buffer : pointer; numBytes : longint)
  177.     : integer;
  178.  
  179.  
  180.  
  181.  
  182. {****************************************************************************\
  183. *
  184. * Function:     fileSeek(fileh : fileHandle; newPosition : longint;
  185. *                   seekMode : integer) : integer;
  186. *
  187. * Description:  Seeks to a new position in file. Subsequent reads and writes
  188. *               go to the new position.
  189. *
  190. * Input:        fileh : fileHandle      file handle
  191. *               newPosition : longint   new file position
  192. *               seekMode : integer      file seek mode, see enum fileSeekMode
  193. *
  194. * Returns:      MIDAS error code
  195. *
  196. \****************************************************************************}
  197.  
  198. function fileSeek(fileh : fileHandle; newPosition : longint;
  199.     seekMode : integer) : integer;
  200.  
  201.  
  202.  
  203.  
  204. {****************************************************************************\
  205. *
  206. * Function:     int fileGetPosition(fileh : fileHandle; position : Plongint)
  207. *                   : integer;
  208. *
  209. * Description:  Reads the current position in a file
  210. *
  211. * Input:        fileh : fileHandle      file handle
  212. *               position : Plongint     pointer to file position
  213. *
  214. * Returns:      MIDAS error code.
  215. *               Current file position is stored in position^.
  216. *
  217. \****************************************************************************}
  218.  
  219. function fileGetPosition(fileh : fileHandle; position : Plongint) : integer;
  220.  
  221.  
  222.  
  223.  
  224. implementation
  225.  
  226.  
  227. uses    Errors, mMem, rawFile;
  228.  
  229.  
  230.  
  231. function fileOpen(fileName : Pchar; openMode : integer; fileh : PfileHandle)
  232.     : integer; external;
  233. function fileClose(fileh : fileHandle) : integer; external;
  234. function fileGetSize(fileh : fileHandle; fileSize : Plongint) : integer;
  235.     external;
  236. function fileRead(fileh : fileHandle; buffer : pointer; numBytes : longint)
  237.     : integer; external;
  238. function fileWrite(fileh : fileHandle; buffer : pointer; numBytes : longint)
  239.     : integer; external;
  240. function fileSeek(fileh : fileHandle; newPosition : longint;
  241.     seekMode : integer) : integer; external;
  242. function fileGetPosition(fileh : fileHandle; position : Plongint) : integer;
  243.     external;
  244. {$L FILE.OBJ}
  245.  
  246.  
  247. END.
  248.