xref: /haiku/headers/private/shared/DriverSettingsMessageAdapter.h (revision c2751c41b7404c4e7b0b6ed723b92505a6cf332b)
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) = 0;
26 	virtual	status_t			ConvertToDriverSettings(const BMessage& source,
27 									const char* name, int32 index,
28 									uint32 type, BString& value) = 0;
29 };
30 
31 
32 struct settings_template {
33 	uint32		type;
34 	const char*	name;
35 	const settings_template* sub_template;
36 	bool		parent_value;
37 	DriverSettingsConverter* converter;
38 };
39 
40 
41 class DriverSettingsMessageAdapter {
42 public:
43 								DriverSettingsMessageAdapter();
44 								~DriverSettingsMessageAdapter();
45 
46 			status_t			ConvertFromDriverSettings(
47 									const driver_settings& settings,
48 									const settings_template* settingsTemplate,
49 									BMessage& message);
50 			status_t			ConvertFromDriverSettings(const char* path,
51 									const settings_template* settingsTemplate,
52 									BMessage& message);
53 
54 			status_t			ConvertToDriverSettings(
55 									const settings_template* settingsTemplate,
56 									BString& settings, const BMessage& message);
57 			status_t			ConvertToDriverSettings(const char* path,
58 									const settings_template* settingsTemplate,
59 									const BMessage& message);
60 
61 private:
62 			const settings_template* _FindSettingsTemplate(
63 									const settings_template* settingsTemplate,
64 									const char* name);
65 			const settings_template* _FindParentValueTemplate(
66 									const settings_template* settingsTemplate);
67 			status_t			_AddParameter(const driver_parameter& parameter,
68 									const settings_template& settingsTemplate,
69 									BMessage& message);
70 
71 			status_t			_ConvertFromDriverParameter(
72 									const driver_parameter& parameter,
73 									const settings_template* settingsTemplate,
74 									BMessage& message);
75 
76 			status_t			_AppendSettings(
77 									const settings_template* settingsTemplate,
78 									BString& settings, const BMessage& message,
79 									const char* name, type_code type,
80 									int32 count,
81 									const char* settingName = NULL);
82 
83 };
84 
85 
86 #endif	// DRIVER_SETTINGS_MESSAGE_ADAPTER_H
87