232 lines
6.5 KiB
Plaintext
232 lines
6.5 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////
|
|
// FILE: fstream/fstream.h (fstream support)
|
|
//
|
|
// =========================================================================
|
|
//
|
|
// Open Watcom Project
|
|
//
|
|
// Copyright (c) 2002-2010 Open Watcom Contributors. All Rights Reserved.
|
|
// Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
|
//
|
|
// This file is automatically generated. Do not edit directly.
|
|
//
|
|
// =========================================================================
|
|
//
|
|
// Description: This header is part of the C++ standard library. It
|
|
// defines the necessary classes for file stream support.
|
|
///////////////////////////////////////////////////////////////////////////
|
|
#ifndef _FSTREAM_INCLUDED
|
|
#define _FSTREAM_INCLUDED
|
|
|
|
#ifndef _ENABLE_AUTODEPEND
|
|
#pragma read_only_file;
|
|
#endif
|
|
|
|
#ifndef __cplusplus
|
|
#error This header file requires C++
|
|
#endif
|
|
|
|
#ifndef _COMDEF_H_INCLUDED
|
|
#include <_comdef.h>
|
|
#endif
|
|
|
|
#ifndef _IOSTREAM_INCLUDED
|
|
#include <iostream>
|
|
#endif
|
|
|
|
// POSIX file handle:
|
|
typedef int filedesc;
|
|
|
|
namespace std {
|
|
|
|
// **************************** FILEBUF ************************************
|
|
|
|
#ifdef _M_IX86
|
|
#pragma pack( __push, 1 )
|
|
#else
|
|
#pragma pack( __push, 8 )
|
|
#endif
|
|
class _WPRTLINK filebuf : public streambuf {
|
|
public:
|
|
static int const openprot; // default file protection
|
|
enum sh_mode { // sharing mode
|
|
sh_compat = 0x0000, // - compatibility mode
|
|
sh_read = 0x1000, // - allow others to read
|
|
sh_write = 0x2000, // - allow others to write
|
|
sh_none = 0x4000 // - do not allow others to read or write
|
|
};
|
|
typedef int shmode;
|
|
|
|
filebuf();
|
|
filebuf( filedesc __fd );
|
|
filebuf( filedesc __fd, char *__buf, int __len );
|
|
~filebuf();
|
|
|
|
int is_open() const;
|
|
filedesc fd() const;
|
|
filebuf *attach( filedesc __fd );
|
|
filebuf *open( char const *__name,
|
|
ios::openmode __mode,
|
|
int __prot = openprot );
|
|
filebuf *close();
|
|
|
|
virtual int pbackfail( int __c );
|
|
virtual int overflow( int = EOF );
|
|
virtual int underflow();
|
|
virtual streambuf *setbuf( char *__buf, int __len );
|
|
virtual streampos seekoff( streamoff __offset,
|
|
ios::seekdir __direction,
|
|
ios::openmode __ignored );
|
|
virtual int sync();
|
|
|
|
private:
|
|
filedesc __file_handle;
|
|
ios::openmode __file_mode;
|
|
char __unbuffered_get_area[ DEFAULT_PUTBACK_SIZE+1 ];
|
|
char __attached : 1;
|
|
int : 0;
|
|
};
|
|
#pragma pack( __pop )
|
|
|
|
inline filedesc filebuf::fd() const {
|
|
return( __file_handle );
|
|
}
|
|
|
|
inline int filebuf::is_open() const {
|
|
return( __file_handle != EOF );
|
|
}
|
|
|
|
// **************************** FSTREAMBASE ********************************
|
|
|
|
#ifdef _M_IX86
|
|
#pragma pack( __push, 1 )
|
|
#else
|
|
#pragma pack( __push, 8 )
|
|
#endif
|
|
class _WPRTLINK fstreambase : virtual public ios {
|
|
public:
|
|
int is_open() const;
|
|
filedesc fd() const;
|
|
void attach( filedesc __fd );
|
|
void open( char const *__name,
|
|
ios::openmode __mode,
|
|
int __prot = filebuf::openprot );
|
|
void close();
|
|
filebuf *rdbuf() const;
|
|
void setbuf( char *__buf, int __len );
|
|
|
|
protected:
|
|
fstreambase();
|
|
fstreambase( char const *__name,
|
|
ios::openmode __mode,
|
|
int __prot = filebuf::openprot );
|
|
fstreambase( filedesc __fd );
|
|
fstreambase( filedesc __fd, char *__buf, int __len );
|
|
~fstreambase();
|
|
|
|
private:
|
|
filebuf __flbuf;
|
|
};
|
|
#pragma pack( __pop )
|
|
|
|
inline filedesc fstreambase::fd() const {
|
|
__lock_it( __i_lock );
|
|
filebuf *__fb = rdbuf();
|
|
return( (__fb == NULL) ? EOF : __fb->fd() );
|
|
}
|
|
|
|
inline int fstreambase::is_open() const {
|
|
__lock_it( __i_lock );
|
|
filebuf *__fb = rdbuf();
|
|
return( (__fb == NULL) ? 0 : __fb->is_open() );
|
|
}
|
|
|
|
inline filebuf *fstreambase::rdbuf() const {
|
|
return( (filebuf *) ios::rdbuf() );
|
|
}
|
|
|
|
// **************************** IFSTREAM ***********************************
|
|
|
|
#ifdef _M_IX86
|
|
#pragma pack( __push, 1 )
|
|
#else
|
|
#pragma pack( __push, 8 )
|
|
#endif
|
|
class _WPRTLINK ifstream : public fstreambase, public istream {
|
|
public:
|
|
ifstream();
|
|
ifstream( char const *__name,
|
|
ios::openmode __mode = ios::in,
|
|
int __prot = filebuf::openprot );
|
|
ifstream( filedesc __fd );
|
|
ifstream( filedesc __fd, char *__buf, int __len );
|
|
~ifstream();
|
|
|
|
void open( char const *__name,
|
|
ios::openmode __mode = ios::in,
|
|
int __prot = filebuf::openprot );
|
|
};
|
|
#pragma pack( __pop )
|
|
|
|
inline void ifstream::open( char const *__n, ios::openmode __m, int __p ) {
|
|
fstreambase::open( __n, __m, __p );
|
|
}
|
|
|
|
// **************************** OFSTREAM ***********************************
|
|
|
|
#ifdef _M_IX86
|
|
#pragma pack( __push, 1 )
|
|
#else
|
|
#pragma pack( __push, 8 )
|
|
#endif
|
|
class _WPRTLINK ofstream : public fstreambase, public ostream {
|
|
public:
|
|
ofstream();
|
|
ofstream( char const *__name,
|
|
ios::openmode __mode = ios::out,
|
|
int __prot = filebuf::openprot );
|
|
ofstream( filedesc __fd );
|
|
ofstream( filedesc __fd, char *__buf, int __len );
|
|
~ofstream();
|
|
|
|
void open( char const *__name,
|
|
ios::openmode __mode = ios::out,
|
|
int __prot = filebuf::openprot );
|
|
};
|
|
#pragma pack( __pop )
|
|
|
|
inline void ofstream::open( char const *__n, ios::openmode __m, int __p ) {
|
|
fstreambase::open( __n, __m, __p );
|
|
}
|
|
|
|
// **************************** FSTREAM ************************************
|
|
|
|
#ifdef _M_IX86
|
|
#pragma pack( __push, 1 )
|
|
#else
|
|
#pragma pack( __push, 8 )
|
|
#endif
|
|
class _WPRTLINK fstream : public fstreambase, public iostream {
|
|
public:
|
|
fstream();
|
|
fstream( char const *__name,
|
|
ios::openmode __mode = ios::in|ios::out,
|
|
int __prot = filebuf::openprot );
|
|
fstream( filedesc __fd );
|
|
fstream( filedesc __fd, char *__buf, int __len );
|
|
~fstream();
|
|
|
|
void open( char const *__name,
|
|
ios::openmode __mode = ios::in|ios::out,
|
|
int __prot = filebuf::openprot );
|
|
};
|
|
#pragma pack( __pop )
|
|
|
|
inline void fstream::open( char const *__n, ios::openmode __m, int __p ) {
|
|
fstreambase::open( __n, __m, __p );
|
|
}
|
|
|
|
} // namespace std
|
|
|
|
#endif
|