| libinfinity-0.6 Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | Object Hierarchy | Prerequisites | Known Implementations | ||||
InfdStorage; struct InfdStorageIface; enum InfdStorageNodeType; struct InfdStorageNode; struct InfdStorageAcl; InfdStorageNode * infd_storage_node_new_subdirectory (const gchar *path); InfdStorageNode * infd_storage_node_new_note (const gchar *path,const gchar *identifier); InfdStorageNode * infd_storage_node_copy (InfdStorageNode *node); void infd_storage_node_free (InfdStorageNode *node); void infd_storage_node_list_free (GSList *node_list); InfdStorageAcl * infd_storage_acl_copy (InfdStorageAcl *acl); void infd_storage_acl_free (InfdStorageAcl *acl); void infd_storage_acl_list_free (GSList *acl_list); GSList * infd_storage_read_subdirectory (InfdStorage *storage,const gchar *path,GError **error); gboolean infd_storage_create_subdirectory (InfdStorage *storage,const gchar *path,GError **error); gboolean infd_storage_remove_node (InfdStorage *storage,const gchar *identifier,const gchar *path,GError **error); GSList * infd_storage_read_acl (InfdStorage *storage,const gchar *path,GError **error); gboolean infd_storage_write_acl (InfdStorage *storage,const gchar *path,const InfAclSheetSet *sheet_set,GError **error);
GInterface +----InfdStorage
GEnum +----InfdStorageNodeType
GBoxed +----InfdStorageNode
GBoxed +----InfdStorageAcl
struct InfdStorageIface {
GTypeInterface parent;
/* All these calls are supposed to be synchronous, e.g. completly perform
* the required task. Some day, we could implement asynchronous
* behaviour in InfdDirectory (e.g. it caches operations and executes
* them via the storage in the background). */
/* Virtual Table */
GSList* (*read_subdirectory)(InfdStorage* storage,
const gchar* path,
GError** error);
gboolean (*create_subdirectory)(InfdStorage* storage,
const gchar* path,
GError** error);
/* TODO: Remove the identifier here */
gboolean (*remove_node)(InfdStorage* storage,
const gchar* identifier,
const gchar* path,
GError** error);
/* TODO: Add further methods to copy, move and expunge nodes */
GSList* (*read_acl)(InfdStorage* storage,
const gchar* path,
GError** error);
gboolean (*write_acl)(InfdStorage* storage,
const gchar* path,
const InfAclSheetSet* sheet_set,
GError** error);
};
typedef enum {
INFD_STORAGE_NODE_SUBDIRECTORY,
INFD_STORAGE_NODE_NOTE
} InfdStorageNodeType;
struct InfdStorageNode {
InfdStorageNodeType type;
gchar* name;
gchar* identifier; /* Only set when type == INFD_STORAGE_NODE_NOTE */
};
struct InfdStorageAcl {
gchar* account_id;
InfAclMask mask;
InfAclMask perms;
};
InfdStorageNode * infd_storage_node_new_subdirectory (const gchar *path);
Creates a new InfdStorageNode with type
INFD_STORAGE_NODE_SUBDIRECTORY and the given path. This
is most likely only going to be used by InfdStorage
implementations.
|
Path to the node. |
Returns : |
A new InfdStorageNode. |
InfdStorageNode * infd_storage_node_new_note (const gchar *path,const gchar *identifier);
Creates a new InfdStorageNode with type
INFD_STORAGE_NODE_NOTE and the given path and identifier. This
is most likely only going to be used by InfdStorage
implementations.
|
Path to the node. |
|
Identifier of the note type, for example 'InfText' for text notes. |
Returns : |
A new InfdStorageNode. |
InfdStorageNode * infd_storage_node_copy (InfdStorageNode *node);
Creates a copy of a InfdStorageNode object.
|
Node from which to make a copy. |
Returns : |
A copy of node. |
void infd_storage_node_free (InfdStorageNode *node);
Frees a InfdStorageNode allocated with
infd_storage_node_new_subdirectory(), infd_storage_node_new_note() or
infd_storage_node_copy().
|
A InfdStorageNode. |
void infd_storage_node_list_free (GSList *node_list);
Frees a singly-linked list of InfdStorageNode as returned by
infd_storage_read_subdirectory().
|
A list of InfdStorageNode objects. |
InfdStorageAcl * infd_storage_acl_copy (InfdStorageAcl *acl);
Creates a copy of a InfdStorageAcl object.
|
ACL settings from which to make a copy. |
Returns : |
A copy of acl. |
void infd_storage_acl_free (InfdStorageAcl *acl);
Frees a InfdStorageAcl allocated with
infd_storage_acl_copy().
|
A InfdStorageAcl. |
void infd_storage_acl_list_free (GSList *acl_list);
Frees a singly-linked list of InfdStorageAcl as returned by
infd_storage_read_acls().
|
A list of InfdStorageAcl objects. |
GSList * infd_storage_read_subdirectory (InfdStorage *storage,const gchar *path,GError **error);
Reads a subdirectory from the storage. Returns a list of
InfdStorageNode objects. Both the list and the objects need to
be freed by the caller via infd_directory_free_node_list().
|
A InfdStorage |
|
A path pointing to a subdirectory node. |
|
Location to store error information. |
Returns : |
A GSList that contains InfdStorageNode objects,
or NULL if either the subdirectory is empty or an
error occured. |
gboolean infd_storage_create_subdirectory (InfdStorage *storage,const gchar *path,GError **error);
Creates a new subdirectory at the given path that is initially empty.
|
A InfdStorage. |
|
A path pointing to non-existing node. |
|
Location to store error information. |
Returns : |
TRUE on success. |
gboolean infd_storage_remove_node (InfdStorage *storage,const gchar *identifier,const gchar *path,GError **error);
Removes the node at path from storage. If it is a subdirectory node, all containing nodes and subdirectory nodes are removed recursively.
|
A InfdStorage |
|
The type of the node to remove, or NULL to remove a
subdirectory (TODO: This shouldn't be necessary). |
|
A path pointing to an existing node. |
|
Location to store error information. |
Returns : |
TRUE on success. |
GSList * infd_storage_read_acl (InfdStorage *storage,const gchar *path,GError **error);
Reads the ACL for the node at the path path from the storage. It returns
a list of InfdStorageAcl objects.
|
A InfdStorage. |
|
A path pointing to an existing node. |
|
Location to store error information, if any. |
Returns : |
A possibly empty list of InfdStorageAcl objects. Free with
infd_storage_acl_list_free() when no longer needed. |
gboolean infd_storage_write_acl (InfdStorage *storage,const gchar *path,const InfAclSheetSet *sheet_set,GError **error);
Writes the ACL defined by sheet_set into storage. If sheet_set is NULL
this is equivalent to an empty set. Returns TRUE on success or FALSE on
error. If the function fails, error is set.
|
A InfdStorage. |
|
A path to an existing node. |
|
Sheets to set for the node at path, or NULL. |
|
Location to store error information, if any. |
Returns : |
TRUE on success or FALSE on error. |