1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  *
21  */
22 
23 /*
24  * This code is based on Broken Sword 2.5 engine
25  *
26  * Copyright (c) Malte Thiesen, Daniel Queteschiner and Michael Elsdoerfer
27  *
28  * Licensed under GNU GPL v2
29  *
30  */
31 
32 #ifndef SWORD25_PERSISTENCEBLOCK_H
33 #define SWORD25_PERSISTENCEBLOCK_H
34 
35 #include "sword25/kernel/common.h"
36 
37 namespace Sword25 {
38 
39 class PersistenceBlock {
40 public:
getSInt32Size()41 	static uint getSInt32Size() {
42 		return sizeof(signed int) + sizeof(byte);
43 	}
getUInt32Size()44 	static uint getUInt32Size() {
45 		return sizeof(uint) + sizeof(byte);
46 	}
getFloat32Size()47 	static uint getFloat32Size() {
48 		return sizeof(float) + sizeof(byte);
49 	}
getBoolSize()50 	static uint getBoolSize() {
51 		return sizeof(byte) + sizeof(byte);
52 	}
getStringSize(const Common::String & string)53 	static uint getStringSize(const Common::String &string) {
54 		return static_cast<uint>(sizeof(uint) + string.size() + sizeof(byte));
55 	}
56 
57 protected:
58 	enum {
59 		SINT_MARKER,
60 		UINT_MARKER,
61 		FLOAT_MARKER,
62 		STRING_MARKER,
63 		BOOL_MARKER,
64 		BLOCK_MARKER
65 	};
66 
67 };
68 
69 #define CTASSERT(ex) typedef char ctassert_type[(ex) ? 1 : -1]
70 CTASSERT(sizeof(byte) == 1);
71 CTASSERT(sizeof(signed int) == 4);
72 CTASSERT(sizeof(uint) == 4);
73 CTASSERT(sizeof(float) == 4);
74 #undef CTASSERT
75 
76 } // End of namespace Sword25
77 
78 #endif
79