RVNGPropertyList.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2 /* librevenge
3  * Version: MPL 2.0 / LGPLv2.1+
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  * Major Contributor(s):
10  * Copyright (C) 2004 William Lachance (wrlach@gmail.com)
11  * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch)
12  *
13  * For minor contributions see the git repository.
14  *
15  * Alternatively, the contents of this file may be used under the terms
16  * of the GNU Lesser General Public License Version 2.1 or later
17  * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
18  * applicable instead of those above.
19  */
20 
21 #ifndef RVNGPROPERTYLIST_H
22 #define RVNGPROPERTYLIST_H
23 
24 #include "librevenge-api.h"
25 
26 #include "RVNGProperty.h"
27 
28 namespace librevenge
29 {
30 
31 // we use the pimpl pattern so we don't expose any STL symbols to the rest of
32 // the world.. yes, this is quite annoying.
33 
34 class RVNGPropertyListImpl;
35 class RVNGPropertyListIterImpl;
36 class RVNGPropertyListVector;
37 
39 {
40 public:
43  virtual ~RVNGPropertyList();
44  void insert(const char *name, RVNGProperty *prop);
45  void insert(const char *name, const char *val);
46  void insert(const char *name, const int val);
47  void insert(const char *name, const bool val);
48  void insert(const char *name, const RVNGString &val);
49  void insert(const char *name, const double val, const RVNGUnit units = RVNG_INCH);
50  void insert(const char *name, const unsigned char *buffer, const unsigned long bufferSize);
51  void insert(const char *name, const RVNGBinaryData &data);
52  void insert(const char *name, const RVNGPropertyListVector &vec);
53  void remove(const char *name);
54  void clear();
55  bool empty() const;
56 
57  const RVNGProperty *operator[](const char *name) const;
58  const RVNGPropertyListVector *child(const char *name) const;
59  const RVNGPropertyList &operator=(const RVNGPropertyList &propList);
60 
61  RVNGString getPropString() const;
62 
64  {
65  public:
66  Iter(const RVNGPropertyList &propList);
67  virtual ~Iter();
68  void rewind();
69  bool next();
70  bool last();
71  const RVNGProperty *operator()() const;
72  const char *key() const;
73  const RVNGPropertyListVector *child() const;
74  private:
76  Iter(const Iter &);
77  Iter &operator=(const Iter &);
78  };
79  friend class RVNGPropertyList::Iter;
80 
81 private:
83 };
84 
85 }
86 
87 #endif /* RVNGPROPERTYLIST_H */
88 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
Definition: RVNGPropertyList.cpp:399
Definition: RVNGBinaryData.cpp:38
Definition: RVNGPropertyList.cpp:153
RVNGUnit
Definition: RVNGProperty.h:30
RVNGPropertyListIterImpl * m_iterImpl
Definition: RVNGPropertyList.h:75
Definition: RVNGProperty.h:32
Definition: RVNGPropertyList.h:63
Definition: RVNGPropertyListVector.h:34
#define REVENGE_API
Definition: librevenge-api.h:34
A representation of arbitrary binary data.
Definition: RVNGBinaryData.h:36
RVNGPropertyListImpl * m_impl
Definition: RVNGPropertyList.h:82
Definition: RVNGProperty.h:30
Definition: RVNGPropertyList.h:38
UTF-8 string.
Definition: RVNGString.h:33

Generated for librevenge by doxygen 1.8.14