VSDFieldList.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 libvisio 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 __VSDFIELDLIST_H__
11#define __VSDFIELDLIST_H__
12
13#include <memory>
14#include <vector>
15#include <map>
16#include <librevenge/librevenge.h>
18#include "VSDTypes.h"
19
20namespace libvisio
21{
22
23class VSDCollector;
24
26{
27public:
30 virtual void handle(VSDCollector *collector) const = 0;
31 virtual VSDFieldListElement *clone() = 0;
32 virtual librevenge::RVNGString getString(const std::map<unsigned, librevenge::RVNGString> &, unsigned defaultUnit) = 0;
33 virtual void setNameId(int) = 0;
34 virtual void setFormat(unsigned short) = 0;
35 virtual void setCellType(unsigned short) = 0;
36 virtual void setValue(double) = 0;
37};
38
40{
41public:
42 VSDTextField(unsigned id, unsigned level, int nameId, int formatStringId)
43 : m_id(id),
44 m_level(level),
45 m_nameId(nameId),
46 m_formatStringId(formatStringId) {}
47 ~VSDTextField() override {}
48 void handle(VSDCollector *collector) const override;
49 VSDFieldListElement *clone() override;
50 librevenge::RVNGString getString(const std::map<unsigned, librevenge::RVNGString> &strVec, unsigned defaultUnit) override;
51 void setNameId(int nameId) override;
52 void setFormat(unsigned short) override {}
53 void setCellType(unsigned short) override {}
54 void setValue(double) override {}
55private:
56 unsigned m_id, m_level;
58};
59
61{
62public:
63 VSDNumericField(unsigned id, unsigned level, unsigned short format, unsigned short cellType, double number, int formatStringId)
64 : m_id(id),
65 m_level(level),
66 m_format(format),
67 m_cell_type(cellType),
68 m_number(number),
69 m_formatStringId(formatStringId) {}
70 ~VSDNumericField() override {}
71 void handle(VSDCollector *collector) const override;
72 VSDFieldListElement *clone() override;
73 librevenge::RVNGString getString(const std::map<unsigned, librevenge::RVNGString> &, unsigned defaultUnit) override;
74 void setNameId(int) override {}
75 void setFormat(unsigned short format) override;
76 void setCellType(unsigned short cellType) override;
77 void setValue(double number) override;
78private:
79 librevenge::RVNGString datetimeToString(const char *format, double datetime);
80 unsigned m_id, m_level;
81 unsigned short m_format;
82 unsigned short m_cell_type;
83 double m_number;
85};
86
88{
89public:
91 VSDFieldList(const VSDFieldList &fieldList);
93 VSDFieldList &operator=(const VSDFieldList &fieldList);
94 void setElementsOrder(const std::vector<unsigned> &m_elementsOrder);
95 void addFieldList(unsigned id, unsigned level);
96 void addTextField(unsigned id, unsigned level, int nameId, int formatStringId);
97 void addNumericField(unsigned id, unsigned level, unsigned short format, unsigned short cellType, double number, int formatStringId);
98 void addClonedField(unsigned id);
99 void handle(VSDCollector *collector) const;
100 void clear();
101 unsigned long size() const
102 {
103 return (unsigned long)m_elements.size();
104 }
105 bool empty() const
106 {
107 return (m_elements.empty());
108 }
109 VSDFieldListElement *getElement(unsigned index);
110private:
111 std::map<unsigned, std::unique_ptr<VSDFieldListElement>> m_elements;
112 std::vector<unsigned> m_elementsOrder;
113 unsigned m_id, m_level;
114};
115
116} // namespace libvisio
117
118#endif // __VSDFIELDLIST_H__
119/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition VSDCollector.h:21
Definition VSDFieldList.h:26
virtual VSDFieldListElement * clone()=0
VSDFieldListElement()
Definition VSDFieldList.h:28
virtual librevenge::RVNGString getString(const std::map< unsigned, librevenge::RVNGString > &, unsigned defaultUnit)=0
virtual void handle(VSDCollector *collector) const =0
virtual void setValue(double)=0
virtual void setNameId(int)=0
virtual ~VSDFieldListElement()
Definition VSDFieldList.h:29
virtual void setCellType(unsigned short)=0
virtual void setFormat(unsigned short)=0
VSDFieldListElement * getElement(unsigned index)
Definition VSDFieldList.cpp:552
void setElementsOrder(const std::vector< unsigned > &m_elementsOrder)
Definition VSDFieldList.cpp:499
void addFieldList(unsigned id, unsigned level)
Definition VSDFieldList.cpp:506
~VSDFieldList()
Definition VSDFieldList.cpp:495
VSDFieldList & operator=(const VSDFieldList &fieldList)
Definition VSDFieldList.cpp:481
VSDFieldList()
Definition VSDFieldList.cpp:463
unsigned m_id
Definition VSDFieldList.h:113
unsigned long size() const
Definition VSDFieldList.h:101
void addNumericField(unsigned id, unsigned level, unsigned short format, unsigned short cellType, double number, int formatStringId)
Definition VSDFieldList.cpp:518
bool empty() const
Definition VSDFieldList.h:105
void clear()
Definition VSDFieldList.cpp:546
void addTextField(unsigned id, unsigned level, int nameId, int formatStringId)
Definition VSDFieldList.cpp:512
void addClonedField(unsigned id)
unsigned m_level
Definition VSDFieldList.h:113
std::map< unsigned, std::unique_ptr< VSDFieldListElement > > m_elements
Definition VSDFieldList.h:111
void handle(VSDCollector *collector) const
Definition VSDFieldList.cpp:524
std::vector< unsigned > m_elementsOrder
Definition VSDFieldList.h:112
librevenge::RVNGString datetimeToString(const char *format, double datetime)
Definition VSDFieldList.cpp:57
unsigned m_level
Definition VSDFieldList.h:80
int m_formatStringId
Definition VSDFieldList.h:84
~VSDNumericField() override
Definition VSDFieldList.h:70
unsigned m_id
Definition VSDFieldList.h:80
librevenge::RVNGString getString(const std::map< unsigned, librevenge::RVNGString > &, unsigned defaultUnit) override
Definition VSDFieldList.cpp:225
double m_number
Definition VSDFieldList.h:83
void setFormat(unsigned short format) override
Definition VSDFieldList.cpp:447
void setCellType(unsigned short cellType) override
Definition VSDFieldList.cpp:452
unsigned short m_cell_type
Definition VSDFieldList.h:82
void handle(VSDCollector *collector) const override
Definition VSDFieldList.cpp:45
VSDNumericField(unsigned id, unsigned level, unsigned short format, unsigned short cellType, double number, int formatStringId)
Definition VSDFieldList.h:63
void setValue(double number) override
Definition VSDFieldList.cpp:457
void setNameId(int) override
Definition VSDFieldList.h:74
VSDFieldListElement * clone() override
Definition VSDFieldList.cpp:50
unsigned short m_format
Definition VSDFieldList.h:81
unsigned m_id
Definition VSDFieldList.h:56
VSDFieldListElement * clone() override
Definition VSDFieldList.cpp:22
~VSDTextField() override
Definition VSDFieldList.h:47
void handle(VSDCollector *collector) const override
Definition VSDFieldList.cpp:17
void setNameId(int nameId) override
Definition VSDFieldList.cpp:39
int m_nameId
Definition VSDFieldList.h:57
librevenge::RVNGString getString(const std::map< unsigned, librevenge::RVNGString > &strVec, unsigned defaultUnit) override
Definition VSDFieldList.cpp:27
void setFormat(unsigned short) override
Definition VSDFieldList.h:52
int m_formatStringId
Definition VSDFieldList.h:57
VSDTextField(unsigned id, unsigned level, int nameId, int formatStringId)
Definition VSDFieldList.h:42
unsigned m_level
Definition VSDFieldList.h:56
void setValue(double) override
Definition VSDFieldList.h:54
void setCellType(unsigned short) override
Definition VSDFieldList.h:53
Definition libvisio_utils.h:49

Generated for libvisio by doxygen 1.14.0