-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathFCMDoc.cpp
135 lines (115 loc) · 3 KB
/
FCMDoc.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/******************************************************************************
** (C) Chris Oldwood
**
** MODULE: FCMDOC.CPP
** COMPONENT: The Application.
** DESCRIPTION: CFCMDoc class definition.
**
*******************************************************************************
*/
#include "Common.hpp"
#include "FCMDoc.hpp"
#include <WCL/IInputStream.hpp>
#include <WCL/IOutputStream.hpp>
#include <WCL/StreamException.hpp>
/******************************************************************************
**
** File details.
**
*******************************************************************************
*/
// The file type magic number.
const uint32 FILE_FORMAT = 0x464D4346; // "FCMF"
// The current format version.
const uint32 FILE_VERSION = 0x00000A01; // Alpha #1
/******************************************************************************
** Method: Constructor.
**
** Description: .
**
** Parameters: None.
**
** Returns: Nothing.
**
*******************************************************************************
*/
CFCMDoc::CFCMDoc()
{
}
/******************************************************************************
** Method: Destructor.
**
** Description: .
**
** Parameters: None.
**
** Returns: Nothing.
**
*******************************************************************************
*/
CFCMDoc::~CFCMDoc()
{
}
/******************************************************************************
** Method: Read()
**
** Description: Read the data from a stream.
**
** Parameters: rStream The stream to read from.
**
** Returns: Nothing.
**
*******************************************************************************
*/
void CFCMDoc::Read(WCL::IInputStream& rStream)
{
uint32 iFormat;
uint16 iVersion;
// Read the format and version.
rStream >> iFormat;
rStream >> iVersion;
// Check the format and version.
if (iFormat != FILE_FORMAT)
rStream.Throw(CStreamException::E_FORMAT_INVALID, ERROR_FILE_CORRUPT);
if (iVersion != FILE_VERSION)
rStream.Throw(CStreamException::E_VERSION_INVALID, NO_ERROR);
// Read the database data.
m_oDB.Read(rStream);
}
/******************************************************************************
** Method: Write()
**
** Description: Write the data to a stream.
**
** Parameters: rStream The stream to write to.
**
** Returns: Nothing.
**
*******************************************************************************
*/
void CFCMDoc::Write(WCL::IOutputStream& rStream)
{
uint32 iFormat = FILE_FORMAT;
uint16 iVersion = FILE_VERSION;
// Write the format and version.
rStream << iFormat;
rStream << iVersion;
// Write the database data.
m_oDB.Write(rStream);
}
/******************************************************************************
** Methods: Modified()
**
** Description: Query if the data has been modified.
**
** Parameters: None.
**
** Returns: true or false.
**
*******************************************************************************
*/
bool CFCMDoc::Modified() const
{
// Check the database tables.
return m_oDB.Modified();
}