1/* GObject - GLib Type, Object, Parameter and Signal Library
2 * Copyright (C) 1997-1999, 2000-2001 Tim Janik and Red Hat, Inc.
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General
15 * Public License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
17 * Boston, MA 02111-1307, USA.
18 *
19 * gvaluetypes.h: GLib default values
20 */
21#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
22#error "Only <glib-object.h> can be included directly."
23#endif
24
25#ifndef __G_VALUETYPES_H__
26#define __G_VALUETYPES_H__
27
28#include	<gobject/gvalue.h>
29
30G_BEGIN_DECLS
31
32/* --- type macros --- */
33/**
34 * G_VALUE_HOLDS_CHAR:
35 * @value: a valid #GValue structure
36 *
37 * Checks whether the given #GValue can hold values of type %G_TYPE_CHAR.
38 *
39 * Returns: %TRUE on success.
40 */
41#define G_VALUE_HOLDS_CHAR(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_CHAR))
42/**
43 * G_VALUE_HOLDS_UCHAR:
44 * @value: a valid #GValue structure
45 *
46 * Checks whether the given #GValue can hold values of type %G_TYPE_UCHAR.
47 *
48 * Returns: %TRUE on success.
49 */
50#define G_VALUE_HOLDS_UCHAR(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UCHAR))
51/**
52 * G_VALUE_HOLDS_BOOLEAN:
53 * @value: a valid #GValue structure
54 *
55 * Checks whether the given #GValue can hold values of type %G_TYPE_BOOLEAN.
56 *
57 * Returns: %TRUE on success.
58 */
59#define G_VALUE_HOLDS_BOOLEAN(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_BOOLEAN))
60/**
61 * G_VALUE_HOLDS_INT:
62 * @value: a valid #GValue structure
63 *
64 * Checks whether the given #GValue can hold values of type %G_TYPE_INT.
65 *
66 * Returns: %TRUE on success.
67 */
68#define G_VALUE_HOLDS_INT(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_INT))
69/**
70 * G_VALUE_HOLDS_UINT:
71 * @value: a valid #GValue structure
72 *
73 * Checks whether the given #GValue can hold values of type %G_TYPE_UINT.
74 *
75 * Returns: %TRUE on success.
76 */
77#define G_VALUE_HOLDS_UINT(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UINT))
78/**
79 * G_VALUE_HOLDS_LONG:
80 * @value: a valid #GValue structure
81 *
82 * Checks whether the given #GValue can hold values of type %G_TYPE_LONG.
83 *
84 * Returns: %TRUE on success.
85 */
86#define G_VALUE_HOLDS_LONG(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_LONG))
87/**
88 * G_VALUE_HOLDS_ULONG:
89 * @value: a valid #GValue structure
90 *
91 * Checks whether the given #GValue can hold values of type %G_TYPE_ULONG.
92 *
93 * Returns: %TRUE on success.
94 */
95#define G_VALUE_HOLDS_ULONG(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_ULONG))
96/**
97 * G_VALUE_HOLDS_INT64:
98 * @value: a valid #GValue structure
99 *
100 * Checks whether the given #GValue can hold values of type %G_TYPE_INT64.
101 *
102 * Returns: %TRUE on success.
103 */
104#define G_VALUE_HOLDS_INT64(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_INT64))
105/**
106 * G_VALUE_HOLDS_UINT64:
107 * @value: a valid #GValue structure
108 *
109 * Checks whether the given #GValue can hold values of type %G_TYPE_UINT64.
110 *
111 * Returns: %TRUE on success.
112 */
113#define G_VALUE_HOLDS_UINT64(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UINT64))
114/**
115 * G_VALUE_HOLDS_FLOAT:
116 * @value: a valid #GValue structure
117 *
118 * Checks whether the given #GValue can hold values of type %G_TYPE_FLOAT.
119 *
120 * Returns: %TRUE on success.
121 */
122#define G_VALUE_HOLDS_FLOAT(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_FLOAT))
123/**
124 * G_VALUE_HOLDS_DOUBLE:
125 * @value: a valid #GValue structure
126 *
127 * Checks whether the given #GValue can hold values of type %G_TYPE_DOUBLE.
128 *
129 * Returns: %TRUE on success.
130 */
131#define G_VALUE_HOLDS_DOUBLE(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_DOUBLE))
132/**
133 * G_VALUE_HOLDS_STRING:
134 * @value: a valid #GValue structure
135 *
136 * Checks whether the given #GValue can hold values of type %G_TYPE_STRING.
137 *
138 * Returns: %TRUE on success.
139 */
140#define G_VALUE_HOLDS_STRING(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_STRING))
141/**
142 * G_VALUE_HOLDS_POINTER:
143 * @value: a valid #GValue structure
144 *
145 * Checks whether the given #GValue can hold values of type %G_TYPE_POINTER.
146 *
147 * Returns: %TRUE on success.
148 */
149#define G_VALUE_HOLDS_POINTER(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_POINTER))
150/**
151 * G_TYPE_GTYPE:
152 *
153 * The type for #GType.
154 */
155#define	G_TYPE_GTYPE			 (g_gtype_get_type())
156/**
157 * G_VALUE_HOLDS_GTYPE:
158 * @value: a valid #GValue structure
159 *
160 * Checks whether the given #GValue can hold values of type %G_TYPE_GTYPE.
161 *
162 * Since: 2.12
163 * Returns: %TRUE on success.
164 */
165#define G_VALUE_HOLDS_GTYPE(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_GTYPE))
166
167
168/* --- prototypes --- */
169void		      g_value_set_char		(GValue	      *value,
170						 gchar	       v_char);
171gchar		      g_value_get_char		(const GValue *value);
172void		      g_value_set_uchar		(GValue	      *value,
173						 guchar	       v_uchar);
174guchar		      g_value_get_uchar		(const GValue *value);
175void		      g_value_set_boolean	(GValue	      *value,
176						 gboolean      v_boolean);
177gboolean	      g_value_get_boolean	(const GValue *value);
178void		      g_value_set_int		(GValue	      *value,
179						 gint	       v_int);
180gint		      g_value_get_int		(const GValue *value);
181void		      g_value_set_uint		(GValue	      *value,
182						 guint	       v_uint);
183guint		      g_value_get_uint		(const GValue *value);
184void		      g_value_set_long		(GValue	      *value,
185						 glong	       v_long);
186glong		      g_value_get_long		(const GValue *value);
187void		      g_value_set_ulong		(GValue	      *value,
188						 gulong	       v_ulong);
189gulong		      g_value_get_ulong		(const GValue *value);
190void		      g_value_set_int64		(GValue	      *value,
191						 gint64	       v_int64);
192gint64		      g_value_get_int64		(const GValue *value);
193void		      g_value_set_uint64	(GValue	      *value,
194						 guint64      v_uint64);
195guint64		      g_value_get_uint64	(const GValue *value);
196void		      g_value_set_float		(GValue	      *value,
197						 gfloat	       v_float);
198gfloat		      g_value_get_float		(const GValue *value);
199void		      g_value_set_double	(GValue	      *value,
200						 gdouble       v_double);
201gdouble		      g_value_get_double	(const GValue *value);
202void		      g_value_set_string	(GValue	      *value,
203						 const gchar  *v_string);
204void		      g_value_set_static_string (GValue	      *value,
205						 const gchar  *v_string);
206G_CONST_RETURN gchar* g_value_get_string	(const GValue *value);
207gchar*		      g_value_dup_string	(const GValue *value);
208void		      g_value_set_pointer	(GValue	      *value,
209						 gpointer      v_pointer);
210gpointer	      g_value_get_pointer	(const GValue *value);
211GType		      g_gtype_get_type		(void);
212void		      g_value_set_gtype	        (GValue	      *value,
213						 GType         v_gtype);
214GType	              g_value_get_gtype	        (const GValue *value);
215
216
217/* Convenience for registering new pointer types */
218GType                 g_pointer_type_register_static (const gchar *name);
219
220/* debugging aid, describe value contents as string */
221gchar*                g_strdup_value_contents   (const GValue *value);
222
223
224void g_value_take_string		        (GValue		   *value,
225						 gchar		   *v_string);
226#ifndef G_DISABLE_DEPRECATED
227void g_value_set_string_take_ownership		(GValue		   *value,
228						 gchar		   *v_string);
229#endif
230
231
232/* humpf, need a C representable type name for G_TYPE_STRING */
233/**
234 * gchararray:
235 *
236 * A C representable type name for #G_TYPE_STRING.
237 */
238typedef gchar* gchararray;
239
240
241G_END_DECLS
242
243#endif /* __G_VALUETYPES_H__ */
244