xref: /haiku/headers/private/shared/DriverSettingsMessageAdapter.h (revision 13581b3d2a71545960b98fefebc5225b5bf29072)
1 /*
2  * Copyright 2006-2015, Haiku, Inc. All Rights Reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Axel Dörfler, axeld@pinc-software.de
7  *		Michael Lotz <mmlr@mlotz.ch>
8  */
9 #ifndef DRIVER_SETTINGS_MESSAGE_ADAPTER_H
10 #define DRIVER_SETTINGS_MESSAGE_ADAPTER_H
11 
12 
13 #include <driver_settings.h>
14 #include <Message.h>
15 
16 
17 class DriverSettingsConverter {
18 public:
19 								DriverSettingsConverter();
20 	virtual						~DriverSettingsConverter();
21 
22 	virtual	status_t			ConvertFromDriverSettings(
23 									const driver_parameter& parameter,
24 									const char* name, int32 index, uint32 type,
25 									BMessage& target);
26 	virtual	status_t			ConvertEmptyFromDriverSettings(
27 									const driver_parameter& parameter,
28 									const char* name, uint32 type,
29 									BMessage& target);
30 
31 	virtual	status_t			ConvertToDriverSettings(const BMessage& source,
32 									const char* name, int32 index,
33 									uint32 type, BString& value);
34 };
35 
36 
37 struct settings_template {
38 	uint32		type;
39 	const char*	name;
40 	const settings_template* sub_template;
41 	bool		parent_value;
42 	DriverSettingsConverter* converter;
43 };
44 
45 
46 class DriverSettingsMessageAdapter {
47 public:
48 								DriverSettingsMessageAdapter();
49 								~DriverSettingsMessageAdapter();
50 
51 			status_t			ConvertFromDriverSettings(
52 									const driver_settings& settings,
53 									const settings_template* settingsTemplate,
54 									BMessage& message);
55 			status_t			ConvertFromDriverSettings(const char* path,
56 									const settings_template* settingsTemplate,
57 									BMessage& message);
58 
59 			status_t			ConvertToDriverSettings(
60 									const settings_template* settingsTemplate,
61 									BString& settings, const BMessage& message);
62 			status_t			ConvertToDriverSettings(const char* path,
63 									const settings_template* settingsTemplate,
64 									const BMessage& message);
65 
66 private:
67 			const settings_template* _FindSettingsTemplate(
68 									const settings_template* settingsTemplate,
69 									const char* name);
70 			const settings_template* _FindParentValueTemplate(
71 									const settings_template* settingsTemplate);
72 			status_t			_AddParameter(const driver_parameter& parameter,
73 									const settings_template& settingsTemplate,
74 									BMessage& message);
75 
76 			status_t			_ConvertFromDriverParameter(
77 									const driver_parameter& parameter,
78 									const settings_template* settingsTemplate,
79 									BMessage& message);
80 
81 			status_t			_AppendSettings(
82 									const settings_template* settingsTemplate,
83 									BString& settings, const BMessage& message,
84 									const char* name, type_code type,
85 									int32 count,
86 									const char* settingName = NULL);
87 
88 };
89 
90 
91 #endif	// DRIVER_SETTINGS_MESSAGE_ADAPTER_H
92