/src/libwpd/src/lib/WP6VariableLengthGroup.h
Line | Count | Source |
1 | | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ |
2 | | /* libwpd |
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) 2002 William Lachance (wrlach@gmail.com) |
11 | | * Copyright (C) 2002 Marc Maurer (uwog@uwog.net) |
12 | | * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch) |
13 | | * |
14 | | * For minor contributions see the git repository. |
15 | | * |
16 | | * Alternatively, the contents of this file may be used under the terms |
17 | | * of the GNU Lesser General Public License Version 2.1 or later |
18 | | * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are |
19 | | * applicable instead of those above. |
20 | | * |
21 | | * For further information visit http://libwpd.sourceforge.net |
22 | | */ |
23 | | |
24 | | /* "This product is not manufactured, approved, or supported by |
25 | | * Corel Corporation or Corel Corporation Limited." |
26 | | */ |
27 | | |
28 | | #ifndef WP6VARIABLELENGTHGROUP_H |
29 | | #define WP6VARIABLELENGTHGROUP_H |
30 | | |
31 | | #include <vector> |
32 | | |
33 | | #include "WP6Part.h" |
34 | | |
35 | | class WP6VariableLengthGroup_SubGroup |
36 | | { |
37 | | public: |
38 | 288k | virtual ~WP6VariableLengthGroup_SubGroup() {} |
39 | | virtual void parse(WP6Listener *listener, const unsigned char numPrefixIDs, unsigned short const *prefixIDs) const = 0; |
40 | | }; |
41 | | |
42 | | class WP6VariableLengthGroup : public WP6Part |
43 | | { |
44 | | public: |
45 | | WP6VariableLengthGroup(); // WP6VariableLengthGroup should _never_ be constructed, only its inherited classes |
46 | | ~WP6VariableLengthGroup() override; |
47 | | |
48 | | static WP6VariableLengthGroup *constructVariableLengthGroup(librevenge::RVNGInputStream *input, WPXEncryption *encryption, const unsigned char groupID); |
49 | | |
50 | | static bool isGroupConsistent(librevenge::RVNGInputStream *input, WPXEncryption *encryption, const unsigned char groupID); |
51 | | |
52 | | protected: |
53 | | void _read(librevenge::RVNGInputStream *input, WPXEncryption *encryption); |
54 | 1.52k | virtual void _readContents(librevenge::RVNGInputStream * /* input */, WPXEncryption * /* encryption */) {} // we don't always need more information than that provided generically |
55 | | |
56 | | unsigned char getSubGroup() const |
57 | 1.08M | { |
58 | 1.08M | return m_subGroup; |
59 | 1.08M | } |
60 | | unsigned short getSize() const |
61 | 13.7k | { |
62 | 13.7k | return m_size; |
63 | 13.7k | } |
64 | | unsigned char getFlags() const |
65 | 90.6k | { |
66 | 90.6k | return m_flags; |
67 | 90.6k | } |
68 | | unsigned char getNumPrefixIDs() const |
69 | 481k | { |
70 | 481k | return m_prefixIDs.size();; |
71 | 0 | } |
72 | | const unsigned short *getPrefixIDs() const |
73 | 362k | { |
74 | 362k | return m_prefixIDs.data(); |
75 | 362k | } |
76 | | unsigned short getSizeNonDeletable() const |
77 | 145k | { |
78 | 145k | return m_sizeNonDeletable; |
79 | 145k | } |
80 | | unsigned short getSizeDeletable() const |
81 | 19.5k | { |
82 | 19.5k | return m_sizeDeletable; |
83 | 19.5k | } |
84 | | |
85 | | private: |
86 | | WP6VariableLengthGroup(const WP6VariableLengthGroup &); |
87 | | WP6VariableLengthGroup &operator=(const WP6VariableLengthGroup &); |
88 | | unsigned char m_subGroup; |
89 | | unsigned short m_size; |
90 | | unsigned char m_flags; |
91 | | std::vector<unsigned short> m_prefixIDs; |
92 | | unsigned short m_sizeNonDeletable; |
93 | | unsigned short m_sizeDeletable; |
94 | | }; |
95 | | |
96 | | #endif /* WP6VARIABLELENGTHGROUP_H */ |
97 | | /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */ |