190 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        stdstream.h
 | 
						|
// Purpose:     interface of wxStdInputStream, wxStdInputStreamBuffer,
 | 
						|
//              wxStdOutputStream, wxStdOutputStreamBuffer
 | 
						|
// Author:      Jonathan Liu <net147@gmail.com>
 | 
						|
// Copyright:   (c) 2009 Jonathan Liu
 | 
						|
// Licence:     wxWindows licence
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
/**
 | 
						|
    @class wxStdInputStreamBuffer
 | 
						|
 | 
						|
    wxStdInputStreamBuffer is a std::streambuf derived stream buffer which
 | 
						|
    reads from a wxInputStream.
 | 
						|
 | 
						|
    Example:
 | 
						|
    @code
 | 
						|
    wxFFileInputStream file("input.txt.gz");
 | 
						|
    wxZlibInputStream gzipInput(file, wxZLIB_GZIP);
 | 
						|
    wxStdInputStreamBuffer gzipStreamBuffer(gzipInput);
 | 
						|
 | 
						|
    // redirect std::cin to read from compressed file
 | 
						|
    std::streambuf* streamBufferOld = std::cin.rdbuf(&gzipStreamBuffer);
 | 
						|
 | 
						|
    // prompt for integer
 | 
						|
    int number;
 | 
						|
    std::cout << "Enter an integer: " << std::flush;
 | 
						|
    std::cin >> number;
 | 
						|
    std::cout << std::endl;
 | 
						|
    std::cout << "You entered the integer " << number << "." << std::endl;
 | 
						|
 | 
						|
    // restore std::cin
 | 
						|
    std::cin.rdbuf(streamBufferOld);
 | 
						|
    @endcode
 | 
						|
 | 
						|
    @library{wxbase}
 | 
						|
    @category{streams}
 | 
						|
 | 
						|
    @see wxInputStream, wxStdInputStream
 | 
						|
*/
 | 
						|
class wxStdInputStreamBuffer : public std::streambuf
 | 
						|
{
 | 
						|
public:
 | 
						|
    /**
 | 
						|
        Creates a std::steambuf derived stream buffer which reads from a
 | 
						|
        wxInputStream.
 | 
						|
 | 
						|
        @param stream
 | 
						|
            Stream to read from.
 | 
						|
    */
 | 
						|
    wxStdInputStreamBuffer(wxInputStream& stream);
 | 
						|
 | 
						|
    /**
 | 
						|
        Destructor.
 | 
						|
    */
 | 
						|
    virtual ~wxStdInputStreamBuffer();
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
    @class wxStdInputStream
 | 
						|
 | 
						|
    wxStdInputStream is a std::istream derived stream which reads from
 | 
						|
    a wxInputStream.
 | 
						|
 | 
						|
    Example:
 | 
						|
    @code
 | 
						|
    wxFFileInputStream file("words.txt");
 | 
						|
    wxStdInputStream in(file);
 | 
						|
    std::vector<std::string> words;
 | 
						|
 | 
						|
    // read words from words.txt
 | 
						|
    std::copy(std::istream_iterator<std::string>(in),
 | 
						|
              std::istream_iterator<std::string>(),
 | 
						|
              std::back_inserter(words));
 | 
						|
 | 
						|
    // sort and remove duplicates
 | 
						|
    std::sort(words.begin(), words.end());
 | 
						|
    words.resize(std::unique(words.begin(), words.end()) - words.begin());
 | 
						|
 | 
						|
    // print words
 | 
						|
    std::copy(words.begin(), words.end(),
 | 
						|
              std::ostream_iterator<std::string>(std::cout, "\n"));
 | 
						|
    @endcode
 | 
						|
 | 
						|
    @library{wxbase}
 | 
						|
    @category{streams}
 | 
						|
 | 
						|
    @see wxInputStream, wxStdInputStreamBuffer
 | 
						|
*/
 | 
						|
class wxStdInputStream : public std::istream
 | 
						|
{
 | 
						|
public:
 | 
						|
    /**
 | 
						|
        Creates a std::istream derived stream which reads from a
 | 
						|
        wxInputStream.
 | 
						|
 | 
						|
        @param stream
 | 
						|
            Stream to read from.
 | 
						|
    */
 | 
						|
    wxStdInputStream(wxInputStream& stream);
 | 
						|
 | 
						|
    /**
 | 
						|
        Destructor.
 | 
						|
    */
 | 
						|
    virtual ~wxStdInputStream();
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
    @class wxStdOutputStreamBuffer
 | 
						|
 | 
						|
    wxStdOutputStreamBuffer is a std::streambuf derived stream buffer which
 | 
						|
    writes to a wxOutputStream.
 | 
						|
 | 
						|
    Example:
 | 
						|
    @code
 | 
						|
    wxFFileOutputStream file("cout.txt.gz");
 | 
						|
    wxZlibOutputStream gzipOutput(file, -1, wxZLIB_GZIP);
 | 
						|
    wxStdOutputStreamBuffer gzipStreamBuffer(gzipOutput);
 | 
						|
 | 
						|
    // redirect std::cout to cout.txt.gz using GZIP compression
 | 
						|
    std::streambuf* streamBufferOld = std::cout.rdbuf(&gzipStreamBuffer);
 | 
						|
 | 
						|
    // write to std::cout
 | 
						|
    std::cout << "Hello world!" << std::endl;
 | 
						|
 | 
						|
    // restore std::cout
 | 
						|
    std::cout.rdbuf(streamBufferOld);
 | 
						|
    @endcode
 | 
						|
 | 
						|
    @library{wxbase}
 | 
						|
    @category{streams}
 | 
						|
 | 
						|
    @see wxOutputStream, wxStdOutputStream
 | 
						|
*/
 | 
						|
class wxStdOutputStreamBuffer : public std::streambuf
 | 
						|
{
 | 
						|
public:
 | 
						|
    /**
 | 
						|
        Creates a std::steambuf derived stream buffer which writes to a
 | 
						|
        wxOutputStream.
 | 
						|
 | 
						|
        @param stream
 | 
						|
            Stream to write to.
 | 
						|
    */
 | 
						|
    wxStdOutputStreamBuffer(wxOutputStream& stream);
 | 
						|
 | 
						|
    /**
 | 
						|
        Destructor.
 | 
						|
    */
 | 
						|
    virtual ~wxStdOutputStreamBuffer();
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
    @class wxStdOutputStream
 | 
						|
 | 
						|
    wxStdOutputStream is a std::ostream derived stream which writes to a
 | 
						|
    wxOutputStream.
 | 
						|
 | 
						|
    Example:
 | 
						|
    @code
 | 
						|
    wxFFileOutputStream file("out.txt.gz");
 | 
						|
    wxZlibOutputStream gzipOutput(file, -1, wxZLIB_GZIP);
 | 
						|
    wxStdOutputStream out(gzipOutput);
 | 
						|
 | 
						|
    out << "Hello world!" << std::endl;
 | 
						|
    @endcode
 | 
						|
 | 
						|
    @library{wxbase}
 | 
						|
    @category{streams}
 | 
						|
 | 
						|
    @see wxOutputStream, wxStdOutputStreamBuffer
 | 
						|
*/
 | 
						|
class wxStdOutputStream : public std::ostream
 | 
						|
{
 | 
						|
public:
 | 
						|
    /**
 | 
						|
        Creates a std::ostream derived stream which writes to a
 | 
						|
        wxOutputStream.
 | 
						|
 | 
						|
        @param stream
 | 
						|
            Stream to write to.
 | 
						|
    */
 | 
						|
    wxStdOutputStream(wxOutputStream& stream);
 | 
						|
 | 
						|
    /**
 | 
						|
        Destructor.
 | 
						|
    */
 | 
						|
    virtual ~wxStdOutputStream();
 | 
						|
};
 |