mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-15 08:15:38 +07:00
some str_view vs buffer_view improvements
This commit is contained in:
@@ -24,6 +24,7 @@ namespace e2d
|
||||
template < typename F >
|
||||
decltype(auto) with_state(F&& f) const;
|
||||
|
||||
std::optional<script> load_script(str_view src);
|
||||
std::optional<script> load_script(buffer_view src);
|
||||
std::optional<script> load_script(const input_stream_uptr& src);
|
||||
private:
|
||||
|
||||
@@ -27,9 +27,6 @@ namespace e2d
|
||||
template < typename T >
|
||||
buffer_view(const vector<T>& buffer) noexcept;
|
||||
|
||||
template < typename Char >
|
||||
buffer_view(const basic_string<Char>& buffer) noexcept;
|
||||
|
||||
template < typename T, std::size_t N >
|
||||
buffer_view(const std::array<T,N>& buffer) noexcept;
|
||||
|
||||
@@ -60,11 +57,6 @@ namespace e2d
|
||||
: data_(buffer.data())
|
||||
, size_(buffer.size() * sizeof(T)) {}
|
||||
|
||||
template < typename Char >
|
||||
buffer_view::buffer_view(const basic_string<Char>& buffer) noexcept
|
||||
: data_(buffer.data())
|
||||
, size_(buffer.size() * sizeof(Char)) {}
|
||||
|
||||
template < typename T, std::size_t N >
|
||||
buffer_view::buffer_view(const std::array<T,N>& buffer) noexcept
|
||||
: data_(buffer.data())
|
||||
|
||||
@@ -76,6 +76,7 @@ namespace e2d::filesystem
|
||||
|
||||
bool try_read_all(str& dst, str_view path) noexcept;
|
||||
bool try_read_all(buffer& dst, str_view path) noexcept;
|
||||
bool try_write_all(str_view src, str_view path, bool append) noexcept;
|
||||
bool try_write_all(buffer_view src, str_view path, bool append) noexcept;
|
||||
|
||||
ENUM_HPP_CLASS_DECL(predef_path, u8,
|
||||
|
||||
@@ -81,6 +81,7 @@ namespace e2d
|
||||
|
||||
output_sequence& seek(std::ptrdiff_t offset, bool relative) noexcept;
|
||||
output_sequence& write(const void* src, std::size_t size) noexcept;
|
||||
output_sequence& write_all(str_view src) noexcept;
|
||||
output_sequence& write_all(buffer_view src) noexcept;
|
||||
|
||||
output_sequence& flush() noexcept;
|
||||
@@ -113,6 +114,10 @@ namespace e2d::streams
|
||||
buffer& dst,
|
||||
const input_stream_uptr& stream) noexcept;
|
||||
|
||||
bool try_write_tail(
|
||||
str_view src,
|
||||
const output_stream_uptr& stream) noexcept;
|
||||
|
||||
bool try_write_tail(
|
||||
buffer_view src,
|
||||
const output_stream_uptr& stream) noexcept;
|
||||
|
||||
@@ -38,12 +38,11 @@ namespace e2d
|
||||
state_.collect_garbage();
|
||||
}
|
||||
|
||||
std::optional<script> luasol::load_script(buffer_view src) {
|
||||
std::optional<script> luasol::load_script(str_view src) {
|
||||
E2D_ASSERT(is_in_main_thread());
|
||||
|
||||
sol::load_result result = state_.load_buffer(
|
||||
reinterpret_cast<const char*>(src.data()),
|
||||
src.size());
|
||||
src.data(), src.size());
|
||||
|
||||
if ( !result.valid() ) {
|
||||
sol::error err = result;
|
||||
@@ -56,6 +55,14 @@ namespace e2d
|
||||
return script(sol::protected_function(result));
|
||||
}
|
||||
|
||||
std::optional<script> luasol::load_script(buffer_view src) {
|
||||
E2D_ASSERT(is_in_main_thread());
|
||||
|
||||
return load_script(str_view(
|
||||
reinterpret_cast<const char*>(src.data()),
|
||||
src.size()));
|
||||
}
|
||||
|
||||
std::optional<script> luasol::load_script(const input_stream_uptr& src) {
|
||||
E2D_ASSERT(is_in_main_thread());
|
||||
|
||||
|
||||
@@ -105,6 +105,11 @@ namespace e2d::filesystem
|
||||
dst, make_read_file(path));
|
||||
}
|
||||
|
||||
bool try_write_all(str_view src, str_view path, bool append) noexcept {
|
||||
return streams::try_write_tail(
|
||||
src, make_write_file(path, append));
|
||||
}
|
||||
|
||||
bool try_write_all(buffer_view src, str_view path, bool append) noexcept {
|
||||
return streams::try_write_tail(
|
||||
src, make_write_file(path, append));
|
||||
|
||||
@@ -170,6 +170,12 @@ namespace e2d
|
||||
return *this;
|
||||
}
|
||||
|
||||
output_sequence& output_sequence::write_all(str_view src) noexcept {
|
||||
return success_
|
||||
? write(src.data(), src.size())
|
||||
: *this;
|
||||
}
|
||||
|
||||
output_sequence& output_sequence::write_all(buffer_view src) noexcept {
|
||||
return success_
|
||||
? write(src.data(), src.size())
|
||||
@@ -222,6 +228,14 @@ namespace e2d::streams
|
||||
: false;
|
||||
}
|
||||
|
||||
bool try_write_tail(str_view src, const output_stream_uptr& stream) noexcept {
|
||||
return stream
|
||||
? output_sequence(*stream)
|
||||
.write_all(src)
|
||||
.success()
|
||||
: false;
|
||||
}
|
||||
|
||||
bool try_write_tail(buffer_view src, const output_stream_uptr& stream) noexcept {
|
||||
return stream
|
||||
? output_sequence(*stream)
|
||||
|
||||
Reference in New Issue
Block a user