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 
56  virtual void set_worksheet_source(const char* table_name, size_t n_table_name) = 0;
57 
63  virtual void set_field_count(size_t n) = 0;
64 
71  virtual void set_field_name(const char* p, size_t n) = 0;
72 
78  virtual void set_field_min_value(double v) = 0;
79 
85  virtual void set_field_max_value(double v) = 0;
86 
92  virtual void set_field_min_date(const date_time_t& dt) = 0;
93 
99  virtual void set_field_max_date(const date_time_t& dt) = 0;
100 
111  virtual import_pivot_cache_field_group* create_field_group(size_t base_index) = 0;
112 
116  virtual void commit_field() = 0;
117 
124  virtual void set_field_item_string(const char* p, size_t n) = 0;
125 
131  virtual void set_field_item_numeric(double v) = 0;
132 
138  virtual void set_field_item_date_time(const date_time_t& dt) = 0;
139 
145  virtual void set_field_item_error(error_value_t ev) = 0;
146 
151  virtual void commit_field_item() = 0;
152 
156  virtual void commit() = 0;
157 };
158 
162 class ORCUS_DLLPUBLIC import_pivot_cache_field_group
163 {
164 public:
166 
179  virtual void link_base_to_group_items(size_t group_item_index) = 0;
180 
191  virtual void set_field_item_string(const char* p, size_t n) = 0;
192 
202  virtual void set_field_item_numeric(double v) = 0;
203 
207  virtual void commit_field_item() = 0;
208 
217  virtual void set_range_grouping_type(pivot_cache_group_by_t group_by) = 0;
218 
229  virtual void set_range_auto_start(bool b) = 0;
230 
241  virtual void set_range_auto_end(bool b) = 0;
242 
251  virtual void set_range_start_number(double v) = 0;
252 
261  virtual void set_range_end_number(double v) = 0;
262 
271  virtual void set_range_start_date(const date_time_t& dt) = 0;
272 
281  virtual void set_range_end_date(const date_time_t& dt) = 0;
282 
289  virtual void set_range_interval(double v) = 0;
290 
294  virtual void commit() = 0;
295 };
296 
300 class ORCUS_DLLPUBLIC import_pivot_cache_records
301 {
302 public:
303  virtual ~import_pivot_cache_records();
304 
305  virtual void set_record_count(size_t n) = 0;
306 
307  virtual void append_record_value_numeric(double v) = 0;
308 
309  virtual void append_record_value_character(const char* p, size_t n) = 0;
310 
311  virtual void append_record_value_shared_item(size_t index) = 0;
312 
316  virtual void commit_record() = 0;
317 
318  virtual void commit() = 0;
319 };
320 
321 }}}
322 
323 #endif
324 
325 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Definition: import_interface_pivot.hpp:300
Definition: types.hpp:444
Definition: import_interface_pivot.hpp:28
Definition: import_interface_pivot.hpp:162
Definition: base64.hpp:15