mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 15:00:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			101 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <istream>
 | |
| 
 | |
| namespace scwx
 | |
| {
 | |
| namespace qt
 | |
| {
 | |
| namespace util
 | |
| {
 | |
| 
 | |
| class QFileBuffer;
 | |
| 
 | |
| /**
 | |
|  * The QFileInputStream class is a std::istream interface to a QFile, allowing
 | |
|  * use with C++ stream-based I/O.
 | |
|  *
 | |
|  * Documentation for functions derived from
 | |
|  * https://en.cppreference.com/ SPDX-License-Identifier: CC BY-SA 3.0
 | |
|  */
 | |
| class QFileInputStream : public std::istream
 | |
| {
 | |
| public:
 | |
|    /**
 | |
|     * Constructs a new QFileInputStream object. The created object is not
 | |
|     * associated with a file: default-constructs the QFileBuffer and constructs
 | |
|     * the base with the pointer to this default-constructed QFileBuffer member.
 | |
|     */
 | |
|    explicit QFileInputStream();
 | |
| 
 | |
|    /**
 | |
|     * Constructs a new QFileInputStream object, then associates the object with
 | |
|     * a file by calling rdbuf()->open(filename, mode | std::ios_base::in). If
 | |
|     * the open() call returns a null pointer, sets setstate(failbit).
 | |
|     */
 | |
|    explicit QFileInputStream(const std::string&      filename,
 | |
|                              std::ios_base::openmode mode = std::ios_base::in);
 | |
|    ~QFileInputStream();
 | |
| 
 | |
|    QFileInputStream(const QFileInputStream&)            = delete;
 | |
|    QFileInputStream& operator=(const QFileInputStream&) = delete;
 | |
| 
 | |
|    QFileInputStream(QFileInputStream&&) noexcept;
 | |
|    QFileInputStream& operator=(QFileInputStream&&) noexcept;
 | |
| 
 | |
|    /**
 | |
|     * @brief Swaps two QFileInputStream objects
 | |
|     *
 | |
|     * Exchanges the contents of the QFile input stream with those of the other.
 | |
|     */
 | |
|    void swap(QFileInputStream& other);
 | |
| 
 | |
|    /**
 | |
|     * @brief Checks if the stream has an associated file
 | |
|     *
 | |
|     * Checks if the file stream has an associated file. Effectively calls
 | |
|     * rdbuf()->is_open().
 | |
|     *
 | |
|     * @return true if the associated file is open, false otherwise
 | |
|     */
 | |
|    bool is_open() const;
 | |
| 
 | |
|    /**
 | |
|     * @brief Opens a file and associates it with the stream
 | |
|     *
 | |
|     * Opens and associates the file with name filename with the file stream.
 | |
|     * Effectively calls rdbuf()->open(filename, mode | ios_base::in). Calls
 | |
|     * setstate(failbit) on failure.
 | |
|     *
 | |
|     * @param filename The file name to open
 | |
|     * @param openmode The file opening mode, a binary OR of the std::ios_base
 | |
|     * modes
 | |
|     */
 | |
|    void open(const std::string&      filename,
 | |
|              std::ios_base::openmode mode = std::ios_base::in);
 | |
| 
 | |
|    /**
 | |
|     * @brief Close the associated file
 | |
|     *
 | |
|     * Closes the associated file. Effectively calls rdbuf()->close(). If an
 | |
|     * error occurs during operation, setstate(failbit) is called.
 | |
|     */
 | |
|    void close();
 | |
| 
 | |
|    /**
 | |
|     * @brief Returns the underlying raw file device object
 | |
|     *
 | |
|     * Returns a pointer to the underlying raw file device object.
 | |
|     *
 | |
|     * @return Pointer to the underlying raw file device
 | |
|     */
 | |
|    QFileBuffer* rdbuf() const;
 | |
| 
 | |
| private:
 | |
|    class Impl;
 | |
|    std::unique_ptr<Impl> p;
 | |
| };
 | |
| 
 | |
| } // namespace util
 | |
| } // namespace qt
 | |
| } // namespace scwx
 | 
