Orcus
factory.hpp
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this
5  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
6  */
7 
8 #ifndef INCLUDED_ORCUS_SPREADSHEET_IMPORT_FACTORY_HPP
9 #define INCLUDED_ORCUS_SPREADSHEET_IMPORT_FACTORY_HPP
10 
11 #include <orcus/spreadsheet/import_interface.hpp>
12 #include <orcus/spreadsheet/import_interface_styles.hpp>
13 #include <orcus/spreadsheet/export_interface.hpp>
14 #include <orcus/env.hpp>
15 
16 #include <memory>
17 
18 namespace orcus {
19 
20 class string_pool;
21 
22 namespace spreadsheet {
23 
24 class document;
25 class view;
26 class styles;
27 
28 struct ORCUS_SPM_DLLPUBLIC import_factory_config
29 {
38  bool enable_font_cache = true;
39 
43 
44  import_factory_config& operator=(const import_factory_config& other);
45 };
46 
51 class ORCUS_SPM_DLLPUBLIC import_factory : public iface::import_factory
52 {
53  struct impl;
54  std::unique_ptr<impl> mp_impl;
55 public:
57  import_factory(document& doc, view& view_store);
58  virtual ~import_factory();
59 
62  virtual iface::import_styles* get_styles() override;
64  virtual iface::import_reference_resolver* get_reference_resolver(formula_ref_context_t cxt) override;
66  orcus::spreadsheet::pivot_cache_id_t cache_id) override;
68  orcus::spreadsheet::pivot_cache_id_t cache_id) override;
69  virtual iface::import_sheet* append_sheet(sheet_t sheet_index, std::string_view name) override;
70  virtual iface::import_sheet* get_sheet(std::string_view name) override;
71  virtual iface::import_sheet* get_sheet(sheet_t sheet_index) override;
72  virtual void finalize() override;
73 
74  void set_config(const import_factory_config& config);
75 
76  void set_default_row_size(row_t row_size);
77  void set_default_column_size(col_t col_size);
78 
79  void set_character_set(character_set_t charset);
80  character_set_t get_character_set() const;
81 
90 
91  void set_formula_error_policy(formula_error_policy_t policy);
92 };
93 
98 class ORCUS_SPM_DLLPUBLIC import_styles : public iface::import_styles
99 {
100  struct impl;
101  std::unique_ptr<impl> mp_impl;
102 public:
103  import_styles(styles& styles_store, string_pool& sp);
104  import_styles(std::shared_ptr<import_factory_config> config, styles& styles_store, string_pool& sp);
105  virtual ~import_styles() override;
106 
112  virtual iface::import_xf* start_xf(xf_category_t cat) override;
114 
115  virtual void set_font_count(size_t n) override;
116  virtual void set_fill_count(size_t n) override;
117  virtual void set_border_count(size_t n) override;
118  virtual void set_number_format_count(size_t n) override;
119  virtual void set_xf_count(xf_category_t cat, size_t n) override;
120  virtual void set_cell_style_count(size_t n) override;
121 };
122 
129 class ORCUS_SPM_DLLPUBLIC export_factory : public iface::export_factory
130 {
131  struct impl;
132  std::unique_ptr<impl> mp_impl;
133 public:
134  export_factory(const document& doc);
135  virtual ~export_factory();
136 
137  virtual const iface::export_sheet* get_sheet(std::string_view sheet_name) const override;
138 };
139 
140 }}
141 
142 #endif
143 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Definition: document.hpp:54
Definition: factory.hpp:130
virtual const iface::export_sheet * get_sheet(std::string_view sheet_name) const override
Definition: export_interface.hpp:40
Definition: export_interface.hpp:22
Definition: import_interface_styles.hpp:445
Definition: import_interface_styles.hpp:491
Definition: import_interface_styles.hpp:711
Definition: import_interface.hpp:1199
Definition: import_interface_styles.hpp:397
Definition: import_interface_styles.hpp:210
Definition: import_interface.hpp:1101
Definition: import_interface.hpp:266
Definition: import_interface_styles.hpp:542
Definition: import_interface_pivot.hpp:29
Definition: import_interface_pivot.hpp:293
Definition: import_interface.hpp:1157
Definition: import_interface.hpp:72
Definition: import_interface.hpp:879
Definition: import_interface_styles.hpp:53
Definition: import_interface_styles.hpp:597
Definition: factory.hpp:52
virtual iface::import_shared_strings * get_shared_strings() override
virtual iface::import_pivot_cache_definition * create_pivot_cache_definition(orcus::spreadsheet::pivot_cache_id_t cache_id) override
virtual iface::import_sheet * get_sheet(std::string_view name) override
virtual void finalize() override
virtual iface::import_sheet * get_sheet(sheet_t sheet_index) override
virtual iface::import_styles * get_styles() override
virtual iface::import_sheet * append_sheet(sheet_t sheet_index, std::string_view name) override
virtual iface::import_pivot_cache_records * create_pivot_cache_records(orcus::spreadsheet::pivot_cache_id_t cache_id) override
virtual iface::import_global_settings * get_global_settings() override
virtual iface::import_named_expression * get_named_expression() override
virtual iface::import_reference_resolver * get_reference_resolver(formula_ref_context_t cxt) override
Definition: factory.hpp:99
virtual iface::import_cell_style * start_cell_style() override
virtual void set_cell_style_count(size_t n) override
virtual iface::import_xf * start_xf(xf_category_t cat) override
virtual iface::import_number_format * start_number_format() override
virtual iface::import_font_style * start_font_style() override
virtual iface::import_cell_protection * start_cell_protection() override
virtual void set_number_format_count(size_t n) override
virtual void set_font_count(size_t n) override
virtual iface::import_border_style * start_border_style() override
virtual void set_xf_count(xf_category_t cat, size_t n) override
virtual void set_fill_count(size_t n) override
virtual void set_border_count(size_t n) override
virtual iface::import_fill_style * start_fill_style() override
Definition: styles.hpp:202
Definition: view.hpp:23
Definition: string_pool.hpp:26
Definition: config.hpp:20