NAIFactoryObject

## NAIFactoryObject NAIFactoryObject — The NAObjectItem Interface v 1 |

## Functions

#define | NA_TYPE_IFACTORY_OBJECT
#define | NA_IFACTORY_OBJECT()
#define | NA_IS_IFACTORY_OBJECT()
#define | NA_IFACTORY_OBJECT_GET_INTERFACE()
NADataBoxed * | na_ifactory_object_get_data_boxed ()
NADataGroup * | na_ifactory_object_get_data_groups ()
void * | na_ifactory_object_get_as_void ()
void | na_ifactory_object_set_from_void ()

## Types and Values

| NAIFactoryObject
| NAIFactoryObjectInterface

## Includes

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

## Description

This interface is implemented by NAObjectItem derived objects so that they can take advantage of our data factory management system.

A NAObjectItem derived object which would implement this NAIFactoryObject interface must meet following conditions:

- accept an empty constructor

### Versions historic

Table 9. Historic of the versions of the NAIFactoryObject interface

Caja-Actions™ version | NAIFactoryObject interface version |
--- | --- | ---
since 2.30 | 1 | current version

## Functions

### NA_TYPE_IFACTORY_OBJECT

    #define NA_TYPE_IFACTORY_OBJECT                      ( na_ifactory_object_get_type())

### NA_IFACTORY_OBJECT()

    #define NA_IFACTORY_OBJECT( instance )               ( G_TYPE_CHECK_INSTANCE_CAST( instance, NA_TYPE_IFACTORY_OBJECT, NAIFactoryObject ))

### NA_IS_IFACTORY_OBJECT()

    #define NA_IS_IFACTORY_OBJECT( instance )            ( G_TYPE_CHECK_INSTANCE_TYPE( instance, NA_TYPE_IFACTORY_OBJECT ))

### NA_IFACTORY_OBJECT_GET_INTERFACE()

    #define NA_IFACTORY_OBJECT_GET_INTERFACE( instance ) ( G_TYPE_INSTANCE_GET_INTERFACE(( instance ), NA_TYPE_IFACTORY_OBJECT, NAIFactoryObjectInterface ))

### na_ifactory_object_get_data_boxed ()

    NADataBoxed *
    na_ifactory_object_get_data_boxed (const NAIFactoryObject *object,
                                       const gchar *name);

The returned NADataBoxed is owned by NAIFactoryObject `object` , and should not be released by the caller.

#### Parameters

object | a NAIFactoryObject object. |
name | the name of the elementary data we are searching for. |

#### Returns

The NADataBoxed object which contains the specified data, or `NULL`.

Since: 2.30

### na_ifactory_object_get_data_groups ()

    NADataGroup *
    na_ifactory_object_get_data_groups (const NAIFactoryObject *object);

The returned NADataGroup is owned by the NAIFactoryObject `object` , and should not be released by the caller.

#### Parameters

object | a NAIFactoryObject object. |

#### Returns

The NADataGroup groups definition, or `NULL`.

Since: 2.30

### na_ifactory_object_get_as_void ()

    void *
    na_ifactory_object_get_as_void (const NAIFactoryObject *object,
                                    const gchar *name);

If the type of the value is `NA_DATA_TYPE_STRING`, `NA_DATA_TYPE_LOCALE_STRING`, or `NA_DATA_TYPE_STRING_LIST`, then the returned value is a newly allocated one and should be `g_free()` (resp. `na_core_utils_slist_free()`) by the caller.

#### Parameters

object | this NAIFactoryObject instance. |
name | the elementary data whose value is to be got. |

#### Returns

the searched value.

Since: 2.30

### na_ifactory_object_set_from_void ()

    void
    na_ifactory_object_set_from_void (NAIFactoryObject *object,
                                      const gchar *name,
                                      const void *data);

Set the elementary data with the given value.

#### Parameters

object | this NAIFactoryObject instance. |
name | the name of the elementary data whose value is to be set. |
data | the value to set. |

Since: 2.30

## Types and Values

### NAIFactoryObject

    typedef struct _NAIFactoryObject NAIFactoryObject;

### NAIFactoryObjectInterface

    typedef struct {
    	/**
    	 * get_version:
    	 * @instance: this #NAIFactoryObject instance.
    	 *
    	 * Defaults to 1.
    	 *
    	 * Returns: the version of this interface supported by @instance implementation.
    	 *
    	 * Since: 2.30
    	 */
    	guint         ( *get_version )( const NAIFactoryObject *instance );

    	/**
    	 * get_groups:
    	 * @instance: this #NAIFactoryObject instance.
    	 *
    	 * Returns: a pointer to the NADataGroup which defines this object.
    	 *
    	 * Since: 2.30
    	 */
    	NADataGroup * ( *get_groups ) ( const NAIFactoryObject *instance );

    	/**
    	 * copy:
    	 * @instance: the target #NAIFactoryObject instance.
    	 * @source: the source #NAIFactoryObject instance.
    	 *
    	 * This function is triggered after having copied @source to
    	 * @instance target. This later may take advantage of this call
    	 * to do some particular copy tasks.
    	 *
    	 * Since: 2.30
    	 */
    	void          ( *copy )       ( NAIFactoryObject *instance, const NAIFactoryObject *source );

    	/**
    	 * are_equal:
    	 * @a: the first #NAIFactoryObject instance.
    	 * @b: the second #NAIFactoryObject instance.
    	 *
    	 * This function is triggered after all elementary data comparisons
    	 * have been sucessfully made.
    	 *
    	 * Returns: %TRUE if @a is equal to @b.
    	 *
    	 * Since: 2.30
    	 */
    	gboolean      ( *are_equal )  ( const NAIFactoryObject *a, const NAIFactoryObject *b );

    	/**
    	 * is_valid:
    	 * @object: the #NAIFactoryObject instance whose validity is to be checked.
    	 *
    	 * This function is triggered after all elementary data comparisons
    	 * have been sucessfully made.
    	 *
    	 * Returns: %TRUE if @object is valid.
    	 *
    	 * Since: 2.30
    	 */
    	gboolean      ( *is_valid )   ( const NAIFactoryObject *object );

    	/**
    	 * read_start:
    	 * @instance: this #NAIFactoryObject instance.
    	 * @reader: the instance which has provided read services.
    	 * @reader_data: the data associated to @reader.
    	 * @messages: a pointer to a #GSList list of strings; the instance
    	 *  may append messages to this list, but shouldn't reinitialize it.
    	 *
    	 * Called just before the object is unserialized.
    	 *
    	 * Since: 2.30
    	 */
    	void          ( *read_start ) ( NAIFactoryObject *instance, const NAIFactoryProvider *reader, void *reader_data, GSList **messages );

    	/**
    	 * read_done:
    	 * @instance: this #NAIFactoryObject instance.
    	 * @reader: the instance which has provided read services.
    	 * @reader_data: the data associated to @reader.
    	 * @messages: a pointer to a #GSList list of strings; the instance
    	 *  may append messages to this list, but shouldn't reinitialize it.
    	 *
    	 * Called when the object has been unserialized.
    	 *
    	 * Since: 2.30
    	 */
    	void          ( *read_done )  ( NAIFactoryObject *instance, const NAIFactoryProvider *reader, void *reader_data, GSList **messages );

    	/**
    	 * write_start:
    	 * @instance: this #NAIFactoryObject instance.
    	 * @writer: the instance which has provided writing services.
    	 * @writer_data: the data associated to @writer.
    	 * @messages: a pointer to a #GSList list of strings; the instance
    	 *  may append messages to this list, but shouldn't reinitialize it.
    	 *
    	 * Called just before the object is serialized.
    	 *
    	 * Returns: a NAIIOProvider operation return code.
    	 *
    	 * Since: 2.30
    	 */
    	guint         ( *write_start )( NAIFactoryObject *instance, const NAIFactoryProvider *writer, void *writer_data, GSList **messages );

    	/**
    	 * write_done:
    	 * @instance: this #NAIFactoryObject instance.
    	 * @writer: the instance which has provided writing services.
    	 * @writer_data: the data associated to @writer.
    	 * @messages: a pointer to a #GSList list of strings; the instance
    	 *  may append messages to this list, but shouldn't reinitialize it.
    	 *
    	 * Called when the object has been serialized.
    	 *
    	 * Returns: a NAIIOProvider operation return code.
    	 *
    	 * Since: 2.30
    	 */
    	guint         ( *write_done ) ( NAIFactoryObject *instance, const NAIFactoryProvider *writer, void *writer_data, GSList **messages );
    } NAIFactoryObjectInterface;

In order to take full advantage of our data managament system, NAObjectItem-derived objects all implement this NAIFactoryObject interface.

#### Members

`get_version` () | returns the version of this interface the NAObjectItem implements. |
`get_groups` () | returns a pointer to the NADataGroup which defines this object. |
`copy` () | post copy callback. |
`are_equal` () | tests if two NAObjectItem are equals. |
`is_valid` () | tests if one NAObjectItem is valid. |
`read_start` () | triggered before serializing a NAObjectItem. |
`read_done` () | triggered after a NAObjectItem has been serialized. |
`write_start` () | triggered before unserializing a NAObjectItem. |
`write_done` () | triggered after a NAObjectItem has been unserialized. |