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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * sfile.cxx
  3.  *
  4.  * Structured file I/O channel.
  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: sfile.cxx,v $
  30.  * Revision 1.2  1999/03/09 08:18:24  robertj
  31.  * Adjustment found during documentation frenzy.
  32.  *
  33.  * Revision 1.1  1998/09/24 07:25:49  robertj
  34.  * Initial revision
  35.  *
  36.  */
  37. #ifdef __GNUC__
  38. #pragma implementation "sfile.h"
  39. #endif
  40. #include <ptlib.h>
  41. ///////////////////////////////////////////////////////////////////////////////
  42. // PStructuredFile
  43. PStructuredFile::PStructuredFile()
  44. {
  45.   structureSize = 0;
  46.   structure = NULL;
  47.   numElements = 0;
  48. }
  49. PStructuredFile::PStructuredFile(OpenMode mode, int opts)
  50.   : PFile(mode, opts)
  51. {
  52.   structureSize = 0;
  53.   structure = NULL;
  54.   numElements = 0;
  55. }
  56. PStructuredFile::PStructuredFile(const PFilePath & name, OpenMode mode, int opts)
  57.   : PFile(name, mode, opts)
  58. {
  59.   structureSize = 0;
  60.   structure = NULL;
  61.   numElements = 0;
  62. }
  63. BOOL PStructuredFile::Read(void * buffer)
  64. {
  65.   PAssert(structureSize > 0, PInvalidParameter);
  66.   if (!PFile::Read(buffer, structureSize))
  67.     return FALSE;
  68.   if (GetLastReadCount() != structureSize)
  69.     return FALSE;
  70.   // Translate all structure elements according to endian-ness.
  71.   return TRUE;
  72. }
  73.       
  74. BOOL PStructuredFile::Write(const void * buffer)
  75. {
  76.   PAssert(structureSize > 0, PInvalidParameter);
  77.   // Translate all structure elements according to endian-ness.
  78.   return PFile::Write(buffer, structureSize);
  79. }
  80. void PStructuredFile::SetStructure(Element * struc, PINDEX numElem)
  81. {
  82.   structure = struc;
  83.   numElements = numElem;
  84. }
  85. // End Of File ///////////////////////////////////////////////////////////////