1/*
2 * Copyright 2007-2010 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef	_FLATTENABLE_H
6#define	_FLATTENABLE_H
7
8
9#include <SupportDefs.h>
10
11
12class BFlattenable {
13public:
14	virtual	bool				IsFixedSize() const = 0;
15	virtual	type_code			TypeCode() const = 0;
16	virtual	ssize_t				FlattenedSize() const = 0;
17	virtual	status_t			Flatten(void* buffer, ssize_t size) const = 0;
18	virtual	bool				AllowsTypeCode(type_code code) const;
19	virtual	status_t			Unflatten(type_code code, const void* buffer,
20									ssize_t size) = 0;
21
22	virtual						~BFlattenable();
23
24private:
25			void				_ReservedFlattenable1();
26	virtual	void				_ReservedFlattenable2();
27	virtual	void				_ReservedFlattenable3();
28};
29
30
31#endif	// _FLATTENABLE_H
32