D-Bus
1.6.8
Main Page
Related Pages
Modules
Data Structures
Files
File List
dbus
dbus-hash.h
1
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2
/* dbus-hash.h Generic hash table utility (internal to D-Bus implementation)
3
*
4
* Copyright (C) 2002 Red Hat, Inc.
5
*
6
* Licensed under the Academic Free License version 2.1
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
*
22
*/
23
24
#ifndef DBUS_HASH_H
25
#define DBUS_HASH_H
26
27
#ifdef HAVE_STDINT_H
28
#include <stdint.h>
29
#endif
30
31
#ifdef HAVE_INTTYPES_H
32
#include <inttypes.h>
33
#endif
34
35
#include <dbus/dbus-memory.h>
36
#include <dbus/dbus-types.h>
37
#include <dbus/dbus-sysdeps.h>
38
39
DBUS_BEGIN_DECLS
40
49
struct
DBusHashIter
50
{
51
void
*
dummy1
;
52
void
*
dummy2
;
53
void
*
dummy3
;
54
void
*
dummy4
;
55
int
dummy5
;
56
int
dummy6
;
57
};
58
59
typedef
struct
DBusHashTable
DBusHashTable
;
60
typedef
struct
DBusHashIter
DBusHashIter
;
61
62
/* Allowing an arbitrary function as with GLib
63
* would be nicer for a public API, but for
64
* an internal API this saves typing, we can add
65
* more whenever we feel like it.
66
*/
67
typedef
enum
68
{
69
DBUS_HASH_STRING
,
70
DBUS_HASH_INT
,
71
DBUS_HASH_UINTPTR
72
}
DBusHashType
;
73
74
DBusHashTable
*
_dbus_hash_table_new
(
DBusHashType
type,
75
DBusFreeFunction
key_free_function,
76
DBusFreeFunction
value_free_function);
77
DBusHashTable
*
_dbus_hash_table_ref
(
DBusHashTable
*table);
78
void
_dbus_hash_table_unref
(
DBusHashTable
*table);
79
void
_dbus_hash_table_remove_all
(
DBusHashTable
*table);
80
void
_dbus_hash_iter_init
(
DBusHashTable
*table,
81
DBusHashIter
*iter);
82
dbus_bool_t
_dbus_hash_iter_next
(
DBusHashIter
*iter);
83
void
_dbus_hash_iter_remove_entry
(
DBusHashIter
*iter);
84
void
*
_dbus_hash_iter_get_value
(
DBusHashIter
*iter);
85
void
_dbus_hash_iter_set_value
(
DBusHashIter
*iter,
86
void
*value);
87
int
_dbus_hash_iter_get_int_key
(
DBusHashIter
*iter);
88
const
char
*
_dbus_hash_iter_get_string_key
(
DBusHashIter
*iter);
89
uintptr_t
_dbus_hash_iter_get_uintptr_key
(
DBusHashIter
*iter);
90
dbus_bool_t
_dbus_hash_iter_lookup
(
DBusHashTable
*table,
91
void
*key,
92
dbus_bool_t
create_if_not_found,
93
DBusHashIter
*iter);
94
void
*
_dbus_hash_table_lookup_string
(
DBusHashTable
*table,
95
const
char
*key);
96
void
*
_dbus_hash_table_lookup_int
(
DBusHashTable
*table,
97
int
key);
98
void
*
_dbus_hash_table_lookup_uintptr
(
DBusHashTable
*table,
99
uintptr_t key);
100
dbus_bool_t
_dbus_hash_table_remove_string
(
DBusHashTable
*table,
101
const
char
*key);
102
dbus_bool_t
_dbus_hash_table_remove_int
(
DBusHashTable
*table,
103
int
key);
104
dbus_bool_t
_dbus_hash_table_remove_uintptr
(
DBusHashTable
*table,
105
uintptr_t key);
106
dbus_bool_t
_dbus_hash_table_insert_string
(
DBusHashTable
*table,
107
char
*key,
108
void
*value);
109
dbus_bool_t
_dbus_hash_table_insert_int
(
DBusHashTable
*table,
110
int
key,
111
void
*value);
112
dbus_bool_t
_dbus_hash_table_insert_uintptr
(
DBusHashTable
*table,
113
uintptr_t key,
114
void
*value);
115
int
_dbus_hash_table_get_n_entries
(
DBusHashTable
*table);
116
117
/* Preallocation */
118
120
typedef
struct
DBusPreallocatedHash
DBusPreallocatedHash
;
121
122
DBusPreallocatedHash
*
_dbus_hash_table_preallocate_entry
(
DBusHashTable
*table);
123
void
_dbus_hash_table_free_preallocated_entry
(
DBusHashTable
*table,
124
DBusPreallocatedHash
*preallocated);
125
void
_dbus_hash_table_insert_string_preallocated
(
DBusHashTable
*table,
126
DBusPreallocatedHash
*preallocated,
127
char
*key,
128
void
*value);
129
132
DBUS_END_DECLS
133
134
#endif
/* DBUS_HASH_H */
Generated on Thu Jun 13 2013 14:34:53 for D-Bus by
1.8.3.1