Go to the documentation of this file.
10 #ifndef IWAFIELD_H_INCLUDED
11 #define IWAFIELD_H_INCLUDED
17 #include <boost/container/deque.hpp>
18 #include <boost/optional.hpp>
57 virtual std::size_t
size()
const = 0;
60 virtual bool is()
const = 0;
61 operator bool()
const;
72 template<IWAField::Tag TagV,
typename ValueT,
typename Reader>
99 bool is()
const override
107 throw std::logic_error(
"the field is unset");
118 std::size_t
size()
const override
126 throw std::out_of_range(
"index is out of range");
170 const long start = input->tell();
171 while (!input->isEnd() && (length >
static_cast<unsigned long>(input->tell() -
start)))
189 template<IWAField::Tag TagV,
typename ValueT,
typename Reader>
195 template<IWAField::Tag TagV,
typename ValueT,
typename Reader>
198 return bool(field) ? field.
get() :
value;
201 template<IWAField::Tag TagV,
typename ValueT,
typename Reader,
typename DefaultValueT>
204 return bool(field) ? field.
get() : ValueT(
value);
@ TAG_SINT32
Definition: IWAField.h:35
@ name
Definition: IWORKToken.h:585
container_type::const_reverse_iterator const_reverse_iterator
Definition: IWAField.h:82
const IWAMessageField & message(std::size_t field) const
Definition: IWAField.cpp:70
detail::IWAFieldImpl< IWAField::TAG_FIXED64, uint64_t, IWAReader::Fixed64 > IWAFixed64Field
Definition: IWAField.h:213
@ NS_URI_SL
Definition: PAG1Token.h:77
virtual void parse(const RVNGInputStreamPtr_t &input, unsigned long length, bool allowEmpty)=0
@ end
Definition: IWORKToken.h:193
Definition: IWORKBezierElement.cpp:21
EtonyekDocument::Type m_type
Definition: EtonyekDocument.cpp:78
IWAFieldImpl()
Definition: IWAField.h:85
std::shared_ptr< IWAField > IWAFieldPtr_t
Definition: IWAField.h:67
@ pos
Definition: IWORKToken.h:599
@ TAG_INT64
Definition: IWAField.h:32
@ format
Definition: IWORKToken.h:537
std::unique_ptr< xmlTextReader, void(*)(xmlTextReaderPtr)> xmlReaderForStream(const RVNGInputStreamPtr_t &input)
Definition: libetonyek_xml.cpp:56
Tag
Definition: IWAField.h:30
bool empty() const override
Definition: IWAField.h:113
const IWABoolField & bool_(std::size_t field) const
Definition: IWAMessage.cpp:142
const ValueT & const_reference_type
Definition: IWAField.h:80
@ dict
Definition: KEY1Token.h:51
virtual Tag tag() const =0
#define ETONYEK_DEBUG_MSG(M)
Definition: libetonyek_utils.h:54
container_type m_values
Definition: IWAField.h:184
@ data
Definition: IWORKToken.h:178
const boost::optional< value_type > optional() const
Definition: IWAField.h:159
RVNGInputStreamPtr_t m_package
Definition: EtonyekDocument.cpp:75
detail::IWAFieldImpl< IWAField::TAG_UINT64, uint64_t, IWAReader::UInt64 > IWAUInt64Field
Definition: IWAField.h:208
const IWABytesField & bytes(std::size_t field) const
@ none
Definition: IWORKToken.h:674
RVNGInputStreamPtr_t m_input
Definition: EtonyekDocument.cpp:74
@ TAG_ENUM
Definition: IWAField.h:38
const IWADoubleField & double_(std::size_t field) const
Definition: IWAField.cpp:60
const IWASInt64Field & sint64(std::size_t field) const
Definition: IWAField.cpp:45
const IWAFixed32Field & fixed32(std::size_t field) const
Definition: IWAMessage.cpp:172
detail::IWAFieldImpl< IWAField::TAG_DOUBLE, double, IWAReader::Double > IWADoubleField
Definition: IWAField.h:214
virtual std::size_t size() const =0
RVNGInputStreamPtr_t m_fragments
Definition: EtonyekDocument.cpp:76
detail::IWAFieldImpl< IWAField::TAG_BOOL, bool, IWAReader::Bool > IWABoolField
Definition: IWAField.h:211
const char * char_cast(const char *const c)
Definition: libetonyek_xml.cpp:118
const_reverse_iterator rend() const
Definition: IWAField.h:145
@ NS_URI_LS
Definition: NUM1Token.h:55
const IWAFixed64Field & fixed64(std::size_t field) const
Definition: IWAField.cpp:55
const IWAUInt32Field & uint32(std::size_t field) const
Definition: IWAMessage.cpp:122
virtual ~IWAField()=0
Definition: IWAField.cpp:16
Definition: IWAField.h:223
@ start
Definition: IWORKToken.h:412
@ TAG_INT32
Definition: IWAField.h:31
virtual bool empty() const =0
@ TAG_DOUBLE
Definition: IWAField.h:41
const IWAStringField & string(std::size_t field) const
Definition: IWAMessage.cpp:157
EtonyekDocument::Confidence m_confidence
Definition: EtonyekDocument.cpp:77
detail::IWAFieldImpl< IWAField::TAG_SINT64, int64_t, IWAReader::SInt64 > IWASInt64Field
Definition: IWAField.h:210
@ header
Definition: IWORKToken.h:256
detail::IWAFieldImpl< IWAField::TAG_FIXED32, uint32_t, IWAReader::Fixed32 > IWAFixed32Field
Definition: IWAField.h:219
@ string
Definition: IWORKToken.h:418
@ TAG_FIXED64
Definition: IWAField.h:39
const IWABoolField & bool_(std::size_t field) const
Definition: IWAField.cpp:50
const std::deque< value_type > repeated() const
Definition: IWAField.h:153
@ TAG_FIXED32
Definition: IWAField.h:45
const IWAMessageField & message(std::size_t field) const
Definition: IWAMessage.cpp:167
@ path
Definition: IWORKToken.h:365
const_iterator begin() const
Definition: IWAField.h:130
const IWAFloatField & float_(std::size_t field) const
Definition: IWAField.cpp:80
detail::IWAFieldImpl< IWAField::TAG_UINT32, uint32_t, IWAReader::UInt32 > IWAUInt32Field
Definition: IWAField.h:207
ValueT & reference_type
Definition: IWAField.h:79
const IWASInt32Field & sint32(std::size_t field) const
Definition: IWAField.cpp:40
@ value
Definition: IWORKToken.h:631
detail::IWAFieldImpl< IWAField::TAG_FLOAT, float, IWAReader::Float > IWAFloatField
Definition: IWAField.h:220
const IWAFixed32Field & fixed32(std::size_t field) const
Definition: IWAField.cpp:75
const IWAFloatField & float_(std::size_t field) const
Definition: IWAMessage.cpp:177
@ TAG_UINT64
Definition: IWAField.h:34
const_reference_type get() const
Definition: IWAField.h:104
const IWAFixed64Field & fixed64(std::size_t field) const
Definition: IWAMessage.cpp:147
Definition: IWAMessage.h:22
@ type
Definition: IWORKToken.h:493
@ presentation
Definition: KEY1Token.h:77
Definition: IWAField.h:74
const IWAUInt64Field & uint64(std::size_t field) const
Definition: IWAMessage.cpp:127
@ index
Definition: IWORKToken.h:571
@ document
Definition: NUM1Token.h:34
boost::container::deque< ValueT > container_type
Definition: IWAField.h:75
const IWADoubleField & double_(std::size_t field) const
Definition: IWAMessage.cpp:152
container_type::const_iterator const_iterator
Definition: IWAField.h:81
@ TAG_STRING
Definition: IWAField.h:42
detail::IWAFieldImpl< IWAField::TAG_BYTES, RVNGInputStreamPtr_t, IWAReader::Bytes > IWABytesField
Definition: IWAField.h:217
@ TAG_UINT32
Definition: IWAField.h:33
@ TAG_MESSAGE
Definition: IWAField.h:44
const IWASInt32Field & sint32(std::size_t field) const
Definition: IWAMessage.cpp:132
@ i
Definition: KEY2Token.h:101
const ValueT & get_optional_value_or(const detail::IWAFieldImpl< TagV, ValueT, Reader > &field, const ValueT &value)
Definition: IWAField.h:196
@ TAG_SINT64
Definition: IWAField.h:36
const_reverse_iterator rbegin() const
Definition: IWAField.h:140
@ NS_URI_KEY
Definition: KEY1Token.h:248
ValueT value_type
Definition: IWAField.h:78
bool operator!() const
Definition: IWAField.cpp:25
virtual bool is() const =0
std::shared_ptr< librevenge::RVNGInputStream > RVNGInputStreamPtr_t
Definition: libetonyek_utils.h:82
const IWAUInt64Field & uint64(std::size_t field) const
Definition: IWAField.cpp:35
Format m_format
Definition: EtonyekDocument.cpp:79
void parse(const RVNGInputStreamPtr_t &input, const unsigned long length, const bool allowEmpty) override
Definition: IWAField.h:166
const_iterator end() const
Definition: IWAField.h:135
const ValueT & get(const detail::IWAFieldImpl< TagV, ValueT, Reader > &field)
Definition: IWAField.h:190
const IWAUInt32Field & uint32(std::size_t field) const
Definition: IWAField.cpp:30
detail::IWAFieldImpl< IWAField::TAG_SINT32, int32_t, IWAReader::SInt32 > IWASInt32Field
Definition: IWAField.h:209
const IWAStringField & string(std::size_t field) const
Definition: IWAField.cpp:65
@ TAG_BYTES
Definition: IWAField.h:43
@ TAG_SFIXED32
Definition: IWAField.h:46
const IWORKTokenizer & getTokenizer()
Definition: IWORKToken.cpp:57
detail::IWAFieldImpl< IWAField::TAG_STRING, std::string, IWAReader::String > IWAStringField
Definition: IWAField.h:216
const IWASInt64Field & sint64(std::size_t field) const
Definition: IWAMessage.cpp:137
const_reference_type operator[](const std::size_t index) const
Definition: IWAField.h:123
@ top
Definition: IWORKToken.h:627
@ TAG_FLOAT
Definition: IWAField.h:47
std::size_t size() const override
Definition: IWAField.h:118
@ TAG_SFIXED64
Definition: IWAField.h:40
@ TAG_BOOL
Definition: IWAField.h:37
Definition: IWAField.h:27
uint64_t readUVar(const RVNGInputStreamPtr_t &input)
Definition: libetonyek_utils.cpp:108
bool is() const override
Definition: IWAField.h:99
IWAField::Tag tag() const override
Definition: IWAField.h:92
Generated for libetonyek by
doxygen 1.8.20