18c2aff776a775d34a4c9893a4c72e0434d68e36artem/***************************************************************************
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * CVSID: $Id$
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * property.c : HalProperty methods
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Copyright (C) 2003 David Zeuthen, <david@fubar.dk>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Copyright (C) 2004 Novell, Inc.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Licensed under the Academic Free License version 2.1
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This program is free software; you can redistribute it and/or modify
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * it under the terms of the GNU General Public License as published by
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * the Free Software Foundation; either version 2 of the License, or
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * (at your option) any later version.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This program is distributed in the hope that it will be useful,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * but WITHOUT ANY WARRANTY; without even the implied warranty of
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * GNU General Public License for more details.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * You should have received a copy of the GNU General Public License
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * along with this program; if not, write to the Free Software
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem **************************************************************************/
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#ifndef PROPERTY_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define PROPERTY_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <dbus/dbus.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef struct _HalProperty HalProperty;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define HAL_PROPERTY_TYPE_INVALID DBUS_TYPE_INVALID
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define HAL_PROPERTY_TYPE_INT32 DBUS_TYPE_INT32
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define HAL_PROPERTY_TYPE_UINT64 DBUS_TYPE_UINT64
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define HAL_PROPERTY_TYPE_DOUBLE DBUS_TYPE_DOUBLE
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define HAL_PROPERTY_TYPE_BOOLEAN DBUS_TYPE_BOOLEAN
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define HAL_PROPERTY_TYPE_STRING DBUS_TYPE_STRING
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define HAL_PROPERTY_TYPE_STRLIST ((int) (DBUS_TYPE_STRING<<8)+('l'))
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemenum PropertyAttribute {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem READONLY,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem PERSISTENCE,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem CALLOUT
18c2aff776a775d34a4c9893a4c72e0434d68e36artem};
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hal_property_free (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemHalProperty *hal_property_new_string (const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemHalProperty *hal_property_new_int (const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_int32_t value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemHalProperty *hal_property_new_uint64 (const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_uint64_t value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemHalProperty *hal_property_new_bool (const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_bool_t value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemHalProperty *hal_property_new_double (const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem double value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemHalProperty *hal_property_new_strlist (const char *key);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemconst char *hal_property_get_key (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemint hal_property_get_type (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar *hal_property_to_string (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemconst char *hal_property_get_string (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_int32_t hal_property_get_int (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_uint64_t hal_property_get_uint64 (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t hal_property_get_bool (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdouble hal_property_get_double (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemGSList *hal_property_get_strlist (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hal_property_set_string (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hal_property_set_int (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_int32_t value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hal_property_set_uint64 (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_uint64_t value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hal_property_set_bool (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_bool_t value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hal_property_set_double (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem double value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemgboolean hal_property_strlist_append (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemgboolean hal_property_strlist_prepend (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemgboolean hal_property_strlist_remove_elem (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem guint index);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemgboolean hal_property_strlist_add (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemgboolean hal_property_strlist_remove (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemgboolean hal_property_strlist_clear (HalProperty *prop);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hal_property_set_attribute (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem enum PropertyAttribute attr,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem gboolean val);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemgboolean hal_property_get_attribute (HalProperty *prop,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem enum PropertyAttribute attr);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif /* PROPERTY_H */