1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright (C) 2016 Red Hat, Inc. (www.redhat.com)
4  *
5  * This library is free software: you can redistribute it and/or modify it
6  * under the terms of the GNU Lesser General Public License as published by
7  * the Free Software Foundation.
8  *
9  * This library is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
12  * for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION)
19 #error "Only <camel/camel.h> can be included directly."
20 #endif
21 
22 #ifndef CAMEL_NAME_VALUE_ARRAY_H
23 #define CAMEL_NAME_VALUE_ARRAY_H
24 
25 #include <glib-object.h>
26 #include <camel/camel-enums.h>
27 
28 G_BEGIN_DECLS
29 
30 /**
31  * CamelNameValueArray:
32  *
33  * Since: 3.24
34  **/
35 struct _CamelNameValueArray;
36 typedef struct _CamelNameValueArray CamelNameValueArray;
37 
38 #define CAMEL_TYPE_NAME_VALUE_ARRAY (camel_name_value_array_get_type ())
39 
40 GType           camel_name_value_array_get_type	(void) G_GNUC_CONST;
41 CamelNameValueArray *
42 		camel_name_value_array_new	(void);
43 CamelNameValueArray *
44 		camel_name_value_array_new_sized
45 						(guint reserve_size);
46 CamelNameValueArray *
47 		camel_name_value_array_copy	(const CamelNameValueArray *array);
48 void		camel_name_value_array_free	(CamelNameValueArray *array);
49 guint		camel_name_value_array_get_length
50 						(const CamelNameValueArray *array);
51 gboolean	camel_name_value_array_get	(const CamelNameValueArray *array,
52 						 guint index,
53 						 const gchar **out_name,
54 						 const gchar **out_value);
55 const gchar *	camel_name_value_array_get_named
56 						(const CamelNameValueArray *array,
57 						 CamelCompareType compare_type,
58 						 const gchar *name);
59 const gchar *	camel_name_value_array_get_name	(const CamelNameValueArray *array,
60 						 guint index);
61 const gchar *	camel_name_value_array_get_value
62 						(const CamelNameValueArray *array,
63 						 guint index);
64 void		camel_name_value_array_append	(CamelNameValueArray *array,
65 						 const gchar *name,
66 						 const gchar *value);
67 gboolean	camel_name_value_array_set	(CamelNameValueArray *array,
68 						 guint index,
69 						 const gchar *name,
70 						 const gchar *value);
71 gboolean	camel_name_value_array_set_name	(CamelNameValueArray *array,
72 						 guint index,
73 						 const gchar *name);
74 gboolean	camel_name_value_array_set_value
75 						(CamelNameValueArray *array,
76 						 guint index,
77 						 const gchar *value);
78 gboolean	camel_name_value_array_set_named
79 						(CamelNameValueArray *array,
80 						 CamelCompareType compare_type,
81 						 const gchar *name,
82 						 const gchar *value);
83 gboolean	camel_name_value_array_remove	(CamelNameValueArray *array,
84 						 guint index);
85 guint		camel_name_value_array_remove_named
86 						(CamelNameValueArray *array,
87 						 CamelCompareType compare_type,
88 						 const gchar *name,
89 						 gboolean all_occurrences);
90 void		camel_name_value_array_clear	(CamelNameValueArray *array);
91 gboolean	camel_name_value_array_equal	(const CamelNameValueArray *array_a,
92 						 const CamelNameValueArray *array_b,
93 						 CamelCompareType compare_type);
94 
95 G_END_DECLS
96 
97 #endif /* CAMEL_NAME_VALUE_ARRAY_H */
98