Coverage Report

Created: 2026-03-12 06:42

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libmwaw/src/lib/ClarisWksDatabase.hxx
Line
Count
Source
1
/* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */
2
3
/* libmwaw
4
* Version: MPL 2.0 / LGPLv2+
5
*
6
* The contents of this file are subject to the Mozilla Public License Version
7
* 2.0 (the "License"); you may not use this file except in compliance with
8
* the License or as specified alternatively below. You may obtain a copy of
9
* the License at http://www.mozilla.org/MPL/
10
*
11
* Software distributed under the License is distributed on an "AS IS" basis,
12
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
* for the specific language governing rights and limitations under the
14
* License.
15
*
16
* Major Contributor(s):
17
* Copyright (C) 2002 William Lachance (wrlach@gmail.com)
18
* Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
19
* Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
20
* Copyright (C) 2006, 2007 Andrew Ziem
21
* Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
22
*
23
*
24
* All Rights Reserved.
25
*
26
* For minor contributions see the git repository.
27
*
28
* Alternatively, the contents of this file may be used under the terms of
29
* the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
30
* in which case the provisions of the LGPLv2+ are applicable
31
* instead of those above.
32
*/
33
34
/*
35
 * Parser to Claris Works text document ( database part )
36
 *
37
 */
38
#ifndef CLARIS_WKS_DATABASE
39
#  define CLARIS_WKS_DATABASE
40
41
#include <list>
42
#include <string>
43
#include <vector>
44
45
#include "MWAWEntry.hxx"
46
#include "MWAWSubDocument.hxx"
47
48
#include "MWAWDebug.hxx"
49
#include "MWAWInputStream.hxx"
50
51
#include "MWAWParser.hxx"
52
53
#include "ClarisWksStruct.hxx"
54
55
namespace ClarisWksDatabaseInternal
56
{
57
struct Database;
58
struct Field;
59
struct State;
60
}
61
62
class ClarisWksDocument;
63
class ClarisWksParser;
64
class ClarisWksStyleManager;
65
66
/** \brief the main class to read the text part of Claris Works file
67
 *
68
 *
69
 *
70
 */
71
class ClarisWksDatabase
72
{
73
  friend class ClarisWksParser;
74
75
public:
76
  //! constructor
77
  explicit ClarisWksDatabase(ClarisWksDocument &document);
78
  //! destructor
79
  virtual ~ClarisWksDatabase();
80
81
  /** returns the file version */
82
  int version() const;
83
84
  /** returns the number of pages */
85
  int numPages() const;
86
87
  //! reads the zone Text DSET
88
  std::shared_ptr<ClarisWksStruct::DSET> readDatabaseZone
89
  (ClarisWksStruct::DSET const &zone, MWAWEntry const &entry, bool &complete);
90
  //! check if we can send a database as graphic
91
  bool canSendDatabaseAsGraphic(int) const
92
14.5k
  {
93
14.5k
    return false;
94
14.5k
  }
95
  //! sends the zone data to the listener (if it exists )
96
  bool sendDatabase(int number, MWAWListenerPtr listener);
97
98
protected:
99
  //
100
  // Intermediate level
101
  //
102
  //! try to read the database structure
103
  bool readFields(ClarisWksDatabaseInternal::Database &dBase);
104
105
  //! try to read the default structure
106
  bool readDefaults(ClarisWksDatabaseInternal::Database &dBase);
107
108
  //! try to read the layout structures
109
  bool readLayout(ClarisWksDatabaseInternal::Database &dBase);
110
111
  //
112
  // low level
113
  //
114
115
private:
116
  ClarisWksDatabase(ClarisWksDatabase const &) = delete;
117
  ClarisWksDatabase &operator=(ClarisWksDatabase const &) = delete;
118
119
protected:
120
  //
121
  // data
122
  //
123
124
  //! the document
125
  ClarisWksDocument &m_document;
126
127
  //! the parser state
128
  MWAWParserStatePtr m_parserState;
129
130
  //! the state
131
  std::shared_ptr<ClarisWksDatabaseInternal::State> m_state;
132
133
  //! the main parser;
134
  MWAWParser *m_mainParser;
135
};
136
#endif
137
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab: