## NABoxed NABoxed — The NABoxed Structure |

## Synopsis

    #include <caja-actions/na-boxed.h>

    #define             NA_TYPE_BOXED
    #define             NA_BOXED                            (object)
    #define             NA_IS_BOXED                         (object)
                        NABoxed;
    void                na_boxed_set_type                   (NABoxed *boxed,
                                                             guint type);
    gboolean            na_boxed_are_equal                  (const NABoxed *a,
                                                             const NABoxed *b);
    NABoxed *           na_boxed_copy                       (const NABoxed *boxed);
    void                na_boxed_dump                       (const NABoxed *boxed);
    gboolean            na_boxed_get_boolean                (const NABoxed *boxed);
    gconstpointer       na_boxed_get_pointer                (const NABoxed *boxed);
    gchar *             na_boxed_get_string                 (const NABoxed *boxed);
    GSList *            na_boxed_get_string_list            (const NABoxed *boxed);
    guint               na_boxed_get_uint                   (const NABoxed *boxed);
    GList *             na_boxed_get_uint_list              (const NABoxed *boxed);
    void                na_boxed_get_as_value               (const NABoxed *boxed,
                                                             GValue *value);
    void *              na_boxed_get_as_void                (const NABoxed *boxed);
    NABoxed *           na_boxed_new_from_string            (guint type,
                                                             const gchar *string);
    void                na_boxed_set_from_boxed             (NABoxed *boxed,
                                                             const NABoxed *value);
    void                na_boxed_set_from_string            (NABoxed *boxed,
                                                             const gchar *value);
    void                na_boxed_set_from_value             (NABoxed *boxed,
                                                             const GValue *value);
    void                na_boxed_set_from_void              (NABoxed *boxed,
                                                             const void *value);

## Object Hierarchy

      GObject
       +----NABoxed
             +----NADataBoxed

## Description

The NABoxed structure is a way of handling various types of data in an opaque structure.

## Details

### NA_TYPE_BOXED

    #define NA_TYPE_BOXED                ( na_boxed_get_type())

### NA_BOXED()

    #define NA_BOXED( object )           ( G_TYPE_CHECK_INSTANCE_CAST( object, NA_TYPE_BOXED, NABoxed ))

### NA_IS_BOXED()

    #define NA_IS_BOXED( object )        ( G_TYPE_CHECK_INSTANCE_TYPE( object, NA_TYPE_BOXED ))

### NABoxed

    typedef struct _NABoxed NABoxed;

### na_boxed_set_type ()

    void                na_boxed_set_type                   (NABoxed *boxed,
                                                             guint type);

Set the type of the just-allocated `boxed` object.

`boxed` : | this NABoxed object.
`type` : | the required type as defined in na-data-types.h

Since 3.1

### na_boxed_are_equal ()

    gboolean            na_boxed_are_equal                  (const NABoxed *a,
                                                             const NABoxed *b);

`a` : | the first NABoxed object.
`b` : | the second NABoxed object.
Returns : | `TRUE` if `a` and `b` are equal, `FALSE` else.

Since 3.1

### na_boxed_copy ()

    NABoxed *           na_boxed_copy                       (const NABoxed *boxed);

`boxed` : | the source NABoxed box.
Returns : | a copy of `boxed`, as a newly allocated NABoxed which should be `g_object_unref()` by the caller.

Since 3.1

### na_boxed_dump ()

    void                na_boxed_dump                       (const NABoxed *boxed);

Dumps the `boxed` box.

`boxed` : | the NABoxed box to be dumped.

Since 3.1

### na_boxed_get_boolean ()

    gboolean            na_boxed_get_boolean                (const NABoxed *boxed);

`boxed` : | the NABoxed structure.
Returns : | the boolean value if `boxed` is of `NA_DATA_TYPE_BOOLEAN` type, `FALSE` else.

Since 3.1

### na_boxed_get_pointer ()

    gconstpointer       na_boxed_get_pointer                (const NABoxed *boxed);

`boxed` : | the NABoxed structure.
Returns : | a const pointer to the data if `boxed` is of `NA_DATA_TYPE_POINTER` type, `NULL` else.

Since 3.1

### na_boxed_get_string ()

    gchar *             na_boxed_get_string                 (const NABoxed *boxed);

`boxed` : | the NABoxed structure.
Returns : | a newly allocated string if `boxed` is of `NA_DATA_TYPE_STRING` type, which should be `g_free()` by the caller, `NULL` else.

Since 3.1

### na_boxed_get_string_list ()

    GSList *            na_boxed_get_string_list            (const NABoxed *boxed);

`boxed` : | the NABoxed structure.
Returns : | a newly allocated string list if `boxed` is of `NA_DATA_TYPE_STRING_LIST` type, which should be `na_core_utils_slist_free()` by the caller, `NULL` else.

Since 3.1

### na_boxed_get_uint ()

    guint               na_boxed_get_uint                   (const NABoxed *boxed);

`boxed` : | the NABoxed structure.
Returns : | an unsigned integer if `boxed` is of `NA_DATA_TYPE_UINT` type, zero else.

Since 3.1

### na_boxed_get_uint_list ()

    GList *             na_boxed_get_uint_list              (const NABoxed *boxed);

`boxed` : | the NABoxed structure.
Returns : | a newly allocated list if `boxed` is of `NA_DATA_TYPE_UINT_LIST` type, which should be `g_list_free()` by the caller, `FALSE` else.

Since 3.1

### na_boxed_get_as_value ()

    void                na_boxed_get_as_value               (const NABoxed *boxed,
                                                             GValue *value);

Setup `value` with the content of the `boxed`.

`boxed` : | the NABoxed whose value is to be got.
`value` : | the GValue which holds the string to be set.

Since 3.1

### na_boxed_get_as_void ()

    void *              na_boxed_get_as_void                (const NABoxed *boxed);

`boxed` : | the NABoxed whose value is to be got.
Returns : | the content of the `boxed`. If of type NA_DATA_TYPE_STRING (resp. NA_DATA_TYPE_LOCALE_STRING, NA_DATA_TYPE_STRING_LIST or NA_DATA_TYPE_UINT_LIST), then the content is returned in a newly allocated value, which should be `g_free()` (resp. `g_free()`, `na_core_utils_slist_free()`, `g_list_free()`) by the caller.

Since 3.1

### na_boxed_new_from_string ()

    NABoxed *           na_boxed_new_from_string            (guint type,
                                                             const gchar *string);

Allocates a new NABoxed of the specified `type`, and initializes it with `string`.

If the type is a list, then the last separator is automatically stripped.

`type` : | the type of the NABoxed to be allocated.
`string` : | the initial value of the NABoxed as a string.
Returns : | a newly allocated NABoxed, which should be `g_object_unref()` by the caller, or `NULL` if the type is unknowned, or does not provide the 'from_string' function.

Since 3.1

### na_boxed_set_from_boxed ()

    void                na_boxed_set_from_boxed             (NABoxed *boxed,
                                                             const NABoxed *value);

Copy value from `value` to `boxed`.

`boxed` : | the NABoxed whose value is to be set.
`value` : | the source NABoxed.

Since 3.1

### na_boxed_set_from_string ()

    void                na_boxed_set_from_string            (NABoxed *boxed,
                                                             const gchar *value);

Evaluates the `value` and set it to the `boxed`.

`boxed` : | the NABoxed whose value is to be set.
`value` : | the string to be set.

Since 3.1

### na_boxed_set_from_value ()

    void                na_boxed_set_from_value             (NABoxed *boxed,
                                                             const GValue *value);

Evaluates the `value` and set it to the `boxed`.

`boxed` : | the NABoxed whose value is to be set.
`value` : | the value whose content is to be got.

Since 3.1

### na_boxed_set_from_void ()

    void                na_boxed_set_from_void              (NABoxed *boxed,
                                                             const void *value);

Evaluates the `value` and set it to the `boxed`.

`boxed` : | the NABoxed whose value is to be set.
`value` : | the value whose content is to be got.

Since 3.1