textfile.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:5k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * textfile.h
  3.  *
  4.  * A text file I/O channel class.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: textfile.h,v $
  30.  * Revision 1.15  1999/03/09 02:59:51  robertj
  31.  * Changed comments to doc++ compatible documentation.
  32.  *
  33.  * Revision 1.14  1999/02/16 08:11:17  robertj
  34.  * MSVC 6.0 compatibility changes.
  35.  *
  36.  * Revision 1.13  1998/09/23 06:21:39  robertj
  37.  * Added open source copyright license.
  38.  *
  39.  * Revision 1.12  1995/07/31 12:15:49  robertj
  40.  * Removed PContainer from PChannel ancestor.
  41.  *
  42.  * Revision 1.11  1995/06/17 11:13:34  robertj
  43.  * Documentation update.
  44.  *
  45.  * Revision 1.10  1995/03/14 12:42:48  robertj
  46.  * Updated documentation to use HTML codes.
  47.  *
  48.  * Revision 1.9  1995/01/14  06:19:42  robertj
  49.  * Documentation
  50.  *
  51.  * Revision 1.8  1994/08/23  11:32:52  robertj
  52.  * Oops
  53.  *
  54.  * Revision 1.7  1994/08/22  00:46:48  robertj
  55.  * Added pragma fro GNU C++ compiler.
  56.  *
  57.  * Revision 1.6  1994/04/20  12:17:44  robertj
  58.  * PFilePath addition
  59.  *
  60.  * Revision 1.5  1994/04/01  14:17:26  robertj
  61.  * Fixed container for text file.
  62.  *
  63.  * Revision 1.4  1994/01/03  04:42:23  robertj
  64.  * Mass changes to common container classes and interactors etc etc etc.
  65.  *
  66.  * Revision 1.3  1993/08/21  01:50:33  robertj
  67.  * Made Clone() function optional, default will assert if called.
  68.  *
  69.  * Revision 1.2  1993/07/14  12:49:16  robertj
  70.  * Fixed RCS keywords.
  71.  *
  72.  */
  73. #define _PTEXTFILE
  74. #ifdef __GNUC__
  75. #pragma interface
  76. #endif
  77. ///////////////////////////////////////////////////////////////////////////////
  78. // Text Files
  79. /** A class representing a a structured file that is portable accross CPU
  80.    architectures. Essentially this will normalise the end of line character
  81.    which differs fromplatform to platform.
  82.  */
  83. class PTextFile : public PFile
  84. {
  85.   PCLASSINFO(PTextFile, PFile);
  86.   public:
  87.   /**@name Construction */
  88.   //@{
  89.     /** Create a text file object but do not open it. It does not initially
  90.        have a valid file name. However, an attempt to open the file using the
  91.        #PFile::Open()# function will generate a unique temporary file.
  92.      */
  93.     PTextFile();
  94.     /** Create a unique temporary file name, and open the file in the specified
  95.        mode and using the specified options. Note that opening a new, unique,
  96.        temporary file name in ReadOnly mode will always fail. This would only
  97.        be usefull in a mode and options that will create the file.
  98.        The #PChannel::IsOpen()# function may be used after object
  99.        construction to determine if the file was successfully opened.
  100.      */
  101.     PTextFile(
  102.       OpenMode mode,          /// Mode in which to open the file.
  103.       int opts = ModeDefault  /// #OpenOptions enum# for open operation.
  104.     );
  105.       
  106.     /** Create a text file object with the specified name and open it in the
  107.        specified mode and with the specified options.
  108.        The #PChannel::IsOpen()# function may be used after object
  109.        construction to determine if the file was successfully opened.
  110.      */
  111.     PTextFile(
  112.       const PFilePath & name,    /// Name of file to open.
  113.       OpenMode mode = ReadWrite, /// Mode in which to open the file.
  114.       int opts = ModeDefault     /// #OpenOptions enum# for open operation.
  115.     );
  116.   //@}
  117.   /**@name Line I/O functions */
  118.   //@{
  119.     /** Read a line from the text file. What constitutes an end of line in the
  120.        file is platform dependent.
  121.        
  122.        Use the #PChannel::GetLastError()# function to determine if there
  123.        was some error other than end of file.
  124.        
  125.        @return
  126.        TRUE if successful, FALSE if at end of file or a read error.
  127.      */
  128.     BOOL ReadLine(
  129.       PString & str  /// String into which line of text is read.
  130.     );
  131.     /** Read a line from the text file. What constitutes an end of line in the
  132.        file is platform dependent.
  133.        
  134.        Use the #PChannel::GetLastError()# function to determine the
  135.        failure mode.
  136.        @return
  137.        TRUE if successful, FALSE if an error occurred.
  138.      */
  139.     BOOL WriteLine(
  140.       const PString & str  /// String to write with end of line terminator.
  141.     );
  142.   //@}
  143. #ifdef DOC_PLUS_PLUS
  144. };
  145. #endif
  146. // Class declaration continued in platform specific header file ///////////////