Skip to content

Commit

Permalink
undo unnecessary add
Browse files Browse the repository at this point in the history
  • Loading branch information
stevenbrix committed Nov 3, 2023
1 parent 9887c10 commit cbabceb
Showing 1 changed file with 39 additions and 50 deletions.
89 changes: 39 additions & 50 deletions swiftwinrt/text_writer.h
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,44 @@ namespace swiftwinrt
std::vector<char> m_first;
};

template <typename T>
struct write_scope_guard
{
write_scope_guard(writer_base<T>& w, std::string module = "", bool start_on_new_line = true) noexcept : m_writer(w), m_start_on_new_line(start_on_new_line), m_swift_module(module)
{
}

write_scope_guard(write_scope_guard const&) = delete;
write_scope_guard(write_scope_guard&& rhs) : m_writer(rhs.m_writer), m_lines(std::move(rhs.m_lines)) {}
~write_scope_guard() noexcept
{
auto on_new_line = m_writer.back() == '\n';
if (!on_new_line && !m_lines.empty() && m_start_on_new_line)
{
m_writer.write("\n");
}
for (auto& line : m_lines)
{
m_writer.write(line);
}
}

template <typename... Args>
void push(std::string_view const& value, Args const&... args)
{
T temp_writer;
temp_writer.swift_module = m_swift_module;
m_lines.push_back(temp_writer.write_temp(value, args...));
}

private:
writer_base<T>& m_writer;
std::vector<std::string> m_lines;
bool m_start_on_new_line{};
std::string m_swift_module;
};


template <typename T>
struct indented_writer_base : writer_base<T>
{
Expand All @@ -326,6 +364,7 @@ namespace swiftwinrt
}

indent_guard(indent_guard&& rhs) noexcept : m_writer(rhs.m_writer), m_offset(rhs.m_offset) { rhs.m_offset = 0; }
//indent_guard& operator=(indent_guard&& rhs) noexcept : m_writer(rhs.m_writer), m_offset(rhs.m_offset) { rhs.m_offset = 0; }
~indent_guard() noexcept
{
m_writer.m_indent -= m_offset;
Expand Down Expand Up @@ -421,56 +460,6 @@ namespace swiftwinrt
};


template <typename T>
struct write_scope_guard
{
using writer_type = indented_writer_base<T>;
write_scope_guard(writer_type& w, std::string module = "", bool start_on_new_line = true) noexcept : m_writer(w), m_start_on_new_line(start_on_new_line), m_swift_module(module)
{
}

write_scope_guard(write_scope_guard const&) = delete;
write_scope_guard(write_scope_guard&& rhs) : m_writer(rhs.m_writer), m_lines(std::move(rhs.m_lines)) {}
~write_scope_guard() noexcept
{
if (m_guard.has_value())
{
m_guard.value().end();
}
auto on_new_line = m_writer.back() == '\n';
if (!on_new_line && !m_lines.empty() && m_start_on_new_line)
{
m_writer.write("\n");
}
for (auto& line : m_lines)
{
m_writer.write(line);
}
}

template <typename... Args>
void push(std::string_view const& value, Args const&... args)
{
T temp_writer;
temp_writer.swift_module = m_swift_module;
m_lines.push_back(temp_writer.write_temp(value, args...));
}

void push_indent(indent indent = { 1 })
{
m_guard.emplace(m_writer.push_indent(indent));
}

private:
writer_type& m_writer;
size_t m_offset{};
std::vector<std::string> m_lines;
std::optional<typename writer_type::indent_guard> m_guard;
bool m_start_on_new_line{};
std::string m_swift_module;
};


template <auto F, typename... Args>
auto bind(Args&&... args)
{
Expand Down

0 comments on commit cbabceb

Please sign in to comment.