#pragma once #include <cstddef> #include <xlnt/styles/alignment.hpp> #include <xlnt/styles/border.hpp> #include <xlnt/styles/fill.hpp> #include <xlnt/styles/font.hpp> #include <xlnt/styles/number_format.hpp> #include <xlnt/styles/protection.hpp> #include <xlnt/utils/optional.hpp> namespace xlnt { class alignment; class border; class fill; class font; class number_format; class protection; namespace detail { struct stylesheet; struct format_impl { stylesheet *parent; std::size_t id; optional<std::size_t> alignment_id; bool alignment_applied = false; optional<std::size_t> border_id; bool border_applied = false; optional<std::size_t> fill_id; bool fill_applied = false; optional<std::size_t> font_id; bool font_applied = false; optional<std::size_t> number_format_id; bool number_format_applied = false; optional<std::size_t> protection_id; bool protection_applied = false; optional<std::string> style; std::size_t references = 0; XLNT_API friend bool operator==(const format_impl &left, const format_impl &right) { return left.parent == right.parent && left.alignment_id == right.alignment_id && left.border_id == right.border_id && left.fill_id == right.fill_id && left.font_id == right.font_id && left.number_format_id == right.number_format_id && left.protection_id == right.protection_id && left.style == right.style; } }; } // namespace detail } // namespace xlnt