home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ool_main.zip / ool / include / xio.h < prev    next >
C/C++ Source or Header  |  1998-01-14  |  5KB  |  119 lines

  1. #ifndef __OOL_XIO_H__
  2. #define __OOL_XIO_H__
  3.  
  4. /*===========================================================================*/
  5. /* OOL ------------------- the Open Object Library ------------------- r 1.0 */
  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. #include "xfilefi.h"
  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. #ifdef OOL_FOR_OS2_X86
  28.    //modeForOpen, can be or-ed
  29.    #define XFILE_FAIL_IF_NEW             OPEN_ACTION_FAIL_IF_NEW
  30.    #define XFILE_CREATE_IF_NEW           OPEN_ACTION_CREATE_IF_NEW
  31.    #define XFILE_REPLACE_EXISTING        OPEN_ACTION_REPLACE_IF_EXISTS
  32.    #define XFILE_OPEN_EXISTING           OPEN_ACTION_OPEN_IF_EXISTS
  33.    #define XFILE_FAIL_EXISTING           OPEN_ACTION_FAIL_IF_EXISTS
  34.  
  35.    //modeForAccess, can be or-ed
  36.    #define XFILE_SHARE_DENYREAD          OPEN_SHARE_DENYREAD
  37.    #define XFILE_SHARE_DENYWRITE         OPEN_SHARE_DENYWRITE
  38.    #define XFILE_SHARE_DENYREADWRITE     OPEN_SHARE_DENYREADWRITE
  39.    #define XFILE_SHARE_DENYNONE          OPEN_SHARE_DENYNONE
  40.    #define XFILE_READONLY                OPEN_ACCESS_READONLY
  41.    #define XFILE_WRITEONLY               OPEN_ACCESS_WRITEONLY
  42.    #define XFILE_READWRITE               OPEN_ACCESS_READWRITE
  43. #endif
  44.  
  45. #ifdef OOL_FOR_WIN32_X86
  46.    //modeForOpen, can be or-ed
  47.    #define XFILE_FAIL_IF_NEW             OPEN_EXISTING
  48.    #define XFILE_CREATE_IF_NEW           CREATE_NEW
  49.    #define XFILE_REPLACE_EXISTING        TRUNCATE_EXISTING
  50.    #define XFILE_OPEN_EXISTING           OPEN_EXISTING
  51.    #define XFILE_FAIL_EXISTING           0
  52.  
  53.    //modeForAccess, can be or-ed
  54.    #define XFILE_SHARE_DENYREAD          FILE_SHARE_READ
  55.    #define XFILE_SHARE_DENYWRITE         FILE_SHARE_WRITE
  56.    #define XFILE_SHARE_DENYREADWRITE     FILE_SHARE_READ | FILE_SHARE_WRITE
  57.    #define XFILE_SHARE_DENYNONE          0
  58.    #define XFILE_READONLY                GENERIC_READ
  59.    #define XFILE_WRITEONLY               GENERIC_WRITE
  60.    #define XFILE_READWRITE               GENERIC_READ|GENERIC_WRITE
  61. #endif
  62.  
  63.  
  64. class _export_ XIO: public XObject
  65. {
  66.    protected:
  67.       HFILE handle;
  68.       ULONG pointerPos;
  69.       XIO() { handle = 0; pointerPos = 0; isOpen=FALSE; }
  70.       ~XIO() { Close();}
  71.       BOOL isOpen;
  72.    public:
  73.       virtual void Close()
  74.          {
  75.             DosClose(handle);
  76.             if( isOpen )
  77.             {
  78.                isOpen = FALSE;
  79.             }
  80.          }
  81.       BOOL IsOpen() const { return isOpen; }
  82.       ULONG GetPointerPos( void ) const { return pointerPos; }
  83.       virtual ULONG _Read( void * buffer, const ULONG sizeofbuffer)
  84.             {
  85.                ULONG r;
  86.                DosRead(handle, (PVOID) buffer, sizeofbuffer, &r);
  87.                return r;
  88.             }
  89.       ULONG Read( void * buffer, const ULONG sizeofbuffer) { return _Read(buffer, sizeofbuffer); }
  90.       ULONG Read( char& value ) { return _Read( &value, sizeof(char) ); }
  91.       ULONG Read( SHORT& value ) { return _Read( &value, sizeof(SHORT) ); }
  92.       ULONG Read( LONG& value ) { return _Read( &value, sizeof(LONG) ); }
  93.       ULONG Read( XDate& date ) { return _Read( &date.d, sizeof(date.d) ); }
  94.       ULONG Read( XTime& time ) { return _Read( &time.t, sizeof(time.t) ); }
  95.       ULONG Read( XString& string, const ULONG length)
  96.             {
  97.                ULONG r = _Read( string.GetBuffer( (ULONG) length + 1), length);
  98.                string.ReleaseBuffer(r);
  99.                return r;
  100.             }
  101.       ULONG Seek( const LONG pos, const ULONG relativePos = XFILE_BEGIN){ return DosSetFilePtr(handle, pos, relativePos, &pointerPos); }
  102.       virtual ULONG _Write( const void * buffer, const ULONG sizeofbuffer) const
  103.             {
  104.                ULONG r;
  105.                DosWrite(handle, (PVOID) buffer, sizeofbuffer, &r);
  106.                return r;
  107.             }
  108.       ULONG Write( const void * buffer, const ULONG sizeofbuffer) const { return _Write(buffer, sizeofbuffer); }
  109.       ULONG Write( const char value ) const { return _Write( &value, sizeof(char) ); }
  110.       ULONG Write( const SHORT value ) const { return _Write( &value, sizeof(SHORT) ); }
  111.       ULONG Write( const LONG value ) const { return _Write( &value, sizeof(LONG) ); }
  112.       ULONG Write( const XDate& date ) const { return _Write( &date.d, sizeof(date.d) ); }
  113.       ULONG Write( const XTime& time ) const { return _Write( &time.t, sizeof(time.t) ); }
  114.       ULONG Write( const char * value ) const { return _Write( value, strlen(value) ); }
  115.       ULONG Write( const XString& string ) const { return _Write( (const void*) (char*) string, string.GetLength()); }
  116. };
  117.  
  118. #endif
  119.