Orcus
Loading...
Searching...
No Matches
table.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#pragma once
9
10#include "auto_filter.hpp"
11
12#include <string_view>
13
14#include <ixion/address.hpp>
15
16namespace orcus { namespace spreadsheet {
17
21struct ORCUS_SPM_DLLPUBLIC table_column_t
22{
23 std::size_t identifier;
24 std::string_view name;
25 std::string_view totals_row_label;
26 totals_row_function_t totals_row_function;
27
28 table_column_t();
29 table_column_t(const table_column_t& other);
30 ~table_column_t();
31
32 table_column_t& operator=(const table_column_t& other);
33
34 void reset();
35};
36
40struct ORCUS_SPM_DLLPUBLIC table_style_t
41{
42 std::string_view name;
43
44 bool show_first_column:1;
45 bool show_last_column:1;
46 bool show_row_stripes:1;
47 bool show_column_stripes:1;
48
49 table_style_t();
50 table_style_t(const table_style_t& other);
51 ~table_style_t();
52
53 table_style_t& operator=(const table_style_t& other);
54
55 void reset();
56};
57
62struct ORCUS_SPM_DLLPUBLIC table_t
63{
64 typedef std::vector<table_column_t> columns_type;
65
66 std::size_t identifier;
67
68 std::string_view name;
69 std::string_view display_name;
70
71 ixion::abs_range_t range;
72
73 std::size_t totals_row_count;
74
75 auto_filter_t filter;
76 columns_type columns;
77 table_style_t style;
78
79 table_t();
80 table_t(const table_t& other) = delete;
81 table_t(table_t&& other);
82 ~table_t();
83
84 table_t& operator=(const table_t& other) = delete;
85 table_t& operator=(table_t&& other);
86
87 void reset();
88};
89
90}}
91
92/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Definition auto_filter.hpp:171
Definition table.hpp:41