1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* 3 * This file is part of the libetonyek project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 */ 9 10 #ifndef IWORKTABULARMODELELEMENT_H_INCLUDED 11 #define IWORKTABULARMODELELEMENT_H_INCLUDED 12 13 #include <map> 14 #include <string> 15 #include <utility> 16 17 #include <boost/optional.hpp> 18 19 #include "IWORKStyle_fwd.h" 20 21 #include "IWORKXMLContextBase.h" 22 23 namespace libetonyek 24 { 25 class IWORKTable; 26 27 class IWORKTabularModelElement : public IWORKXMLElementContextBase 28 { 29 public: 30 explicit IWORKTabularModelElement(IWORKXMLParserState &state, bool isDefinition=false); 31 32 private: 33 void attribute(int name, const char *value) override; 34 void startOfElement() override; 35 IWORKXMLContextPtr_t element(int name) override; 36 void endOfElement() override; 37 38 private: 39 void sendStyle(const IWORKStylePtr_t &style, const std::shared_ptr<IWORKTable> &table); 40 41 private: 42 bool m_isDefinition; 43 boost::optional<ID_t> m_id; 44 boost::optional<std::string> m_tableName; 45 boost::optional<std::string> m_tableId; 46 boost::optional<ID_t> m_styleRef; 47 boost::optional<unsigned> m_headerColumns; 48 boost::optional<unsigned> m_headerRows; 49 boost::optional<unsigned> m_footerRows; 50 std::map<std::pair<unsigned,unsigned>,ID_t> m_coordinateCommentRefMap; 51 }; 52 53 } 54 55 #endif // IWORKTABULARMODELELEMENT_H_INCLUDED 56 57 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */ 58