IWORKNumberElement.h Source File documentation

IWORKNumberElement.h
Go to the documentation of this file.
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 IWORKNUMBERELEMENT_H_INCLUDED
11 #define IWORKNUMBERELEMENT_H_INCLUDED
12
13 #include "IWORKNumberConverter.h"
14 #include "IWORKToken.h"
15 #include "IWORKXMLContextBase.h"
16
17 namespace libetonyek
18 {
19
20 template<typename T>
21 class IWORKNumberElement : public IWORKXMLEmptyContextBase
22 {
23 public:
24 IWORKNumberElement(IWORKXMLParserState &state, boost::optional<T> &value);
25
26 private:
27 void attribute(int name, const char *value) override;
28
29 private:
30 boost::optional<T> &m_value;
31 };
32
33 template<typename T>
34 IWORKNumberElement<T>::IWORKNumberElement(IWORKXMLParserState &state, boost::optional<T> &value)
35 : IWORKXMLEmptyContextBase(state)
36 , m_value(value)
37 {
38 }
39
40 template<typename T>
41 void IWORKNumberElement<T>::attribute(const int name, const char *const value)
42 {
43 switch (name)
44 {
45 case IWORKToken::NS_URI_SFA | IWORKToken::number :
46 m_value = IWORKNumberConverter<T>::convert(value);
47 break;
48 }
49 }
50
51 }
52
53 #endif // IWORKNUMBERELEMENT_H_INCLUDED
54
55 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
libetonyek
Definition: IWORKBezierElement.cpp:18
IWORKXMLContextBase.h
libetonyek::IWORKNumberConverter::convert
static boost::optional< T > convert(const char *value)
Definition: IWORKNumberConverter.cpp:20
libetonyek::IWORKToken::number
Definition: IWORKToken.h:211
libetonyek::IWORKNumberElement
Definition: IWORKNumberElement.h:21
m_value
optional< string > & m_value
Definition: IWORKMetadataElement.cpp:37
libetonyek::IWORKToken::NS_URI_SFA
Definition: IWORKToken.h:419
name
const char * name
Definition: IWORKToken.cpp:43
IWORKNumberConverter.h
libetonyek::IWORKXMLContextBase
Definition: IWORKXMLContextBase.h:27
libetonyek::IWORKXMLParserState
Definition: IWORKXMLParserState.h:30
libetonyek::IWORKNumberElement::IWORKNumberElement
IWORKNumberElement(IWORKXMLParserState &state, boost::optional< T > &value)
Definition: IWORKNumberElement.h:34
IWORKToken.h
libetonyek::IWORKNumberElement::m_value
boost::optional< T > & m_value
Definition: IWORKNumberElement.h:30
libetonyek::IWORKNumberElement::attribute
void attribute(int name, const char *value) override
Definition: IWORKNumberElement.h:41