1ed2f6d3bSAndrew Rist /************************************************************** 2*b6a5f44bSmseidel * 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*b6a5f44bSmseidel * 11ed2f6d3bSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*b6a5f44bSmseidel * 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*b6a5f44bSmseidel * 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*b6a5f44bSmseidel statistic_item(); 40*b6a5f44bSmseidel statistic_itemstatistic_item41*b6a5f44bSmseidel statistic_item( 42*b6a5f44bSmseidel const std::wstring& title, 43*b6a5f44bSmseidel const std::wstring& value, 44*b6a5f44bSmseidel bool editable) : 45*b6a5f44bSmseidel title_(title), 46*b6a5f44bSmseidel value_(value), 47*b6a5f44bSmseidel editable_(editable) 48*b6a5f44bSmseidel {} 49*b6a5f44bSmseidel 50*b6a5f44bSmseidel std::wstring title_; 51*b6a5f44bSmseidel std::wstring value_; 52*b6a5f44bSmseidel 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*b6a5f44bSmseidel public: 79*b6a5f44bSmseidel virtual ~document_statistic_reader(); 80*b6a5f44bSmseidel 81*b6a5f44bSmseidel void read(statistic_group_list_t* group_list); 82*b6a5f44bSmseidel 83*b6a5f44bSmseidel std::string get_document_name() const; 84*b6a5f44bSmseidel 85cdf0e10cSrcweir protected: 86*b6a5f44bSmseidel document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor); 87*b6a5f44bSmseidel 88*b6a5f44bSmseidel virtual void fill_description_section(CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list) = 0; 89*b6a5f44bSmseidel 90*b6a5f44bSmseidel virtual void fill_origin_section( CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list); 91*b6a5f44bSmseidel 92cdf0e10cSrcweir private: 93*b6a5f44bSmseidel std::string document_name_; 94cdf0e10cSrcweir CMetaInfoReader* meta_info_accessor_; 95*b6a5f44bSmseidel 96*b6a5f44bSmseidel friend document_statistic_reader_ptr create_document_statistic_reader( 97*b6a5f44bSmseidel 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*b6a5f44bSmseidel writer_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor); 108*b6a5f44bSmseidel 109*b6a5f44bSmseidel virtual void fill_description_section(CMetaInfoReader *meta_info_accessor, statistic_group_list_t* group_list); 110*b6a5f44bSmseidel 111*b6a5f44bSmseidel friend document_statistic_reader_ptr create_document_statistic_reader( 112*b6a5f44bSmseidel 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*b6a5f44bSmseidel calc_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor); 123*b6a5f44bSmseidel 124*b6a5f44bSmseidel virtual void fill_description_section( CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list); 125*b6a5f44bSmseidel 126*b6a5f44bSmseidel friend document_statistic_reader_ptr create_document_statistic_reader( 127*b6a5f44bSmseidel 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*b6a5f44bSmseidel draw_impress_math_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor); 138*b6a5f44bSmseidel 139*b6a5f44bSmseidel virtual void fill_description_section(CMetaInfoReader *meta_info_accessor, statistic_group_list_t* group_list); 140*b6a5f44bSmseidel 141*b6a5f44bSmseidel friend document_statistic_reader_ptr create_document_statistic_reader( 142*b6a5f44bSmseidel const std::string& document_name, CMetaInfoReader* meta_info_accessor); 143cdf0e10cSrcweir }; 144cdf0e10cSrcweir 145cdf0e10cSrcweir #endif 146*b6a5f44bSmseidel 147*b6a5f44bSmseidel /* vim: set noet sw=4 ts=4: */ 148