Git init
[profile/ivi/libsoup2.4.git] / libsoup / soup-value-utils.h
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 *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, &error);   \
21         if (error)                                                      \
22                 g_free (error);                                         \
23 } G_STMT_END
24
25 #define SOUP_VALUE_GETV(val, type, args)                                \
26 G_STMT_START {                                                          \
27         char *error = NULL;                                             \
28                                                                         \
29         G_VALUE_LCOPY (val, args, G_VALUE_NOCOPY_CONTENTS, &error);     \
30         if (error)                                                      \
31                 g_free (error);                                         \
32 } G_STMT_END
33
34 GHashTable  *soup_value_hash_new            (void);
35 GHashTable  *soup_value_hash_new_with_vals  (const char  *first_key,
36                                              ...) G_GNUC_NULL_TERMINATED;
37 void         soup_value_hash_insert_value   (GHashTable  *hash,
38                                              const char  *key,
39                                              GValue      *value);
40 void         soup_value_hash_insert         (GHashTable  *hash,
41                                              const char  *key,
42                                              GType        type,
43                                              ...);
44 void         soup_value_hash_insert_vals    (GHashTable  *hash,
45                                              const char  *first_key,
46                                              ...) G_GNUC_NULL_TERMINATED;
47 gboolean     soup_value_hash_lookup         (GHashTable  *hash,
48                                              const char  *key,
49                                              GType        type,
50                                              ...);
51 gboolean     soup_value_hash_lookup_vals    (GHashTable  *hash,
52                                              const char  *first_key,
53                                              ...) G_GNUC_NULL_TERMINATED;
54
55 GValueArray *soup_value_array_from_args     (va_list      args);
56 gboolean     soup_value_array_to_args       (GValueArray *array,
57                                              va_list      args);
58
59 GValueArray *soup_value_array_new           (void);
60 GValueArray *soup_value_array_new_with_vals (GType        first_type,
61                                              ...) G_GNUC_NULL_TERMINATED;
62
63 void         soup_value_array_insert        (GValueArray *array,
64                                              guint        index_,
65                                              GType        type,
66                                              ...);
67 void         soup_value_array_append        (GValueArray *array,
68                                              GType        type,
69                                              ...);
70 void         soup_value_array_append_vals   (GValueArray *array,
71                                              GType        first_type,
72                                              ...) G_GNUC_NULL_TERMINATED;
73 gboolean     soup_value_array_get_nth       (GValueArray *array,
74                                              guint        index_,
75                                              GType        type,
76                                              ...);
77
78
79 GType        soup_byte_array_get_type       (void);
80 #define SOUP_TYPE_BYTE_ARRAY (soup_byte_array_get_type ())
81
82 G_END_DECLS
83
84 #endif /* SOUP_VALUE_UTILS_H */