home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ool.zip / OOL / include / xio.h < prev    next >
C/C++ Source or Header  |  1997-03-09  |  3KB  |  71 lines

  1. #ifndef __OOL_XIO_H__
  2. #define __OOL_XIO_H__
  3.  
  4. /*===========================================================================*/
  5. /* OOL ------------------- the Open Object Library ------------- OS/2 Beta 1 */
  6. /*===========================================================================*/
  7. /*                              class: XIO                                   */
  8. /*                       derived from: XObject                               */
  9. /*                        last update: 9/96                                  */
  10. /*                      programmed by: Stefan von Brauk (sbrauk@gwdg.de)     */
  11. /*===========================================================================*/
  12.  
  13. #include "xobject.h"
  14. #include "xstring.h"
  15. #include "xdate.h"
  16. #include "xtime.h"
  17.  
  18.  
  19. #ifdef OOL_FOR_OS2_X86
  20.    //seek relative positions
  21.    #define XFILE_BEGIN                   0
  22.    #define XFILE_CURRENT                 1
  23.    #define XFILE_END                     2
  24. #endif
  25.  
  26.  
  27. class _export_ XIO: public XObject
  28. {
  29.    protected:
  30.       HFILE handle;
  31.       ULONG pointerPos;
  32.       XIO() { handle = NULLHANDLE; pointerPos = 0;}
  33.       ~XIO() { if(handle) Close();}
  34.    public:
  35.       virtual void Close() { DosClose(handle); handle = NULLHANDLE; }
  36.       BOOL IsOpen() const { return handle!=NULLHANDLE ? TRUE : FALSE; }
  37.       ULONG GetPointerPos( void ) const { return pointerPos; }
  38.       virtual ULONG Read( PVOID buffer, const ULONG sizeofbuffer)
  39.             {
  40.                ULONG r;
  41.                DosRead(handle, buffer, sizeofbuffer, &r);
  42.                return r;
  43.             }
  44.       ULONG Read( char& value ) { return Read( &value, sizeof(char) ); }
  45.       ULONG Read( SHORT& value ) { return Read( &value, sizeof(SHORT) ); }
  46.       ULONG Read( LONG& value ) { return Read( &value, sizeof(LONG) ); }
  47.       ULONG Read( XDate& date ) { return Read( (PVOID) &date.d, sizeof(date.d) ); }
  48.       ULONG Read( XTime& time ) { return Read( (PVOID) &time.t, sizeof(time.t) ); }
  49.       ULONG Read( XString& string, ULONG length)
  50.              {
  51.                ULONG r = Read( (PVOID) string.GetBuffer( (ULONG) length ), length);
  52.                string.ReleaseBuffer(r-1);
  53.                return r;
  54.             }
  55.       ULONG Seek( const LONG pos, const ULONG relativePos = XFILE_BEGIN){ return DosSetFilePtr(handle, pos, relativePos, &pointerPos); }
  56.       virtual ULONG Write( const PVOID buffer, const ULONG sizeofbuffer)
  57.             {
  58.                ULONG r;
  59.                DosWrite(handle, buffer, sizeofbuffer, &r);
  60.                return r;
  61.             }
  62.       ULONG Write( char value ) { return Write( &value, sizeof(char) ); }
  63.       ULONG Write( SHORT value ) { return Write( &value, sizeof(SHORT) ); }
  64.       ULONG Write( LONG value ) { return Write( &value, sizeof(LONG) ); }
  65.       ULONG Write( XDate& date ) { return Write( &date.d, sizeof(date.d) ); }
  66.       ULONG Write( XTime& time ) { return Write( &time.t, sizeof(time.t) ); }
  67.       ULONG Write( XString& string ) { return Write( (const PVOID) (char*) string, string.GetLength()+1); }
  68. };
  69.  
  70. #endif
  71.