1*ed2f6d3bSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*ed2f6d3bSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*ed2f6d3bSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*ed2f6d3bSAndrew Rist * distributed with this work for additional information 6*ed2f6d3bSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*ed2f6d3bSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*ed2f6d3bSAndrew Rist * "License"); you may not use this file except in compliance 9*ed2f6d3bSAndrew Rist * with the License. You may obtain a copy of the License at 10*ed2f6d3bSAndrew Rist * 11*ed2f6d3bSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*ed2f6d3bSAndrew Rist * 13*ed2f6d3bSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*ed2f6d3bSAndrew Rist * software distributed under the License is distributed on an 15*ed2f6d3bSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*ed2f6d3bSAndrew Rist * KIND, either express or implied. See the License for the 17*ed2f6d3bSAndrew Rist * specific language governing permissions and limitations 18*ed2f6d3bSAndrew Rist * under the License. 19*ed2f6d3bSAndrew Rist * 20*ed2f6d3bSAndrew Rist *************************************************************/ 21*ed2f6d3bSAndrew Rist 22*ed2f6d3bSAndrew 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 { 39cdf0e10cSrcweir statistic_item(); 40cdf0e10cSrcweir 41cdf0e10cSrcweir statistic_item( 42cdf0e10cSrcweir const std::wstring& title, 43cdf0e10cSrcweir const std::wstring& value, 44cdf0e10cSrcweir bool editable) : 45cdf0e10cSrcweir title_(title), 46cdf0e10cSrcweir value_(value), 47cdf0e10cSrcweir editable_(editable) 48cdf0e10cSrcweir {} 49cdf0e10cSrcweir 50cdf0e10cSrcweir std::wstring title_; 51cdf0e10cSrcweir std::wstring value_; 52cdf0e10cSrcweir 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 { 78cdf0e10cSrcweir public: 79cdf0e10cSrcweir virtual ~document_statistic_reader(); 80cdf0e10cSrcweir 81cdf0e10cSrcweir void read(statistic_group_list_t* group_list); 82cdf0e10cSrcweir 83cdf0e10cSrcweir std::string get_document_name() const; 84cdf0e10cSrcweir 85cdf0e10cSrcweir protected: 86cdf0e10cSrcweir document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor); 87cdf0e10cSrcweir 88cdf0e10cSrcweir virtual void fill_description_section(CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list) = 0; 89cdf0e10cSrcweir 90cdf0e10cSrcweir virtual void fill_origin_section( CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list); 91cdf0e10cSrcweir 92cdf0e10cSrcweir private: 93cdf0e10cSrcweir std::string document_name_; 94cdf0e10cSrcweir CMetaInfoReader* meta_info_accessor_; 95cdf0e10cSrcweir 96cdf0e10cSrcweir friend document_statistic_reader_ptr create_document_statistic_reader( 97cdf0e10cSrcweir 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: 107cdf0e10cSrcweir writer_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor); 108cdf0e10cSrcweir 109cdf0e10cSrcweir virtual void fill_description_section(CMetaInfoReader *meta_info_accessor, statistic_group_list_t* group_list); 110cdf0e10cSrcweir 111cdf0e10cSrcweir friend document_statistic_reader_ptr create_document_statistic_reader( 112cdf0e10cSrcweir 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: 122cdf0e10cSrcweir calc_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor); 123cdf0e10cSrcweir 124cdf0e10cSrcweir virtual void fill_description_section( CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list); 125cdf0e10cSrcweir 126cdf0e10cSrcweir friend document_statistic_reader_ptr create_document_statistic_reader( 127cdf0e10cSrcweir 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: 137cdf0e10cSrcweir draw_impress_math_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor); 138cdf0e10cSrcweir 139cdf0e10cSrcweir virtual void fill_description_section(CMetaInfoReader *meta_info_accessor, statistic_group_list_t* group_list); 140cdf0e10cSrcweir 141cdf0e10cSrcweir friend document_statistic_reader_ptr create_document_statistic_reader( 142cdf0e10cSrcweir const std::string& document_name, CMetaInfoReader* meta_info_accessor); 143cdf0e10cSrcweir }; 144cdf0e10cSrcweir 145cdf0e10cSrcweir #endif 146