AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
AFileInputStream.h
    1/*
    2 * AUI Framework - Declarative UI toolkit for modern C++20
    3 * Copyright (C) 2020-2025 Alex2772 and Contributors
    4 *
    5 * SPDX-License-Identifier: MPL-2.0
    6 *
    7 * This Source Code Form is subject to the terms of the Mozilla Public
    8 * License, v. 2.0. If a copy of the MPL was not distributed with this
    9 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
   10 */
   11
   12#pragma once
   13#include <cstdio>
   14#include "AUI/Core.h"
   15#include "IInputStream.h"
   16#include "ISeekableInputStream.h"
   17
   18class AString;
   19
   24class API_AUI_CORE AFileInputStream: public ISeekableInputStream
   25{
   26private:
   27    FILE* mFile = nullptr;
   28
   29public:
   30    AFileInputStream(const AString& path);
   31    virtual ~AFileInputStream();
   32
   33    AFileInputStream(AFileInputStream&& rhs) noexcept {
   34        operator=(std::move(rhs));
   35    }
   36    AFileInputStream& operator=(AFileInputStream&& rhs) noexcept {
   37        mFile = rhs.mFile;
   38        rhs.mFile = nullptr;
   39        return *this;
   40    }
   41
   42    FILE* nativeHandle() const { return mFile; }
   43
   44    void seek(std::streamoff offset, ASeekDir seekDir) noexcept override;
   45    [[nodiscard]] std::streampos tell() noexcept override;
   46    bool isEof() override;
   47    std::size_t read(char* dst, size_t size) override;
   48};
std::streampos tell() noexcept override
return current reading position
std::size_t read(char *dst, size_t size) override
Reads up to size bytes from stream. Blocking (waiting for new data) is allowed.
bool isEof() override
returns true if end of stream has been reached
void seek(std::streamoff offset, ASeekDir seekDir) noexcept override
change reading position, a way of changing depends on seekDir parameter
Represents a Unicode character string.
Definition AString.h:38
Represents an input stream with updating reading position.
Definition ISeekableInputStream.h:27