readTextFile.h
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:10k
源码类别:

DVD

开发平台:

Others

  1. /**************************************************************
  2.  *  readTextFile.h
  3.  **************************************************************
  4.  *  Description:
  5.  *  ============
  6.  *  Functions for reading text file using caching. 
  7.  **************************************************************
  8.  *
  9.  *  Hagayb 14.11.03
  10.  **************************************************************/
  11. #include "Config.h" // Global Configuration - do not remove!
  12. #ifdef USE_AUX_SUBTITLES
  13. #ifndef __READTEXTFILE_H_
  14. #define __READTEXTFILE_H_
  15. #define TF_SEEK_SET 0
  16. #define TF_SEEK_CUR 1
  17. #define TF_SEEK_END 2
  18. #define TF_BUFFER_SIZE 256
  19. #define TF_BUFFER_SIZE_HALF 128
  20. #include "IncludeSysDefs.h"
  21. typedef struct textFileTag {
  22. DWORD dwStartAddress;
  23. DWORD dwFileSize;
  24. DWORD dwCurrentDiscOffset; // offest in disc of the data currently stored in buffer
  25. char *caBuffer;
  26. char *pcCurrentBufferPosition; // points at the current position in the buffer,
  27. // or NULL after reading past the buffers end.
  28. WORD wCurrentBufferSize;
  29. } textFile, *textFilePtr;
  30. /////////////////////////////////////////////////////////////////////////////////////////////
  31. // Function name : textFileOpen
  32. // Purpose : Open a text file for reading with buffering
  33. // Input Parameters : dwStartAddress - Address of the file on disc
  34. //   dwFileSize  - Size if the file
  35. // Return type : Handle to textFile on success, NULL on failure.
  36. // Description : The function allocates a textFile struct and sets up a buffer for reading
  37. /////////////////////////////////////////////////////////////////////////////////////////////
  38. textFilePtr textFileOpen(DWORD dwStartAddress, DWORD dwFileSize);
  39. /////////////////////////////////////////////////////////////////////////////////////////////
  40. // Function name : textFileClose
  41. // Purpose : Closes a text file
  42. // Input Parameters : tfpFile - Handle to the file
  43. // Return type : void.
  44. // Description : The function deallocates the buffer and textFile struct for the file
  45. /////////////////////////////////////////////////////////////////////////////////////////////
  46. void textFileClose(textFilePtr tfpFile);
  47. /////////////////////////////////////////////////////////////////////////////////////////////
  48. // Function name : textFileSeek
  49. // Purpose : Seeks to a position in the file
  50. // Input Parameters : tfpFile - Handle to the file
  51. //   dwOffset - Offset in bytes, relative to the location specifed by bOrigin
  52. //   bOrigin - Specifies the origin of the seek. 
  53. //     Can have the following values:
  54. //   * TF_SEEK_SET - seek is relative to the file's beginning.
  55. //   * TF_SEEK_CUR - seek is relative to the current position
  56. //   * TF_SEEK_END - seek is relative to the file's end.
  57. // Return type : TRUE on success. FALSE on failure, or requested position isn't within the file
  58. // Description : The function checks is the requested position already exist in the buffer.
  59. //   If not, it fills the buffer from that point. In both cases, it updates
  60. //   the internal pointer pcCurrentBufferPosition to the requested position
  61. /////////////////////////////////////////////////////////////////////////////////////////////
  62. BOOL textFileSeek(textFilePtr tfpFile, long dwOffset, BYTE bOrigin);
  63. /////////////////////////////////////////////////////////////////////////////////////////////
  64. // Function name : textFileEOF
  65. // Purpose : Check if end of file was reached
  66. // Input Parameters : tfpFile - Handle to the file
  67. // Return type : TRUE if end of file was reached, FALSE otherwise
  68. // Description : Check if pcCurrentBufferPosition is NULL, and dwCurrentDiscOffset + 
  69. //   wCurrentBufferSize points outside of the file
  70. /////////////////////////////////////////////////////////////////////////////////////////////
  71. BOOL textFileEOF(textFilePtr tfpFile);
  72. /////////////////////////////////////////////////////////////////////////////////////////////
  73. // Function name : textFileReadChar
  74. // Purpose : Reads a character (single byte) from the file.
  75. // Input Parameters : tfpFile - Handle to the file
  76. //   wReserveLast - 
  77. // Output Parameters: c - The character that was read
  78. // Return type : TRUE if successful, FALSE if failed, or already on end of file
  79. // Description : Fills the buffer if necessary, and reads a character.
  80. /////////////////////////////////////////////////////////////////////////////////////////////
  81. BOOL textFileReadChar(textFilePtr tfpFile,WORD wReserveLast, char *c );
  82. /////////////////////////////////////////////////////////////////////////////////////////////
  83. // Function name : textFileGetPosition
  84. // Purpose : Get the current poision in the file.
  85. // Input Parameters : tfpFile - Handle to the file
  86. // Return type : DWORD specifying the position. This value can be used in textFileSeek
  87. //   together with TF_SEEK_SET to reach this position again.
  88. // Description : calculates the offset on disc of the current character in the buffer.
  89. /////////////////////////////////////////////////////////////////////////////////////////////
  90. DWORD textFileGetPosition(textFilePtr tfpFile);
  91. /////////////////////////////////////////////////////////////////////////////////////////////
  92. // Function name : textFileFindString
  93. // Purpose : Searches for the specified string from het current position, in the
  94. //   specified number of bytes.
  95. // Input Parameters : tfpFile - Handle to the file
  96. //   szStr - String (null terminated, single byte) to look for.
  97. //   dwRegionSize - a limit to the number of bytes in the file the search 
  98. // will cover. Specify 0 for search until end of file.
  99. // Return type : TRUE is string was found, else otherwise.
  100. //   The current position in the file will be the first character following the string
  101. // Description : 
  102. /////////////////////////////////////////////////////////////////////////////////////////////
  103. BOOL textFileFindString(textFilePtr tfpFile, const char *szStr, DWORD dwRegionSize);
  104. /////////////////////////////////////////////////////////////////////////////////////////////
  105. // Function name : textFileFindNumber
  106. // Purpose : Finds the next digit in the file, if exists in the next specified number of bytes.
  107. // Input Parameters : tfpFile - Handle to the file
  108. //   dwRegionSize - a limit to the number of bytes in the file the search 
  109. // will cover. Specify 0 for search until end of file.
  110. // Return type : TRUE is a digit was found within the region, else otherwise.
  111. //   The current position in the file will be the digit.
  112. // Description : The function looks of the next digit, starting from the current position
  113. //   for dwRegionSize bytes. If there was already a digit in the current position,
  114. //   it does nothing.
  115. /////////////////////////////////////////////////////////////////////////////////////////////
  116. BOOL textFileFindNumber(textFilePtr tfpFile,DWORD dwRegionSize);
  117. /////////////////////////////////////////////////////////////////////////////////////////////
  118. // Function name : textFileReadNumber
  119. // Purpose : Reads a number from the current position in the file.
  120. // Input Parameters : tfpFile - Handle to the file
  121. // Output Parameters: uiNumber - The number that was read
  122. // Return type : TRUE if successful. FALSE if the was no number in the current position,
  123. //   if already on EOF, or on error.
  124. // Description : The function checks if there's a digit in the current position. If there
  125. //   is, it reads until (not including) the 1st non digit character and 
  126. //   converts the digit sequence to a number.
  127. /////////////////////////////////////////////////////////////////////////////////////////////
  128. BOOL textFileReadNumber(textFilePtr tfpFile, DWORD *uiNumber);
  129. /////////////////////////////////////////////////////////////////////////////////////////////
  130. // Function name : textFileSkipLine
  131. // Purpose : Find the beginning of the next line
  132. // Input Parameters : tfpFile - Handle to the file
  133. // Return type : TRUE if successful. FALSE if EOF encountered before or right after 'n',
  134. //   or on error.
  135. // Description : The function searches for the next 'n'  and sets the current position
  136. //   right after it.
  137. /////////////////////////////////////////////////////////////////////////////////////////////
  138. BOOL textFileSkipLine(textFilePtr tfpFile);
  139. /////////////////////////////////////////////////////////////////////////////////////////////
  140. // Function name : textFileSkipLine
  141. // Purpose : Find the beginning of the next line
  142. // Input Parameters : tfpFile - Handle to the file
  143. // Return type : TRUE if successful. FALSE if EOF encountered before 'n',
  144. //   or on error.
  145. // Description : The function searches for the next 'n'  and sets the current position
  146. //   right after it.
  147. /////////////////////////////////////////////////////////////////////////////////////////////
  148. BOOL textFileSkipLine(textFilePtr tfpFile);
  149. /////////////////////////////////////////////////////////////////////////////////////////////
  150. // Function name : textFileIsCurrentChar
  151. // Purpose : Asserts that the current character in the file is the specified char
  152. // Input Parameters : tfpFile - Handle to the file
  153. //   c - character to be tested.
  154. // Return type : TRUE if character is correct. FALSE otherwise, and on error
  155. // Description : The function reads a character from the file and compares it to the
  156. //   specified character. This function should be used to check correctness
  157. //   of file format.
  158. /////////////////////////////////////////////////////////////////////////////////////////////
  159. BOOL textFileIsCurrentChar(textFilePtr tfpFile,char c);
  160.   
  161. BOOL textFileIsCurrentChar2(textFilePtr tfpFile,char c);
  162.   
  163. #endif // __READTEXTFILE_H_
  164. #endif // USE_OSD_DEBUG