class axl::io::File

#include <axl_io_File.h>

class File
{
public:
    // typedefs

    typedef FileImpl::H Handle;

    // fields

    FileImpl m_file;

    // methods

    static
    Handle
    getInvalidHandle();

    Handle
    getHandle() const;

    bool
    isOpen() const;

    void
    close();

    bool
    open(
        const sl::StringRef& fileName,
        uint_t flags = 0
        );

    bool
    duplicate(Handle h);

    bool
    duplicate(const File* file);

    uint64_t
    getSize() const;

    bool
    setSize(uint64_t size);

    uint64_t
    getPosition() const;

    bool
    setPosition(uint64_t offset) const;

    size_t
    read(
        void* p,
        size_t size
        ) const;

    size_t
    write(
        const void* p,
        size_t size
        );

    size_t
    readAt(
        uint64_t offset,
        void* p,
        size_t size
        ) const;

    size_t
    writeAt(
        uint64_t offset,
        const void* p,
        size_t size
        );

    bool
    flush();
};