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>
17 #include "VSDDocumentStructure.h"
18 #include "VSDTypes.h"
19 
20 namespace libvisio
21 {
22 
23 class VSDCollector;
24 
26 {
27 public:
29  virtual ~VSDFieldListElement() {}
30  virtual void handle(VSDCollector *collector) const = 0;
31  virtual VSDFieldListElement *clone() = 0;
32  virtual librevenge::RVNGString getString(const std::map<unsigned, librevenge::RVNGString> &) = 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 {
41 public:
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) override;
51  void setNameId(int nameId) override;
52  void setFormat(unsigned short) override {}
53  void setCellType(unsigned short) override {}
54  void setValue(double) override {}
55 private:
56  unsigned m_id, m_level;
58 };
59 
61 {
62 public:
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> &) 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;
78 private:
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 {
89 public:
90  VSDFieldList();
91  VSDFieldList(const VSDFieldList &fieldList);
92  ~VSDFieldList();
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);
110 private:
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: */
void addFieldList(unsigned id, unsigned level)
Definition: VSDFieldList.cpp:496
void setNameId(int) override
Definition: VSDFieldList.h:74
librevenge::RVNGString getString(const std::map< unsigned, librevenge::RVNGString > &) override
Definition: VSDFieldList.cpp:221
unsigned m_level
Definition: VSDFieldList.h:56
void setValue(double number) override
Definition: VSDFieldList.cpp:447
void addTextField(unsigned id, unsigned level, int nameId, int formatStringId)
Definition: VSDFieldList.cpp:502
void handle(VSDCollector *collector) const
Definition: VSDFieldList.cpp:514
~VSDNumericField() override
Definition: VSDFieldList.h:70
virtual void setValue(double)=0
unsigned m_id
Definition: VSDFieldList.h:113
virtual void setFormat(unsigned short)=0
VSDFieldListElement()
Definition: VSDFieldList.h:28
std::map< unsigned, std::unique_ptr< VSDFieldListElement > > m_elements
Definition: VSDFieldList.h:111
~VSDFieldList()
Definition: VSDFieldList.cpp:485
Definition: VSDFieldList.h:25
void addNumericField(unsigned id, unsigned level, unsigned short format, unsigned short cellType, double number, int formatStringId)
Definition: VSDFieldList.cpp:508
void setFormat(unsigned short) override
Definition: VSDFieldList.h:52
VSDFieldListElement * getElement(unsigned index)
Definition: VSDFieldList.cpp:542
void setFormat(unsigned short format) override
Definition: VSDFieldList.cpp:437
VSDTextField(unsigned id, unsigned level, int nameId, int formatStringId)
Definition: VSDFieldList.h:42
librevenge::RVNGString datetimeToString(const char *format, double datetime)
Definition: VSDFieldList.cpp:57
VSDNumericField(unsigned id, unsigned level, unsigned short format, unsigned short cellType, double number, int formatStringId)
Definition: VSDFieldList.h:63
virtual librevenge::RVNGString getString(const std::map< unsigned, librevenge::RVNGString > &)=0
virtual void setCellType(unsigned short)=0
void handle(VSDCollector *collector) const override
Definition: VSDFieldList.cpp:45
VSDFieldList & operator=(const VSDFieldList &fieldList)
Definition: VSDFieldList.cpp:471
unsigned short m_format
Definition: VSDFieldList.h:81
void addClonedField(unsigned id)
int m_formatStringId
Definition: VSDFieldList.h:84
Definition: VSDCollector.h:20
Definition: VSDFieldList.h:87
virtual void setNameId(int)=0
virtual void handle(VSDCollector *collector) const =0
int m_nameId
Definition: VSDFieldList.h:57
VSDFieldListElement * clone() override
Definition: VSDFieldList.cpp:50
librevenge::RVNGString getString(const std::map< unsigned, librevenge::RVNGString > &strVec) override
Definition: VSDFieldList.cpp:27
Definition: VSDFieldList.h:39
double m_number
Definition: VSDFieldList.h:83
void clear()
Definition: VSDFieldList.cpp:536
virtual VSDFieldListElement * clone()=0
void handle(VSDCollector *collector) const override
Definition: VSDFieldList.cpp:17
unsigned m_level
Definition: VSDFieldList.h:80
void setCellType(unsigned short cellType) override
Definition: VSDFieldList.cpp:442
bool empty() const
Definition: VSDFieldList.h:105
unsigned long size() const
Definition: VSDFieldList.h:101
VSDFieldListElement * clone() override
Definition: VSDFieldList.cpp:22
int m_formatStringId
Definition: VSDFieldList.h:57
VSDFieldList()
Definition: VSDFieldList.cpp:453
~VSDTextField() override
Definition: VSDFieldList.h:47
Definition: VSDFieldList.h:60
unsigned m_id
Definition: VSDFieldList.h:80
void setElementsOrder(const std::vector< unsigned > &m_elementsOrder)
Definition: VSDFieldList.cpp:489
void setNameId(int nameId) override
Definition: VSDFieldList.cpp:39
unsigned m_id
Definition: VSDFieldList.h:56
void setValue(double) override
Definition: VSDFieldList.h:54
virtual ~VSDFieldListElement()
Definition: VSDFieldList.h:29
void setCellType(unsigned short) override
Definition: VSDFieldList.h:53
unsigned short m_cell_type
Definition: VSDFieldList.h:82
unsigned m_level
Definition: VSDFieldList.h:113
std::vector< unsigned > m_elementsOrder
Definition: VSDFieldList.h:112

Generated for libvisio by doxygen 1.8.6