1 /*
2  * Nautilus-Actions
3  * A Nautilus extension which offers configurable context menu actions.
4  *
5  * Copyright (C) 2005 The GNOME Foundation
6  * Copyright (C) 2006-2008 Frederic Ruaudel and others (see AUTHORS)
7  * Copyright (C) 2009-2014 Pierre Wieser and others (see AUTHORS)
8  *
9  * Nautilus-Actions is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License as
11  * published by the Free Software Foundation; either version 2 of
12  * the License, or (at your option) any later version.
13  *
14  * Nautilus-Actions is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with Nautilus-Actions; see the file COPYING. If not, see
21  * <http://www.gnu.org/licenses/>.
22  *
23  * Authors:
24  *   Frederic Ruaudel <grumz@grumz.net>
25  *   Rodrigo Moya <rodrigo@gnome-db.org>
26  *   Pierre Wieser <pwieser@trychlos.org>
27  *   ... and many others (see AUTHORS)
28  */
29 
30 #ifndef __NAUTILUS_ACTIONS_API_NA_BOXED_H__
31 #define __NAUTILUS_ACTIONS_API_NA_BOXED_H__
32 
33 /**
34  * SECTION: boxed
35  * @title: NABoxed
36  * @short_description: The NABoxed Structure
37  * @include: nautilus-actions/na-boxed.h
38  *
39  * The NABoxed structure is a way of handling various types of data in an
40  * opaque structure.
41  *
42  * Since: 3.1
43  */
44 
45 #include <glib-object.h>
46 
47 G_BEGIN_DECLS
48 
49 #define NA_TYPE_BOXED                ( na_boxed_get_type())
50 #define NA_BOXED( object )           ( G_TYPE_CHECK_INSTANCE_CAST( object, NA_TYPE_BOXED, NABoxed ))
51 #define NA_BOXED_CLASS( klass )      ( G_TYPE_CHECK_CLASS_CAST( klass, NA_TYPE_BOXED, NABoxedClass ))
52 #define NA_IS_BOXED( object )        ( G_TYPE_CHECK_INSTANCE_TYPE( object, NA_TYPE_BOXED ))
53 #define NA_IS_BOXED_CLASS( klass )   ( G_TYPE_CHECK_CLASS_TYPE(( klass ), NA_TYPE_BOXED ))
54 #define NA_BOXED_GET_CLASS( object ) ( G_TYPE_INSTANCE_GET_CLASS(( object ), NA_TYPE_BOXED, NABoxedClass ))
55 
56 typedef struct _NABoxedPrivate       NABoxedPrivate;
57 
58 typedef struct {
59 	/*< private >*/
60 	GObject         parent;
61 	NABoxedPrivate *private;
62 }
63 	NABoxed;
64 
65 typedef struct _NABoxedClassPrivate  NABoxedClassPrivate;
66 
67 typedef struct {
68 	/*< private >*/
69 	GObjectClass         parent;
70 	NABoxedClassPrivate *private;
71 }
72 	NABoxedClass;
73 
74 GType         na_boxed_get_type       ( void );
75 void          na_boxed_set_type       ( NABoxed *boxed, guint type );
76 
77 gboolean      na_boxed_are_equal      ( const NABoxed *a, const NABoxed *b );
78 NABoxed      *na_boxed_copy           ( const NABoxed *boxed );
79 void          na_boxed_dump           ( const NABoxed *boxed );
80 NABoxed      *na_boxed_new_from_string( guint type, const gchar *string );
81 
82 gboolean      na_boxed_get_boolean    ( const NABoxed *boxed );
83 gconstpointer na_boxed_get_pointer    ( const NABoxed *boxed );
84 gchar        *na_boxed_get_string     ( const NABoxed *boxed );
85 GSList       *na_boxed_get_string_list( const NABoxed *boxed );
86 guint         na_boxed_get_uint       ( const NABoxed *boxed );
87 GList        *na_boxed_get_uint_list  ( const NABoxed *boxed );
88 void          na_boxed_get_as_value   ( const NABoxed *boxed, GValue *value );
89 void         *na_boxed_get_as_void    ( const NABoxed *boxed );
90 
91 void          na_boxed_set_from_boxed ( NABoxed *boxed, const NABoxed *value );
92 void          na_boxed_set_from_string( NABoxed *boxed, const gchar *value );
93 void          na_boxed_set_from_value ( NABoxed *boxed, const GValue *value );
94 void          na_boxed_set_from_void  ( NABoxed *boxed, const void *value );
95 
96 G_END_DECLS
97 
98 #endif /* __NAUTILUS_ACTIONS_API_NA_BOXED_H__ */
99