aboutsummaryrefslogtreecommitdiff
path: root/src/lib/common/gnunet_dbus_lib_arg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/common/gnunet_dbus_lib_arg.c')
-rw-r--r--src/lib/common/gnunet_dbus_lib_arg.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/lib/common/gnunet_dbus_lib_arg.c b/src/lib/common/gnunet_dbus_lib_arg.c
new file mode 100644
index 0000000..a6be456
--- /dev/null
+++ b/src/lib/common/gnunet_dbus_lib_arg.c
@@ -0,0 +1,65 @@
1#include "config.h"
2
3#include <gnunet/platform.h>
4#include <gnunet/gnunet_common.h>
5
6#include "gnunet_dbus_lib.h"
7
8#define LOG(kind, ...) GNUNET_log_from(kind, "dbus-arg", __VA_ARGS__)
9
10struct GNUNET_DBUS_Arg
11{
12 char *name;
13 const char *signature;
14 unsigned ref_count;
15};
16
17struct GNUNET_DBUS_Arg *
18GNUNET_DBUS_arg_create (
19 const char *name,
20 const char *signature)
21{
22 struct GNUNET_DBUS_Arg *arg = GNUNET_new (struct GNUNET_DBUS_Arg);
23 arg->name = GNUNET_strdup (name);
24 arg->signature = signature;
25 arg->ref_count = 1;
26 return arg;
27};
28
29void
30GNUNET_DBUS_arg_ref (
31 struct GNUNET_DBUS_Arg *arg)
32{
33 arg->ref_count++;
34};
35
36void
37GNUNET_DBUS_arg_unref (
38 struct GNUNET_DBUS_Arg *arg)
39{
40 if (arg->ref_count == 0)
41 {
42 LOG (GNUNET_ERROR_TYPE_ERROR, "Tried to unreference arg with ref count 0\n");
43 GNUNET_abort_ ();
44 };
45 if (0 == --(arg->ref_count))
46 {
47 GNUNET_free (arg->name);
48 GNUNET_free (arg);
49 };
50};
51
52const char *
53GNUNET_DBUS_arg_get_name (
54 const struct GNUNET_DBUS_Arg *arg)
55{
56 return arg->name;
57};
58
59const char *
60GNUNET_DBUS_arg_get_signature (
61 const struct GNUNET_DBUS_Arg *arg)
62{
63 return arg->signature;
64};
65