Orcus
import_interface_pivot.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_INTERFACE_PIVOT_HPP
9 #define INCLUDED_ORCUS_SPREADSHEET_IMPORT_INTERFACE_PIVOT_HPP
10 
11 #include <cstdlib>
12 
13 #include "orcus/spreadsheet/types.hpp"
14 #include "orcus/types.hpp"
15 #include "orcus/env.hpp"
16 
17 // NB: This header must not depend on ixion, as it needs to be usable for
18 // those clients that provide their own formula engine. Other headers in
19 // the orcus::spreadsheet namespace may depend on ixion.
20 
21 namespace orcus { namespace spreadsheet { namespace iface {
22 
23 class import_pivot_cache_field_group;
24 
28 class ORCUS_DLLPUBLIC import_pivot_cache_definition
29 {
30 public:
32 
45  virtual void set_worksheet_source(
46  const char* ref, size_t n_ref, const char* sheet_name, size_t n_sheet_name) = 0;
47 
53  virtual void set_field_count(size_t n) = 0;
54 
61  virtual void set_field_name(const char* p, size_t n) = 0;
62 
68  virtual void set_field_min_value(double v) = 0;
69 
75  virtual void set_field_max_value(double v) = 0;
76 
82  virtual void set_field_min_date(const date_time_t& dt) = 0;
83 
89  virtual void set_field_max_date(const date_time_t& dt) = 0;
90 
101  virtual import_pivot_cache_field_group* create_field_group(size_t base_index) = 0;
102 
106  virtual void commit_field() = 0;
107 
114  virtual void set_field_item_string(const char* p, size_t n) = 0;
115 
121  virtual void set_field_item_numeric(double v) = 0;
122 
128  virtual void set_field_item_date_time(const date_time_t& dt) = 0;
129 
135  virtual void set_field_item_error(error_value_t ev) = 0;
136 
141  virtual void commit_field_item() = 0;
142 
146  virtual void commit() = 0;
147 };
148 
152 class ORCUS_DLLPUBLIC import_pivot_cache_field_group
153 {
154 public:
156 
169  virtual void link_base_to_group_items(size_t group_item_index) = 0;
170 
181  virtual void set_field_item_string(const char* p, size_t n) = 0;
182 
192  virtual void set_field_item_numeric(double v) = 0;
193 
197  virtual void commit_field_item() = 0;
198 
207  virtual void set_range_grouping_type(pivot_cache_group_by_t group_by) = 0;
208 
219  virtual void set_range_auto_start(bool b) = 0;
220 
231  virtual void set_range_auto_end(bool b) = 0;
232 
241  virtual void set_range_start_number(double v) = 0;
242 
251  virtual void set_range_end_number(double v) = 0;
252 
261  virtual void set_range_start_date(const date_time_t& dt) = 0;
262 
271  virtual void set_range_end_date(const date_time_t& dt) = 0;
272 
279  virtual void set_range_interval(double v) = 0;
280 
284  virtual void commit() = 0;
285 };
286 
290 class ORCUS_DLLPUBLIC import_pivot_cache_records
291 {
292 public:
293  virtual ~import_pivot_cache_records();
294 
295  virtual void set_record_count(size_t n) = 0;
296 
297  virtual void append_record_value_numeric(double v) = 0;
298 
299  virtual void append_record_value_character(const char* p, size_t n) = 0;
300 
301  virtual void append_record_value_shared_item(size_t index) = 0;
302 
306  virtual void commit_record() = 0;
307 
308  virtual void commit() = 0;
309 };
310 
311 }}}
312 
313 #endif
314 
315 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
orcus::spreadsheet::iface::import_pivot_cache_field_group
Definition: import_interface_pivot.hpp:152
orcus::date_time_t
Definition: types.hpp:419
orcus::spreadsheet::iface::import_pivot_cache_definition
Definition: import_interface_pivot.hpp:28
orcus::spreadsheet::iface::import_pivot_cache_records
Definition: import_interface_pivot.hpp:290