/src/libetonyek/src/lib/IWORKXMLContextBase.h
Line | Count | Source |
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 IWORKXMLCONTEXTBASE_H_INCLUDED |
11 | | #define IWORKXMLCONTEXTBASE_H_INCLUDED |
12 | | |
13 | | #include <boost/enable_shared_from_this.hpp> |
14 | | #include <boost/optional.hpp> |
15 | | |
16 | | #include "IWORKXMLContext.h" |
17 | | #include "IWORKTypes_fwd.h" |
18 | | |
19 | | namespace libetonyek |
20 | | { |
21 | | |
22 | | class IWORKXMLParserState; |
23 | | |
24 | | class IWORKCollector; |
25 | | |
26 | | template<class Base, class State, class Collector = IWORKCollector> |
27 | | class IWORKXMLContextBase : public Base |
28 | | { |
29 | | public: |
30 | | explicit IWORKXMLContextBase(State &state) |
31 | 0 | : Base(state) |
32 | 0 | , m_state(state) |
33 | 0 | { |
34 | 0 | } Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::KEY1ParserState, libetonyek::KEYCollector>::IWORKXMLContextBase(libetonyek::KEY1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKDiscardContext, libetonyek::KEY1ParserState, libetonyek::KEYCollector>::IWORKXMLContextBase(libetonyek::KEY1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::IWORKXMLContextBase(libetonyek::KEY2ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesheetBase, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::IWORKXMLContextBase(libetonyek::KEY2ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::IWORKXMLContextBase(libetonyek::KEY2ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::IWORKXMLContextBase(libetonyek::IWORKXMLParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKDiscardContext, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::IWORKXMLContextBase(libetonyek::KEY2ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::IWORKXMLContextBase(libetonyek::IWORKXMLParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::IWORKXMLContextBase(libetonyek::NUM1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesheetBase, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::IWORKXMLContextBase(libetonyek::NUM1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKDiscardContext, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::IWORKXMLContextBase(libetonyek::NUM1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKGroupElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesheetBase, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKDiscardContext, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKShapeContext, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKTextElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKTextStorageElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKTextBodyElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKPElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKLinkElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKSpanElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKLayoutElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase(libetonyek::PAG1ParserState&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextMixed, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::IWORKXMLContextBase(libetonyek::IWORKXMLParserState&) |
35 | | |
36 | | template<typename T> |
37 | | IWORKXMLContextBase(State &state, const T &a) |
38 | 0 | : Base(state, a) |
39 | 0 | , m_state(state) |
40 | 0 | { |
41 | 0 | } Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesContext, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::IWORKXMLContextBase<bool>(libetonyek::KEY2ParserState&, bool const&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesContext, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::IWORKXMLContextBase<bool>(libetonyek::NUM1ParserState&, bool const&) Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesContext, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::IWORKXMLContextBase<bool>(libetonyek::PAG1ParserState&, bool const&) |
42 | | |
43 | | State &getState() |
44 | 0 | { |
45 | 0 | return m_state; |
46 | 0 | } Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::KEY1ParserState, libetonyek::KEYCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesContext, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesheetBase, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKDiscardContext, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesContext, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesheetBase, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKDiscardContext, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKGroupElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesContext, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKStylesheetBase, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKDiscardContext, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKShapeContext, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKTextElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKTextStorageElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKTextBodyElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKPElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKSpanElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKLayoutElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextMixed, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::getState() Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::getState() |
47 | | |
48 | | protected: |
49 | | Collector &getCollector() const |
50 | 0 | { |
51 | 0 | return m_state.getCollector(); |
52 | 0 | } Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::KEY1ParserState, libetonyek::KEYCollector>::getCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::getCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::getCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::getCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKTextStorageElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKPElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::getCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::getCollector() const |
53 | | |
54 | | int getToken(const char *const value) const |
55 | 0 | { |
56 | 0 | return m_state.getTokenizer().getId(value); |
57 | 0 | } Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::getToken(char const*) const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::getToken(char const*) const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::getToken(char const*) const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::getToken(char const*) const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::getToken(char const*) const |
58 | | |
59 | | bool isCollector() const |
60 | 0 | { |
61 | 0 | return m_state.m_enableCollector; |
62 | 0 | } Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::KEY1ParserState, libetonyek::KEYCollector>::isCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::isCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::KEY2ParserState, libetonyek::KEYCollector>::isCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::NUM1ParserState, libetonyek::NUMCollector>::isCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::isCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKTextStorageElement, libetonyek::PAG1ParserState, libetonyek::PAGCollector>::isCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextElement, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::isCollector() const Unexecuted instantiation: libetonyek::IWORKXMLContextBase<libetonyek::IWORKXMLContextEmpty, libetonyek::IWORKXMLParserState, libetonyek::IWORKCollector>::isCollector() const |
63 | | |
64 | | protected: |
65 | | State &m_state; |
66 | | }; |
67 | | |
68 | | class IWORKXMLContextMinimal : public IWORKXMLContext |
69 | | { |
70 | | protected: |
71 | | IWORKXMLContextMinimal(); |
72 | | |
73 | | void startOfElement() override; |
74 | | void endOfElement() override; |
75 | | }; |
76 | | |
77 | | class IWORKXMLContextElement : public IWORKXMLContextMinimal, public boost::enable_shared_from_this<IWORKXMLContextElement> |
78 | | { |
79 | | protected: |
80 | | explicit IWORKXMLContextElement(IWORKXMLParserState &); |
81 | | |
82 | | void attribute(int name, const char *value) override; |
83 | | void text(const char *value) override; |
84 | | |
85 | | const boost::optional<ID_t> &getId() const; |
86 | | void setId(const char *value); |
87 | | |
88 | | private: |
89 | | boost::optional<ID_t> m_id; |
90 | | }; |
91 | | |
92 | | class IWORKXMLContextText : public IWORKXMLContextMinimal |
93 | | { |
94 | | protected: |
95 | | explicit IWORKXMLContextText(IWORKXMLParserState &); |
96 | | |
97 | | IWORKXMLContextPtr_t element(int token) override; |
98 | | }; |
99 | | |
100 | | class IWORKXMLContextMixed : public IWORKXMLContextMinimal, public boost::enable_shared_from_this<IWORKXMLContextMixed> |
101 | | { |
102 | | protected: |
103 | | explicit IWORKXMLContextMixed(IWORKXMLParserState &); |
104 | | }; |
105 | | |
106 | | class IWORKXMLContextEmpty : public IWORKXMLContextMinimal |
107 | | { |
108 | | protected: |
109 | | explicit IWORKXMLContextEmpty(IWORKXMLParserState &); |
110 | | |
111 | | void attribute(int name, const char *value) override; |
112 | | IWORKXMLContextPtr_t element(int token) override; |
113 | | void text(const char *value) override; |
114 | | |
115 | | const boost::optional<ID_t> &getId() const; |
116 | | void setId(const char *value); |
117 | | const boost::optional<ID_t> &getRef() const; |
118 | | |
119 | | private: |
120 | | boost::optional<ID_t> m_id; |
121 | | boost::optional<ID_t> m_ref; |
122 | | }; |
123 | | |
124 | | typedef IWORKXMLContextBase<IWORKXMLContextElement, IWORKXMLParserState> IWORKXMLElementContextBase; |
125 | | typedef IWORKXMLContextBase<IWORKXMLContextText, IWORKXMLParserState> IWORKXMLTextContextBase; |
126 | | typedef IWORKXMLContextBase<IWORKXMLContextMixed, IWORKXMLParserState> IWORKXMLMixedContextBase; |
127 | | typedef IWORKXMLContextBase<IWORKXMLContextEmpty, IWORKXMLParserState> IWORKXMLEmptyContextBase; |
128 | | |
129 | | } |
130 | | |
131 | | #endif // IWORKXMLCONTEXTBASE_H_INCLUDED |
132 | | |
133 | | /* vim:set shiftwidth=2 softtabstop=2 expandtab: */ |