xref: /illumos-gate/usr/src/cmd/hal/hald/property.h (revision 2983dda76a6d296fdb560c88114fe41caad1b84f)
1 /***************************************************************************
2  * CVSID: $Id$
3  *
4  * property.c : HalProperty methods
5  *
6  * Copyright (C) 2003 David Zeuthen, <david@fubar.dk>
7  * Copyright (C) 2004 Novell, Inc.
8  *
9  * Licensed under the Academic Free License version 2.1
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
24  *
25  **************************************************************************/
26 
27 #ifndef PROPERTY_H
28 #define PROPERTY_H
29 
30 #include <dbus/dbus.h>
31 
32 typedef struct _HalProperty HalProperty;
33 
34 #define HAL_PROPERTY_TYPE_INVALID         DBUS_TYPE_INVALID
35 #define HAL_PROPERTY_TYPE_INT32       DBUS_TYPE_INT32
36 #define HAL_PROPERTY_TYPE_UINT64      DBUS_TYPE_UINT64
37 #define HAL_PROPERTY_TYPE_DOUBLE      DBUS_TYPE_DOUBLE
38 #define HAL_PROPERTY_TYPE_BOOLEAN     DBUS_TYPE_BOOLEAN
39 #define HAL_PROPERTY_TYPE_STRING      DBUS_TYPE_STRING
40 #define HAL_PROPERTY_TYPE_STRLIST     ((int) (DBUS_TYPE_STRING<<8)+('l'))
41 
42 enum PropertyAttribute {
43 	READONLY,
44 	PERSISTENCE,
45 	CALLOUT
46 };
47 
48 void          hal_property_free               (HalProperty  *prop);
49 
50 HalProperty *hal_property_new_string          (const char   *key,
51 					       const char   *value);
52 HalProperty *hal_property_new_int             (const char   *key,
53 					       dbus_int32_t  value);
54 HalProperty *hal_property_new_uint64          (const char   *key,
55 					       dbus_uint64_t value);
56 HalProperty *hal_property_new_bool            (const char   *key,
57 					       dbus_bool_t   value);
58 HalProperty *hal_property_new_double          (const char   *key,
59 					       double        value);
60 HalProperty *hal_property_new_strlist         (const char   *key);
61 
62 const char   *hal_property_get_key            (HalProperty  *prop);
63 int           hal_property_get_type           (HalProperty  *prop);
64 char         *hal_property_to_string          (HalProperty  *prop);
65 
66 const char   *hal_property_get_string         (HalProperty  *prop);
67 dbus_int32_t  hal_property_get_int            (HalProperty  *prop);
68 dbus_uint64_t hal_property_get_uint64         (HalProperty  *prop);
69 dbus_bool_t   hal_property_get_bool           (HalProperty  *prop);
70 double        hal_property_get_double         (HalProperty  *prop);
71 GSList       *hal_property_get_strlist        (HalProperty  *prop);
72 
73 void          hal_property_set_string         (HalProperty  *prop,
74 					       const char   *value);
75 void          hal_property_set_int            (HalProperty  *prop,
76 					       dbus_int32_t  value);
77 void          hal_property_set_uint64         (HalProperty  *prop,
78 					       dbus_uint64_t value);
79 void          hal_property_set_bool           (HalProperty  *prop,
80 					       dbus_bool_t   value);
81 void          hal_property_set_double         (HalProperty  *prop,
82 					       double        value);
83 gboolean      hal_property_strlist_append     (HalProperty  *prop,
84 					       const char   *value);
85 gboolean      hal_property_strlist_prepend    (HalProperty  *prop,
86 					       const char   *value);
87 gboolean      hal_property_strlist_remove_elem (HalProperty  *prop,
88 					        guint index);
89 
90 gboolean      hal_property_strlist_add        (HalProperty  *prop,
91 					       const char *value);
92 gboolean      hal_property_strlist_remove     (HalProperty  *prop,
93 					       const char *value);
94 gboolean      hal_property_strlist_clear      (HalProperty  *prop);
95 
96 
97 void          hal_property_set_attribute      (HalProperty *prop,
98 					       enum PropertyAttribute attr,
99 					       gboolean val);
100 gboolean      hal_property_get_attribute      (HalProperty *prop,
101 					       enum PropertyAttribute attr);
102 
103 #endif /* PROPERTY_H */
104