Orcus
import_interface.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 ORCUS_SPREADSHEET_IMPORT_INTERFACE_HPP
9#define ORCUS_SPREADSHEET_IMPORT_INTERFACE_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
21namespace orcus { namespace spreadsheet { namespace iface {
22
23class import_pivot_cache_definition;
24class import_pivot_cache_records;
25class import_sheet_view;
26
31{
32public:
33 ORCUS_DLLPUBLIC virtual ~import_shared_strings() = 0;
34
47 virtual size_t append(const char* s, size_t n) = 0;
48
60 virtual size_t add(const char* s, size_t n) = 0;
61
67 virtual void set_segment_font(size_t font_index) = 0;
68
75 virtual void set_segment_bold(bool b) = 0;
76
83 virtual void set_segment_italic(bool b) = 0;
84
92 virtual void set_segment_font_name(const char* s, size_t n) = 0;
93
99 virtual void set_segment_font_size(double point) = 0;
100
109 virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
110
119 virtual void append_segment(const char* s, size_t n) = 0;
120
130 virtual size_t commit_segments() = 0;
131};
132
146{
147public:
148 ORCUS_DLLPUBLIC virtual ~import_styles() = 0;
149
150 // font
151
152 virtual void set_font_count(size_t n) = 0;
153 virtual void set_font_bold(bool b) = 0;
154 virtual void set_font_italic(bool b) = 0;
155 virtual void set_font_name(const char* s, size_t n) = 0;
156 virtual void set_font_size(double point) = 0;
157 virtual void set_font_underline(underline_t e) = 0;
158 virtual void set_font_underline_width(underline_width_t e) = 0;
159 virtual void set_font_underline_mode(underline_mode_t e) = 0;
160 virtual void set_font_underline_type(underline_type_t e) = 0;
161 virtual void set_font_underline_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
162 virtual void set_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
163 virtual void set_strikethrough_style(strikethrough_style_t s) = 0;
164 virtual void set_strikethrough_type(strikethrough_type_t s) = 0;
165 virtual void set_strikethrough_width(strikethrough_width_t s) = 0;
166 virtual void set_strikethrough_text(strikethrough_text_t s) = 0;
167 virtual size_t commit_font() = 0;
168
169 // fill
170
177 virtual void set_fill_count(size_t n) = 0;
178
184 virtual void set_fill_pattern_type(fill_pattern_t fp) = 0;
185
196 virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
197
208 virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
209
216 virtual size_t commit_fill() = 0;
217
218 // border
219
220 virtual void set_border_count(size_t n) = 0;
221
222 virtual void set_border_style(border_direction_t dir, border_style_t style) = 0;
223 virtual void set_border_color(
224 border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
225 virtual void set_border_width(border_direction_t dir, double width, orcus::length_unit_t unit) = 0;
226 virtual size_t commit_border() = 0;
227
228 // cell protection
229 virtual void set_cell_hidden(bool b) = 0;
230 virtual void set_cell_locked(bool b) = 0;
231 virtual void set_cell_print_content(bool b) = 0;
232 virtual void set_cell_formula_hidden(bool b) = 0;
233 virtual size_t commit_cell_protection() = 0;
234
235 // number format
236 virtual void set_number_format_count(size_t n) = 0;
237 virtual void set_number_format_identifier(size_t id) = 0;
238 virtual void set_number_format_code(const char* s, size_t n) = 0;
239 virtual size_t commit_number_format() = 0;
240
241 // cell format and cell style format (xf == cell format)
242
243 virtual void set_cell_xf_count(size_t n) = 0;
244 virtual void set_cell_style_xf_count(size_t n) = 0;
245 virtual void set_dxf_count(size_t n) = 0;
246
247 virtual void set_xf_font(size_t index) = 0;
248 virtual void set_xf_fill(size_t index) = 0;
249 virtual void set_xf_border(size_t index) = 0;
250 virtual void set_xf_protection(size_t index) = 0;
251 virtual void set_xf_number_format(size_t index) = 0;
252 virtual void set_xf_style_xf(size_t index) = 0;
253 virtual void set_xf_apply_alignment(bool b) = 0;
254 virtual void set_xf_horizontal_alignment(hor_alignment_t align) = 0;
255 virtual void set_xf_vertical_alignment(ver_alignment_t align) = 0;
256
257 virtual size_t commit_cell_xf() = 0;
258 virtual size_t commit_cell_style_xf() = 0;
259 virtual size_t commit_dxf() = 0;
260
261 // cell style entry
262
263 virtual void set_cell_style_count(size_t n) = 0;
264 virtual void set_cell_style_name(const char* s, size_t n) = 0;
265 virtual void set_cell_style_xf(size_t index) = 0;
266 virtual void set_cell_style_builtin(size_t index) = 0;
267 virtual void set_cell_style_parent_name(const char* s, size_t n) = 0;
268 virtual size_t commit_cell_style() = 0;
269};
270
277{
278public:
279 ORCUS_DLLPUBLIC virtual ~import_sheet_properties() = 0;
280
281 virtual void set_column_width(col_t col, double width, orcus::length_unit_t unit) = 0;
282
283 virtual void set_column_hidden(col_t col, bool hidden) = 0;
284
285 virtual void set_row_height(row_t row, double height, orcus::length_unit_t unit) = 0;
286
287 virtual void set_row_hidden(row_t row, bool hidden) = 0;
288
295 virtual void set_merge_cell_range(const range_t& range) = 0;
296};
297
301class ORCUS_DLLPUBLIC import_named_expression
302{
303public:
304 virtual ~import_named_expression();
305
318 virtual void define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) = 0;
319};
320
325{
326public:
327 ORCUS_DLLPUBLIC virtual ~import_data_table() = 0;
328
329 virtual void set_type(data_table_type_t type) = 0;
330
331 virtual void set_range(const range_t& range) = 0;
332
333 virtual void set_first_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
334
335 virtual void set_second_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
336
337 virtual void commit() = 0;
338};
339
341{
342public:
343 ORCUS_DLLPUBLIC virtual ~import_auto_filter() = 0;
344
351 virtual void set_range(const range_t& range) = 0;
352
360 virtual void set_column(col_t col) = 0;
361
368 virtual void append_column_match_value(const char* p, size_t n) = 0;
369
373 virtual void commit_column() = 0;
374
378 virtual void commit() = 0;
379};
380
404{
405public:
406 ORCUS_DLLPUBLIC virtual ~import_conditional_format() = 0;
407
412 virtual void set_color(color_elem_t alpha, color_elem_t red,
413 color_elem_t green, color_elem_t blue) = 0;
414
418 virtual void set_formula(const char* p, size_t n) = 0;
419
424 virtual void set_condition_type(condition_type_t type) = 0;
425
429 virtual void set_date(condition_date_t date) = 0;
430
434 virtual void commit_condition() = 0;
435
440 virtual void set_icon_name(const char* p, size_t n) = 0;
441
446 virtual void set_databar_gradient(bool gradient) = 0;
447
452 virtual void set_databar_axis(databar_axis_t axis) = 0;
453
458 virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red,
459 color_elem_t green, color_elem_t blue) = 0;
460
465 virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red,
466 color_elem_t green, color_elem_t blue) = 0;
467
472 virtual void set_min_databar_length(double length) = 0;
473
478 virtual void set_max_databar_length(double length) = 0;
479
484 virtual void set_show_value(bool show) = 0;
485
490 virtual void set_iconset_reverse(bool reverse) = 0;
491
495 virtual void set_xf_id(size_t xf) = 0;
496
501 virtual void set_operator(condition_operator_t condition_type) = 0;
502
503 virtual void set_type(conditional_format_t type) = 0;
504
505 virtual void commit_entry() = 0;
506
507 virtual void set_range(const char* p, size_t n) = 0;
508
509 virtual void set_range(row_t row_start, col_t col_start,
510 row_t row_end, col_t col_end) = 0;
511
512 virtual void commit_format() = 0;
513};
514
519class ORCUS_DLLPUBLIC import_table
520{
521public:
522 virtual ~import_table() = 0;
523
524 virtual import_auto_filter* get_auto_filter();
525
526 virtual void set_identifier(size_t id) = 0;
527
528 virtual void set_range(const char* p_ref, size_t n_ref) = 0;
529
530 virtual void set_totals_row_count(size_t row_count) = 0;
531
532 virtual void set_name(const char* p, size_t n) = 0;
533
534 virtual void set_display_name(const char* p, size_t n) = 0;
535
536 virtual void set_column_count(size_t n) = 0;
537
538 virtual void set_column_identifier(size_t id) = 0;
539 virtual void set_column_name(const char* p, size_t n) = 0;
540 virtual void set_column_totals_row_label(const char* p, size_t n) = 0;
541 virtual void set_column_totals_row_function(totals_row_function_t func) = 0;
542 virtual void commit_column() = 0;
543
544 virtual void set_style_name(const char* p, size_t n) = 0;
545 virtual void set_style_show_first_column(bool b) = 0;
546 virtual void set_style_show_last_column(bool b) = 0;
547 virtual void set_style_show_row_stripes(bool b) = 0;
548 virtual void set_style_show_column_stripes(bool b) = 0;
549
550 virtual void commit() = 0;
551};
552
553class ORCUS_DLLPUBLIC import_formula
554{
555public:
556 virtual ~import_formula();
557
564 virtual void set_position(row_t row, col_t col) = 0;
565
574 virtual void set_formula(formula_grammar_t grammar, const char* p, size_t n) = 0;
575
581 virtual void set_shared_formula_index(size_t index) = 0;
582
588 virtual void set_result_string(size_t sindex) = 0;
589
595 virtual void set_result_value(double value) = 0;
596
602 virtual void set_result_bool(bool value) = 0;
603
607 virtual void set_result_empty() = 0;
608
612 virtual void commit() = 0;
613};
614
615class ORCUS_DLLPUBLIC import_array_formula
616{
617public:
618 virtual ~import_array_formula();
619
620 virtual void set_range(const range_t& range) = 0;
621
622 virtual void set_formula(formula_grammar_t grammar, const char* p, size_t n) = 0;
623
624 virtual void set_result_string(row_t row, col_t col, size_t sindex) = 0;
625
626 virtual void set_result_value(row_t row, col_t col, double value) = 0;
627
628 virtual void set_result_bool(row_t row, col_t col, bool value) = 0;
629
630 virtual void set_result_empty(row_t row, col_t col) = 0;
631
632 virtual void commit() = 0;
633};
634
638class ORCUS_DLLPUBLIC import_sheet
639{
640public:
641 virtual ~import_sheet() = 0;
642
643 virtual import_sheet_view* get_sheet_view();
644
645 virtual import_sheet_properties* get_sheet_properties();
646
659
669
681
690
691 virtual import_named_expression* get_named_expression();
692
693 virtual import_array_formula* get_array_formula();
694
702
712 virtual void set_auto(row_t row, col_t col, const char* p, size_t n) = 0;
713
721 virtual void set_string(row_t row, col_t col, size_t sindex) = 0;
722
730 virtual void set_value(row_t row, col_t col, double value) = 0;
731
739 virtual void set_bool(row_t row, col_t col, bool value) = 0;
740
747 virtual void set_date_time(
748 row_t row, col_t col,
749 int year, int month, int day, int hour, int minute, double second) = 0;
750
759 virtual void set_format(row_t row, col_t col, size_t xf_index) = 0;
760
771 virtual void set_format(row_t row_start, col_t col_start,
772 row_t row_end, col_t col_end, size_t xf_index) = 0;
773
783 virtual void fill_down_cells(row_t src_row, col_t src_col, row_t range_size) = 0;
784
791 virtual range_size_t get_sheet_size() const = 0;
792};
793
795{
796public:
797 ORCUS_DLLPUBLIC virtual ~import_global_settings() = 0;
798
808 virtual void set_origin_date(int year, int month, int day) = 0;
809
818 virtual void set_default_formula_grammar(formula_grammar_t grammar) = 0;
819
825 virtual formula_grammar_t get_default_formula_grammar() const = 0;
826
832 virtual void set_character_set(character_set_t charset) = 0;
833};
834
835class ORCUS_DLLPUBLIC import_reference_resolver
836{
837public:
839
853 virtual address_t resolve_address(const char* p, size_t n) = 0;
854
868 virtual range_t resolve_range(const char* p, size_t n) = 0;
869};
870
881class ORCUS_DLLPUBLIC import_factory
882{
883public:
884 virtual ~import_factory() = 0;
885
886 virtual import_global_settings* get_global_settings();
887
893
894 virtual import_named_expression* get_named_expression();
895
901
902 virtual import_reference_resolver* get_reference_resolver();
903
916 pivot_cache_id_t cache_id);
917
928 pivot_cache_id_t cache_id);
929
944 sheet_t sheet_index, const char* sheet_name, size_t sheet_name_length) = 0;
945
951 virtual import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) = 0;
952
961 virtual import_sheet* get_sheet(sheet_t sheet_index) = 0;
962
967 virtual void finalize() = 0;
968};
969
970}}}
971
972#endif
973
974/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Definition: import_interface.hpp:616
Definition: import_interface.hpp:341
virtual void set_range(const range_t &range)=0
virtual void append_column_match_value(const char *p, size_t n)=0
Definition: import_interface.hpp:404
virtual void set_databar_gradient(bool gradient)=0
virtual void set_formula(const char *p, size_t n)=0
virtual void set_operator(condition_operator_t condition_type)=0
virtual void set_condition_type(condition_type_t type)=0
virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual void set_max_databar_length(double length)=0
virtual void set_min_databar_length(double length)=0
virtual void set_databar_axis(databar_axis_t axis)=0
virtual void set_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual void set_date(condition_date_t date)=0
virtual void set_icon_name(const char *p, size_t n)=0
virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
Definition: import_interface.hpp:325
Definition: import_interface.hpp:882
virtual import_pivot_cache_records * create_pivot_cache_records(pivot_cache_id_t cache_id)
virtual import_styles * get_styles()
virtual import_sheet * get_sheet(const char *sheet_name, size_t sheet_name_length)=0
virtual import_pivot_cache_definition * create_pivot_cache_definition(pivot_cache_id_t cache_id)
virtual import_sheet * get_sheet(sheet_t sheet_index)=0
virtual import_sheet * append_sheet(sheet_t sheet_index, const char *sheet_name, size_t sheet_name_length)=0
virtual import_shared_strings * get_shared_strings()
Definition: import_interface.hpp:554
virtual void set_formula(formula_grammar_t grammar, const char *p, size_t n)=0
virtual void set_result_bool(bool value)=0
virtual void set_result_string(size_t sindex)=0
virtual void set_shared_formula_index(size_t index)=0
virtual void set_result_value(double value)=0
virtual void set_position(row_t row, col_t col)=0
Definition: import_interface.hpp:795
virtual void set_character_set(character_set_t charset)=0
virtual formula_grammar_t get_default_formula_grammar() const =0
virtual void set_origin_date(int year, int month, int day)=0
virtual void set_default_formula_grammar(formula_grammar_t grammar)=0
Definition: import_interface.hpp:302
virtual void define_name(const char *p_name, size_t n_name, const char *p_exp, size_t n_exp)=0
Definition: import_interface_pivot.hpp:29
Definition: import_interface_pivot.hpp:291
Definition: import_interface.hpp:836
virtual address_t resolve_address(const char *p, size_t n)=0
virtual range_t resolve_range(const char *p, size_t n)=0
Definition: import_interface.hpp:31
virtual void append_segment(const char *s, size_t n)=0
virtual void set_segment_font_name(const char *s, size_t n)=0
virtual void set_segment_font_size(double point)=0
virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual size_t append(const char *s, size_t n)=0
virtual size_t add(const char *s, size_t n)=0
virtual void set_segment_font(size_t font_index)=0
Definition: import_interface.hpp:277
virtual void set_merge_cell_range(const range_t &range)=0
Definition: import_interface_view.hpp:20
Definition: import_interface.hpp:639
virtual import_table * get_table()
virtual void set_bool(row_t row, col_t col, bool value)=0
virtual import_formula * get_formula()
virtual range_size_t get_sheet_size() const =0
virtual void set_format(row_t row_start, col_t col_start, row_t row_end, col_t col_end, size_t xf_index)=0
virtual void set_auto(row_t row, col_t col, const char *p, size_t n)=0
virtual import_conditional_format * get_conditional_format()
virtual import_auto_filter * get_auto_filter()
virtual void fill_down_cells(row_t src_row, col_t src_col, row_t range_size)=0
virtual void set_value(row_t row, col_t col, double value)=0
virtual import_data_table * get_data_table()
virtual void set_string(row_t row, col_t col, size_t sindex)=0
virtual void set_format(row_t row, col_t col, size_t xf_index)=0
virtual void set_date_time(row_t row, col_t col, int year, int month, int day, int hour, int minute, double second)=0
Definition: import_interface.hpp:146
virtual void set_fill_pattern_type(fill_pattern_t fp)=0
virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual void set_fill_count(size_t n)=0
Definition: import_interface.hpp:520
Definition: types.hpp:356
Definition: types.hpp:362
Definition: types.hpp:368