gst-indent run on core
[platform/upstream/gstreamer.git] / gst / parse / types.h
1 #ifndef __GST_PARSE_TYPES_H__
2 #define __GST_PARSE_TYPES_H__
3
4 #include <glib-object.h>
5 #include "../gstelement.h"
6
7 #ifdef HAVE_CONFIG_H
8 #  include "config.h"
9 #endif
10
11 typedef struct
12 {
13   GstElement *src;
14   GstElement *sink;
15   gchar *src_name;
16   gchar *sink_name;
17   GSList *src_pads;
18   GSList *sink_pads;
19   GstCaps *caps;
20 } link_t;
21
22 typedef struct
23 {
24   GSList *elements;
25   GstElement *first;
26   GstElement *last;
27   link_t *front;
28   link_t *back;
29 } chain_t;
30
31 typedef struct _graph_t graph_t;
32 struct _graph_t
33 {
34   chain_t *chain;               /* links are supposed to be done now */
35   GSList *links;
36   GError **error;
37 };
38
39
40 /* 
41  * Memory checking. Should probably be done with gsttrace stuff, but that 
42  * doesn't really work.
43  * This is not safe from reentrance issues, but that doesn't matter as long as
44  * we lock a mutex before parsing anyway.
45  */
46 #ifdef GST_DEBUG_ENABLED
47 #  define __GST_PARSE_TRACE
48 #endif
49
50 #ifdef __GST_PARSE_TRACE
51 gchar *__gst_parse_strdup (gchar * org);
52 void __gst_parse_strfree (gchar * str);
53 link_t *__gst_parse_link_new ();
54 void __gst_parse_link_free (link_t * data);
55 chain_t *__gst_parse_chain_new ();
56 void __gst_parse_chain_free (chain_t * data);
57
58 #  define gst_parse_strdup __gst_parse_strdup
59 #  define gst_parse_strfree __gst_parse_strfree
60 #  define gst_parse_link_new __gst_parse_link_new
61 #  define gst_parse_link_free __gst_parse_link_free
62 #  define gst_parse_chain_new __gst_parse_chain_new
63 #  define gst_parse_chain_free __gst_parse_chain_free
64 #else /* __GST_PARSE_TRACE */
65 #  define gst_parse_strdup g_strdup
66 #  define gst_parse_strfree g_free
67 #  define gst_parse_link_new() g_new0 (link_t, 1)
68 #  define gst_parse_link_free g_free
69 #  define gst_parse_chain_new() g_new0 (chain_t, 1)
70 #  define gst_parse_chain_free g_free
71 #endif /* __GST_PARSE_TRACE */
72
73 static inline void
74 gst_parse_unescape (gchar * str)
75 {
76   gchar *walk;
77
78   g_return_if_fail (str != NULL);
79
80   walk = str;
81
82   while (*walk) {
83     if (*walk == '\\')
84       walk++;
85     *str = *walk;
86     str++;
87     walk++;
88   }
89   *str = '\0';
90 }
91
92 #endif /* __GST_PARSE_TYPES_H__ */