1ed2f6d3bSAndrew Rist /**************************************************************
2*7ed02bbbSmseidel  *
3ed2f6d3bSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4ed2f6d3bSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5ed2f6d3bSAndrew Rist  * distributed with this work for additional information
6ed2f6d3bSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7ed2f6d3bSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8ed2f6d3bSAndrew Rist  * "License"); you may not use this file except in compliance
9ed2f6d3bSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*7ed02bbbSmseidel  *
11ed2f6d3bSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*7ed02bbbSmseidel  *
13ed2f6d3bSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14ed2f6d3bSAndrew Rist  * software distributed under the License is distributed on an
15ed2f6d3bSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16ed2f6d3bSAndrew Rist  * KIND, either express or implied.  See the License for the
17ed2f6d3bSAndrew Rist  * specific language governing permissions and limitations
18ed2f6d3bSAndrew Rist  * under the License.
19*7ed02bbbSmseidel  *
20ed2f6d3bSAndrew Rist  *************************************************************/
21ed2f6d3bSAndrew Rist 
22ed2f6d3bSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef DOCUMENT_STATISTIC_HXX_INCLUDED
25cdf0e10cSrcweir #define DOCUMENT_STATISTIC_HXX_INCLUDED
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <utility>
28cdf0e10cSrcweir #include <string>
29cdf0e10cSrcweir #include <vector>
30cdf0e10cSrcweir #include "internal/metainforeader.hxx"
31cdf0e10cSrcweir 
32cdf0e10cSrcweir 
33cdf0e10cSrcweir //------------------------------------
34cdf0e10cSrcweir //
35cdf0e10cSrcweir //------------------------------------
36cdf0e10cSrcweir 
37cdf0e10cSrcweir struct statistic_item
38cdf0e10cSrcweir {
39*7ed02bbbSmseidel 	statistic_item();
40*7ed02bbbSmseidel 
statistic_itemstatistic_item41*7ed02bbbSmseidel 	statistic_item(
42*7ed02bbbSmseidel 		const std::wstring& title,
43*7ed02bbbSmseidel 		const std::wstring& value,
44*7ed02bbbSmseidel 		bool editable) :
45*7ed02bbbSmseidel 		title_(title),
46*7ed02bbbSmseidel 		value_(value),
47*7ed02bbbSmseidel 		editable_(editable)
48*7ed02bbbSmseidel 	{}
49*7ed02bbbSmseidel 
50*7ed02bbbSmseidel 	std::wstring title_;
51*7ed02bbbSmseidel 	std::wstring value_;
52*7ed02bbbSmseidel 	bool editable_;
53cdf0e10cSrcweir };
54cdf0e10cSrcweir 
55cdf0e10cSrcweir //------------------------------------
56cdf0e10cSrcweir //
57cdf0e10cSrcweir //------------------------------------
58cdf0e10cSrcweir 
59cdf0e10cSrcweir typedef std::vector<statistic_item>                     statistic_item_list_t;
60cdf0e10cSrcweir typedef std::pair<std::wstring, statistic_item_list_t>  statistic_group_t;
61cdf0e10cSrcweir typedef std::vector<statistic_group_t>                  statistic_group_list_t;
62cdf0e10cSrcweir 
63cdf0e10cSrcweir //------------------------------------
64cdf0e10cSrcweir //
65cdf0e10cSrcweir //------------------------------------
66cdf0e10cSrcweir 
67cdf0e10cSrcweir class document_statistic_reader;
68cdf0e10cSrcweir typedef std::auto_ptr<document_statistic_reader> document_statistic_reader_ptr;
69cdf0e10cSrcweir 
70cdf0e10cSrcweir document_statistic_reader_ptr create_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
71cdf0e10cSrcweir 
72cdf0e10cSrcweir //------------------------------------
73cdf0e10cSrcweir //
74cdf0e10cSrcweir //------------------------------------
75cdf0e10cSrcweir 
76cdf0e10cSrcweir class document_statistic_reader
77cdf0e10cSrcweir {
78*7ed02bbbSmseidel public:
79*7ed02bbbSmseidel 	virtual ~document_statistic_reader();
80*7ed02bbbSmseidel 
81*7ed02bbbSmseidel 	void read(statistic_group_list_t* group_list);
82*7ed02bbbSmseidel 
83*7ed02bbbSmseidel 	std::string get_document_name() const;
84*7ed02bbbSmseidel 
85cdf0e10cSrcweir protected:
86*7ed02bbbSmseidel 	document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
87*7ed02bbbSmseidel 
88*7ed02bbbSmseidel 	virtual void fill_description_section(CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list) = 0;
89*7ed02bbbSmseidel 
90*7ed02bbbSmseidel 	virtual void fill_origin_section( CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list);
91*7ed02bbbSmseidel 
92cdf0e10cSrcweir private:
93*7ed02bbbSmseidel 	std::string document_name_;
94cdf0e10cSrcweir 	CMetaInfoReader* meta_info_accessor_;
95*7ed02bbbSmseidel 
96*7ed02bbbSmseidel 	friend document_statistic_reader_ptr create_document_statistic_reader(
97*7ed02bbbSmseidel 		const std::string& document_name, CMetaInfoReader* meta_info_accessor);
98cdf0e10cSrcweir };
99cdf0e10cSrcweir 
100cdf0e10cSrcweir //------------------------------------
101cdf0e10cSrcweir //
102cdf0e10cSrcweir //------------------------------------
103cdf0e10cSrcweir 
104cdf0e10cSrcweir class writer_document_statistic_reader : public document_statistic_reader
105cdf0e10cSrcweir {
106cdf0e10cSrcweir protected:
107*7ed02bbbSmseidel 	writer_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
108*7ed02bbbSmseidel 
109*7ed02bbbSmseidel 	virtual void fill_description_section(CMetaInfoReader *meta_info_accessor, statistic_group_list_t* group_list);
110*7ed02bbbSmseidel 
111*7ed02bbbSmseidel 	friend document_statistic_reader_ptr create_document_statistic_reader(
112*7ed02bbbSmseidel 		const std::string& document_name, CMetaInfoReader* meta_info_accessor);
113cdf0e10cSrcweir };
114cdf0e10cSrcweir 
115cdf0e10cSrcweir //------------------------------------
116cdf0e10cSrcweir //
117cdf0e10cSrcweir //------------------------------------
118cdf0e10cSrcweir 
119cdf0e10cSrcweir class calc_document_statistic_reader : public document_statistic_reader
120cdf0e10cSrcweir {
121cdf0e10cSrcweir protected:
122*7ed02bbbSmseidel 	calc_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
123*7ed02bbbSmseidel 
124*7ed02bbbSmseidel 	virtual void fill_description_section( CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list);
125*7ed02bbbSmseidel 
126*7ed02bbbSmseidel 	friend document_statistic_reader_ptr create_document_statistic_reader(
127*7ed02bbbSmseidel 		const std::string& document_name, CMetaInfoReader* meta_info_accessor);
128cdf0e10cSrcweir };
129cdf0e10cSrcweir 
130cdf0e10cSrcweir //------------------------------------
131cdf0e10cSrcweir //
132cdf0e10cSrcweir //------------------------------------
133cdf0e10cSrcweir 
134cdf0e10cSrcweir class draw_impress_math_document_statistic_reader : public document_statistic_reader
135cdf0e10cSrcweir {
136cdf0e10cSrcweir protected:
137*7ed02bbbSmseidel 	draw_impress_math_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
138*7ed02bbbSmseidel 
139*7ed02bbbSmseidel 	virtual void fill_description_section(CMetaInfoReader *meta_info_accessor, statistic_group_list_t* group_list);
140*7ed02bbbSmseidel 
141*7ed02bbbSmseidel 	friend document_statistic_reader_ptr create_document_statistic_reader(
142*7ed02bbbSmseidel 		const std::string& document_name, CMetaInfoReader* meta_info_accessor);
143cdf0e10cSrcweir };
144cdf0e10cSrcweir 
145cdf0e10cSrcweir #endif
146*7ed02bbbSmseidel 
147*7ed02bbbSmseidel /* vim: set noet sw=4 ts=4: */
148