1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright (C) 2007 Red Hat, Inc.
4  */
5 
6 #ifndef __SOUP_VALUE_UTILS_H__
7 #define __SOUP_VALUE_UTILS_H__ 1
8 
9 #include <libsoup/soup-types.h>
10 #include <gobject/gvaluecollector.h>
11 
12 G_BEGIN_DECLS
13 
14 #define SOUP_VALUE_SETV(val, type, args)				\
15 G_STMT_START {								\
16 	char *setv_error = NULL;					\
17 									\
18 	memset (val, 0, sizeof (GValue));				\
19 	g_value_init (val, type);					\
20 	G_VALUE_COLLECT (val, args, G_VALUE_NOCOPY_CONTENTS, &setv_error);	\
21 	g_free (setv_error);						\
22 } G_STMT_END
23 
24 #define SOUP_VALUE_GETV(val, type, args)				\
25 G_STMT_START {								\
26 	char *getv_error = NULL;					\
27 									\
28 	G_VALUE_LCOPY (val, args, G_VALUE_NOCOPY_CONTENTS, &getv_error);	\
29 	g_free (getv_error);						\
30 } G_STMT_END
31 
32 SOUP_AVAILABLE_IN_2_4
33 SOUP_DEPRECATED_IN_2_52
34 GHashTable  *soup_value_hash_new            (void);
35 SOUP_AVAILABLE_IN_2_4
36 SOUP_DEPRECATED_IN_2_52
37 GHashTable  *soup_value_hash_new_with_vals  (const char  *first_key,
38 					     ...) G_GNUC_NULL_TERMINATED;
39 SOUP_AVAILABLE_IN_2_4
40 SOUP_DEPRECATED_IN_2_52
41 void         soup_value_hash_insert_value   (GHashTable  *hash,
42 					     const char  *key,
43 					     GValue      *value);
44 SOUP_AVAILABLE_IN_2_4
45 SOUP_DEPRECATED_IN_2_52
46 void         soup_value_hash_insert         (GHashTable  *hash,
47 					     const char  *key,
48 					     GType        type,
49 					     ...);
50 SOUP_AVAILABLE_IN_2_4
51 SOUP_DEPRECATED_IN_2_52
52 void         soup_value_hash_insert_vals    (GHashTable  *hash,
53 					     const char  *first_key,
54 					     ...) G_GNUC_NULL_TERMINATED;
55 SOUP_AVAILABLE_IN_2_4
56 SOUP_DEPRECATED_IN_2_52
57 gboolean     soup_value_hash_lookup         (GHashTable  *hash,
58 					     const char  *key,
59 					     GType        type,
60 					     ...);
61 SOUP_AVAILABLE_IN_2_4
62 SOUP_DEPRECATED_IN_2_52
63 gboolean     soup_value_hash_lookup_vals    (GHashTable  *hash,
64 					     const char  *first_key,
65 					     ...) G_GNUC_NULL_TERMINATED;
66 
67 SOUP_AVAILABLE_IN_2_4
68 SOUP_DEPRECATED_IN_2_52
69 GValueArray *soup_value_array_from_args     (va_list      args);
70 SOUP_AVAILABLE_IN_2_4
71 SOUP_DEPRECATED_IN_2_52
72 gboolean     soup_value_array_to_args       (GValueArray *array,
73 					     va_list      args);
74 
75 SOUP_AVAILABLE_IN_2_4
76 SOUP_DEPRECATED_IN_2_52
77 GValueArray *soup_value_array_new           (void);
78 SOUP_AVAILABLE_IN_2_4
79 SOUP_DEPRECATED_IN_2_52
80 GValueArray *soup_value_array_new_with_vals (GType        first_type,
81 					     ...) G_GNUC_NULL_TERMINATED;
82 
83 SOUP_AVAILABLE_IN_2_4
84 SOUP_DEPRECATED_IN_2_52
85 void         soup_value_array_insert        (GValueArray *array,
86 					     guint        index_,
87 					     GType        type,
88 					     ...);
89 SOUP_AVAILABLE_IN_2_4
90 SOUP_DEPRECATED_IN_2_52
91 void         soup_value_array_append        (GValueArray *array,
92 					     GType        type,
93 					     ...);
94 SOUP_AVAILABLE_IN_2_4
95 SOUP_DEPRECATED_IN_2_52
96 void         soup_value_array_append_vals   (GValueArray *array,
97 					     GType        first_type,
98 					     ...) G_GNUC_NULL_TERMINATED;
99 SOUP_AVAILABLE_IN_2_4
100 SOUP_DEPRECATED_IN_2_52
101 gboolean     soup_value_array_get_nth       (GValueArray *array,
102 					     guint        index_,
103 					     GType        type,
104 					     ...);
105 
106 
107 SOUP_AVAILABLE_IN_2_4
108 SOUP_DEPRECATED_IN_2_52
109 GType        soup_byte_array_get_type       (void);
110 #define SOUP_TYPE_BYTE_ARRAY (soup_byte_array_get_type ())
111 
112 G_END_DECLS
113 
114 #endif /* __SOUP_VALUE_UTILS_H__ */
115