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