struct mainwindowfieldsptr { x::ptr_cast horizontal_container; x::ptr_cast vertical_container; x::ptr_cast insert_column; x::ptr_cast remove_column; x::ptr_cast insert_row; x::ptr_cast remove_row; inline void validate_or_throw_exception() const { if (!horizontal_container) validation_failed("horizontal_container"); if (!vertical_container) validation_failed("vertical_container"); if (!insert_column) validation_failed("insert_column"); if (!remove_column) validation_failed("remove_column"); if (!insert_row) validation_failed("insert_row"); if (!remove_row) validation_failed("remove_row"); } static inline void validation_failed(const char *object_name) __attribute__((noreturn)) { throw EXCEPTION("Internal error: object \"" << object_name << "\" was not created."); } }; struct mainwindowfields { x::w::container horizontal_container; x::w::container vertical_container; x::w::button insert_column; x::w::button remove_column; x::w::button insert_row; x::w::button remove_row; mainwindowfields(const mainwindowfieldsptr &p) : horizontal_container(p.horizontal_container), vertical_container(p.vertical_container), insert_column(p.insert_column), remove_column(p.remove_column), insert_row(p.insert_row), remove_row(p.remove_row) {} };