181 lines
5.7 KiB
Plaintext
181 lines
5.7 KiB
Plaintext
[/
|
|
Copyright (c) 2013-2016 Vinnie Falco (vinnie dot falco at gmail dot com)
|
|
|
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
]
|
|
|
|
[section:File File]
|
|
|
|
The [*File] concept abstracts access to files in the underlying file system.
|
|
To support other platform interfaces, users may author their own [*File]
|
|
types which meet these requirements.
|
|
|
|
[heading Associated Types]
|
|
|
|
* [link beast.ref.boost__beast__file_mode `file_mode`]
|
|
* [link beast.ref.boost__beast__is_file `is_file`]
|
|
|
|
[heading Requirements]
|
|
|
|
In this table:
|
|
|
|
* `F` is a [*File] type
|
|
* `f` is an instance of `F`
|
|
* `p` is a value of type `char const*` which points to a null
|
|
terminated utf-8 encoded string.
|
|
* `m` is an instance of [link beast.ref.boost__beast__file_mode `file_mode`]
|
|
* `n` is a number of bytes, convertible to `std::size_t`
|
|
* `o` is a byte offset in the file, convertible to `std::uint64_t`
|
|
* `b` is any non-const pointer to memory
|
|
* `c` is any possibly-const pointer to memory
|
|
* `ec` is a reference of type [link beast.ref.boost__beast__error_code `error_code`]
|
|
|
|
[table Valid expressions
|
|
[[Expression] [Type] [Semantics, Pre/Post-conditions]]
|
|
[[Operation] [Return Type] [Semantics, Pre/Post-conditions]]
|
|
[
|
|
[`F()`]
|
|
[ ]
|
|
[
|
|
Default constructable
|
|
]
|
|
]
|
|
[
|
|
[`f.~F()`]
|
|
[ ]
|
|
[
|
|
Destructible.
|
|
If `f` refers to an open file, it is first closed
|
|
as if by a call to `close` with the error ignored.
|
|
]
|
|
]
|
|
[
|
|
[`f.is_open()`]
|
|
[`bool`]
|
|
[
|
|
Returns `true` if `f` refers to an open file, `false` otherwise.
|
|
]
|
|
]
|
|
[
|
|
[`f.close(ec)`]
|
|
[]
|
|
[
|
|
If `f` refers to an open file, this function attempts to
|
|
close the file.
|
|
Regardless of whether an error occurs or not, a subsequent
|
|
call to `f.is_open()` will return `false`.
|
|
The function will ensure that `!ec` is `true` if there was
|
|
no error or set to the appropriate error code if an error
|
|
occurred.
|
|
]
|
|
]
|
|
[
|
|
[`f.open(p,m,ec)`]
|
|
[]
|
|
[
|
|
Attempts to open the file at the path specified by `p`
|
|
with the mode specified by `m`.
|
|
Upon success, a subsequent call to `f.is_open()` will
|
|
return `true`.
|
|
If `f` refers to an open file, it is first closed
|
|
as if by a call to `close` with the error ignored.
|
|
The function will ensure that `!ec` is `true` if there was
|
|
no error or set to the appropriate error code if an error
|
|
occurred.
|
|
|
|
]
|
|
]
|
|
[
|
|
[`f.size(ec)`]
|
|
[`std::uint64_t`]
|
|
[
|
|
If `f` refers to an open file, this function attempts to
|
|
determine the file size and return its value.
|
|
If `f` does not refer to an open file, the function will
|
|
set `ec` to `errc::invalid_argument` and return 0.
|
|
The function will ensure that `!ec` is `true` if there was
|
|
no error or set to the appropriate error code if an error
|
|
occurred.
|
|
]
|
|
]
|
|
[
|
|
[`f.pos(ec)`]
|
|
[`std::uint64_t`]
|
|
[
|
|
If `f` refers to an open file, this function attempts to
|
|
determine the current file offset and return it.
|
|
If `f` does not refer to an open file, the function will
|
|
set `ec` to `errc::invalid_argument` and return 0.
|
|
The function will ensure that `!ec` is `true` if there was
|
|
no error or set to the appropriate error code if an error
|
|
occurred.
|
|
]
|
|
]
|
|
[
|
|
[`f.seek(o,ec)`]
|
|
[]
|
|
[
|
|
Attempts to reposition the current file offset to the value
|
|
`o`, which represents a byte offset relative to the beginning
|
|
of the file.
|
|
If `f` does not refer to an open file, the function will
|
|
set `ec` to `errc::invalid_argument` and return immediately.
|
|
The function will ensure that `!ec` is `true` if there was
|
|
no error or set to the appropriate error code if an error
|
|
occurred.
|
|
]
|
|
]
|
|
[
|
|
[`f.read(b,n,ec)`]
|
|
[`std::size_t`]
|
|
[
|
|
Attempts to read `n` bytes starting at the current file offset
|
|
from the open file referred to by `f`.
|
|
Bytes read are stored in the memory buffer at address `b` which
|
|
must be at least `n` bytes in size.
|
|
The function advances the file offset by the amount read, and
|
|
returns the number of bytes actually read, which may be less
|
|
than `n`.
|
|
If `f` does not refer to an open file, the function will
|
|
set `ec` to `errc::invalid_argument` and return immediately.
|
|
The function will ensure that `!ec` is `true` if there was
|
|
no error or set to the appropriate error code if an error
|
|
occurred.
|
|
If an end-of-file condition is detected prior to reading any
|
|
bytes, the function will ensure that `!ec` is `true` and the
|
|
return value shall be 0.
|
|
]
|
|
]
|
|
[
|
|
[`f.write(c,n,ec)`]
|
|
[`std::size_t`]
|
|
[
|
|
Attempts to write `n` bytes from the buffer pointed to by `c` to
|
|
the current file offset of the open file referred to by `f`.
|
|
The memory buffer at `c` must point to storage of at least `n`
|
|
bytes meant to be copied to the file.
|
|
The function advances the file offset by the amount written,
|
|
and returns the number of bytes actually written, which may be
|
|
less than `n`.
|
|
If `f` does not refer to an open file, the function will
|
|
set `ec` to `errc::invalid_argument` and return immediately.
|
|
The function will ensure that `!ec` is `true` if there was
|
|
no error or set to the appropriate error code if an error
|
|
occurred.
|
|
]
|
|
]
|
|
]
|
|
|
|
[heading Exemplar]
|
|
|
|
[concept_File]
|
|
|
|
[heading Models]
|
|
|
|
* [link beast.ref.boost__beast__file_posix `file_posix`]
|
|
* [link beast.ref.boost__beast__file_stdio `file_stdio`]
|
|
* [link beast.ref.boost__beast__file_win32 `file_win32`]
|
|
|
|
[endsect]
|