XMMS2
xmms_object.h
Go to the documentation of this file.
1/* XMMS2 - X Music Multiplexer System
2 * Copyright (C) 2003-2011 XMMS2 Team
3 *
4 * PLUGINS ARE NOT CONSIDERED TO BE DERIVED WORK !!!
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 */
16
17
18
19
20#ifndef __XMMS_OBJECT_H__
21#define __XMMS_OBJECT_H__
22
23#include <glib.h>
24#include "xmms/xmms_error.h"
26#include "xmmsc/xmmsv.h"
27#include "xmmsc/xmmsv_coll.h"
28
29#define XMMS_OBJECT_MID 0x00455574
30
31G_BEGIN_DECLS
32
33struct xmms_object_St;
35
36typedef void (*xmms_object_destroy_func_t) (xmms_object_t *object);
37
38/** @addtogroup Object
39 * @{
40 */
42 guint32 id;
43 GMutex *mutex;
44
45 GTree *signals;
46 GTree *cmds;
47
48 gint ref;
50};
51
52
53/* Convenience wrapper to create #xmmsv_t from GLib types. */
58
59int xmms_bin_to_gstring (xmmsv_t *value, GString **gs);
60int dummy_identity (xmmsv_t *value, xmmsv_t **arg);
61gboolean check_string_list (xmmsv_t *list);
62
63
64/** @} */
65
66typedef void (*xmms_object_handler_t) (xmms_object_t *object, xmmsv_t *data, gpointer userdata);
67
68#define XMMS_OBJECT_CMD_MAX_ARGS 6
69typedef struct {
70 xmmsv_t *args; /* list */
74
76
77#define XMMS_OBJECT(p) ((xmms_object_t *)p)
78#define XMMS_IS_OBJECT(p) (XMMS_OBJECT (p)->id == XMMS_OBJECT_MID)
79
81
82void xmms_object_connect (xmms_object_t *object, guint32 signalid,
83 xmms_object_handler_t handler, gpointer userdata);
84
85void xmms_object_disconnect (xmms_object_t *object, guint32 signalid,
86 xmms_object_handler_t handler, gpointer userdata);
87
88void xmms_object_emit (xmms_object_t *object, guint32 signalid, xmmsv_t *data);
89
90void xmms_object_emit_f (xmms_object_t *object, guint32 signalid,
91 xmmsv_type_t type, ...);
92
94
95void xmms_object_cmd_add (xmms_object_t *object, guint cmdid, const xmms_object_cmd_func_t desc);
96
97void xmms_object_cmd_call (xmms_object_t *object, guint cmdid, xmms_object_cmd_arg_t *arg);
98
99
102
103#define xmms_object_ref(obj) do { \
104 if (obj && XMMS_IS_OBJECT (obj)) { \
105 g_atomic_int_inc (&(XMMS_OBJECT (obj)->ref)); \
106 } \
107} while (0)
108
109#define xmms_object_unref(obj) do { \
110 if (obj && XMMS_IS_OBJECT (obj)) { \
111 __int_xmms_object_unref (XMMS_OBJECT (obj)); \
112 } \
113} while (0)
114
115#define xmms_object_new(objtype,destroyfunc) (objtype *) __int_xmms_object_new (sizeof (objtype), destroyfunc)
116
117G_END_DECLS
118
119#endif /* __XMMS_OBJECT_H__ */
xmmsv_t * xmms_convert_and_kill_dict(GTree *dict)
Definition object.c:394
void xmms_object_cmd_add(xmms_object_t *object, guint cmdid, const xmms_object_cmd_func_t desc)
Add a command that could be called from the client API to a object.
Definition object.c:320
xmmsv_t * xmms_convert_and_kill_string(gchar *str)
Definition object.c:408
int dummy_identity(xmmsv_t *value, xmmsv_t **arg)
Definition object.c:459
void xmms_object_disconnect(xmms_object_t *object, guint32 signalid, xmms_object_handler_t handler, gpointer userdata)
Disconnect from a signal.
Definition object.c:146
void xmms_object_cmd_arg_init(xmms_object_cmd_arg_t *arg)
Initialize a command argument.
Definition object.c:236
gboolean check_string_list(xmmsv_t *list)
Checks that the list only contains string values.
Definition object.c:469
xmmsv_t * xmms_convert_and_kill_bin(GString *gs)
void xmms_object_emit(xmms_object_t *object, guint32 signalid, xmmsv_t *data)
Emit a signal and thus call all the handlers that are connected.
Definition object.c:195
void xmms_object_cleanup(xmms_object_t *object)
Cleanup all the resources for the object.
Definition object.c:62
void xmms_object_connect(xmms_object_t *object, guint32 signalid, xmms_object_handler_t handler, gpointer userdata)
Connect to a signal that is emitted by this object.
Definition object.c:115
void xmms_object_emit_f(xmms_object_t *object, guint32 signalid, xmmsv_type_t type,...)
Emits a signal on the current object.
Definition object.c:256
int xmms_bin_to_gstring(xmmsv_t *value, GString **gs)
Definition object.c:447
xmmsv_t * xmms_convert_and_kill_list(GList *list)
Definition object.c:367
void xmms_object_cmd_call(xmms_object_t *object, guint cmdid, xmms_object_cmd_arg_t *arg)
Call a command with argument.
Definition object.c:338
struct xmmsv_St xmmsv_t
xmmsv_type_t
xmms_object_destroy_func_t destroy_func
Definition xmms_object.h:49
GTree * signals
Definition xmms_object.h:45
GMutex * mutex
Definition xmms_object.h:43
G_BEGIN_DECLS struct xmms_error_St xmms_error_t
void __int_xmms_object_unref(xmms_object_t *object)
Definition object.c:488
void(* xmms_object_cmd_func_t)(xmms_object_t *object, xmms_object_cmd_arg_t *arg)
Definition xmms_object.h:75
void(* xmms_object_handler_t)(xmms_object_t *object, xmmsv_t *data, gpointer userdata)
Definition xmms_object.h:66
void(* xmms_object_destroy_func_t)(xmms_object_t *object)
Definition xmms_object.h:36
xmms_object_t * __int_xmms_object_new(gint size, xmms_object_destroy_func_t destfunc)
Definition object.c:500