NA_IIO_PROVIDER_GET_INTERFACE()
#define NA_IIO_PROVIDER_GET_INTERFACE( instance ) ( G_TYPE_INSTANCE_GET_INTERFACE(( instance ), NA_IIO_PROVIDER_TYPE, NAIIOProviderInterface ))
NAIIOProviderInterface
typedef struct {
GTypeInterface parent;
NAIIOProviderInterfacePrivate *private;
/**
* get_version:
* @instance: the #NAIIOProvider provider.
*
* Returns: the version of this interface supported by the I/O provider.
*
* Defaults to 1.
*/
guint ( *get_version ) ( const NAIIOProvider *instance );
/**
* get_id:
* @instance: the #NAIIOProvider provider.
*
* Returns: the id of the I/O provider, as a newly allocated string
* which should be g_free() by the caller.
*
* To avoid any collision, the I/O provider id is allocated by the
* Nautilus-Actions maintainer team. If you wish develop a new I/O
* provider, and so need a new provider id, please contact the
* maintainers (see #nautilus-actions.doap).
*
* The I/O provider must implement this function.
*/
gchar * ( *get_id ) ( const NAIIOProvider *instance );
/**
* get_name:
* @instance: the #NAIIOProvider provider.
*
* Returns: the name to be displayed for this I/O provider, as a
* newly allocated string which should be g_free() by the caller.
*
* Defaults to an empty string.
*/
gchar * ( *get_name ) ( const NAIIOProvider *instance );
/**
* read_items:
* @instance: the #NAIIOProvider provider.
* @messages: a pointer to a #GSList list of strings; the provider
* may append messages to this list, but shouldn't reinitialize it.
*
* Reads the whole items list from the specified I/O provider.
*
* Returns: a unordered flat #GList of #NAIFactoryObject-derived objects
* (menus or actions); the actions embed their own profiles.
*/
GList * ( *read_items ) ( const NAIIOProvider *instance, GSList **messages );
/**
* is_willing_to_write:
* @instance: the #NAIIOProvider provider.
*
* Returns: %TRUE if this I/O provider is willing to write,
* %FALSE else.
*
* The 'willing_to_write' property is intrinsic to the I/O provider.
* It is not supposed to make any assumption on the environment it is
* currently running on.
* This property just says that the developer/maintainer has released
* the needed code in order to update/create/delete #NAIFactoryObject-
* derived objects.
*
* Note that even if this property is %TRUE, there is yet many
* reasons for not being able to update/delete existing items or
* create new ones (see e.g. #is_able_to_write() below).
*/
gboolean ( *is_willing_to_write )( const NAIIOProvider *instance );
/**
* is_able_to_write:
* @instance: the #NAIIOProvider provider.
*
* Returns: %TRUE if this I/O provider is able to do write
* operations at runtime, %FALSE else.
*
* The 'able_to_write' property is a runtime one.
* When returning %TRUE, the I/O provider insures that it has
* sucessfully checked that it was able to write some things
* down to its storage subsystems.
*
* The 'able_to_write' property is independant of the
* 'willing_to_write' above, though it is only checked if the
* I/O provider is actually willing to write.
*
* This condition is only relevant when trying to define new items,
* to see if a willing_to provider is actually able to do write
* operations. It it not relevant for updating/deleting already
* existings items as they have already checked their own runtime
* writability status when readen from the storage subsystems.
*
* Note that even if this property is %TRUE, there is yet many
* reasons for not being able to update/delete existing items or
* create new ones (see e.g. 'locked' preference key).
*/
gboolean ( *is_able_to_write ) ( const NAIIOProvider *instance );
/**
* write_item:
* @instance: the #NAIIOProvider provider.
* @item: a #NAObjectItem-derived item, menu or action.
* @messages: a pointer to a #GSList list of strings; the provider
* may append messages to this list, but shouldn't reinitialize it.
*
* Writes a new @item.
*
* Returns: %NA_IIO_PROVIDER_CODE_OK if the write operation
* was successfull, or another code depending of the detected error.
*
* Note: there is no update_item function ; it is the responsability
* of the provider to delete the previous version of an item before
* actually writing the new one.
*/
guint ( *write_item ) ( const NAIIOProvider *instance, const NAObjectItem *item, GSList **messages );
/**
* delete_item:
* @instance: the #NAIIOProvider provider.
* @item: a #NAObjectItem-derived item, menu or action.
* @messages: a pointer to a #GSList list of strings; the provider
* may append messages to this list, but shouldn't reinitialize it.
*
* Deletes an existing @item from the I/O subsystem.
*
* Returns: %NA_IIO_PROVIDER_CODE_OK if the delete operation was
* successfull, or another code depending of the detected error.
*/
guint ( *delete_item ) ( const NAIIOProvider *instance, const NAObjectItem *item, GSList **messages );
/**
* duplicate_data:
* @instance: the #NAIIOProvider provider.
* @dest: a #NAObjectItem-derived item, menu or action.
* @source: a #NAObjectItem-derived item, menu or action.
* @messages: a pointer to a #GSList list of strings; the provider
* may append messages to this list, but shouldn't reinitialize it.
*
* Duplicates provider data (if any) from @source to @dest.
*
* Returns: %NA_IIO_PROVIDER_CODE_OK if the duplicate operation was
* successfull, or another code depending of the detected error.
*/
guint ( *duplicate_data ) ( const NAIIOProvider *instance, NAObjectItem *dest, const NAObjectItem *source, GSList **messages );
} NAIIOProviderInterface;