| Top |  |  |  |  | 
| InfdStorageNode * | infd_storage_node_new_subdirectory () | 
| InfdStorageNode * | infd_storage_node_new_note () | 
| InfdStorageNode * | infd_storage_node_copy () | 
| void | infd_storage_node_free () | 
| void | infd_storage_node_list_free () | 
| InfdStorageAcl * | infd_storage_acl_copy () | 
| void | infd_storage_acl_free () | 
| void | infd_storage_acl_list_free () | 
| GSList * | infd_storage_read_subdirectory () | 
| gboolean | infd_storage_create_subdirectory () | 
| gboolean | infd_storage_remove_node () | 
| GSList * | infd_storage_read_acl () | 
| gboolean | infd_storage_write_acl () | 
| InfdStorage | |
| struct | InfdStorageInterface | 
| enum | InfdStorageNodeType | 
| struct | InfdStorageNode | 
| struct | InfdStorageAcl | 
GBoxed ├── InfdStorageAcl ╰── InfdStorageNode GEnum ╰── InfdStorageNodeType GInterface ╰── InfdStorage
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.
[constructor]
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.
[constructor]
InfdStorageNode *
infd_storage_node_copy (const InfdStorageNode *node);
Creates a copy of a InfdStorageNode object.
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().
void
infd_storage_node_list_free (GSList *node_list);
Frees a singly-linked list of InfdStorageNode as returned by
infd_storage_read_subdirectory().
InfdStorageAcl *
infd_storage_acl_copy (const InfdStorageAcl *acl);
Creates a copy of a InfdStorageAcl object.
void
infd_storage_acl_free (InfdStorageAcl *acl);
Frees a InfdStorageAcl allocated with
infd_storage_acl_copy().
void
infd_storage_acl_list_free (GSList *acl_list);
Frees a singly-linked list of InfdStorageAcl as returned by
infd_storage_read_acls().
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_storage_node_list_free().
| storage | ||
| path | A path pointing to a subdirectory node. | |
| error | Location to store error information. | 
A
GSList that contains InfdStorageNode objects, or NULL if either the
subdirectory is empty or an error occurred. 
[transfer full][element-type InfdStorageNode][allow-none]
gboolean infd_storage_create_subdirectory (InfdStorage *storage,const gchar *path,GError **error);
Creates a new subdirectory at the given path that is initially empty.
| storage | A InfdStorage. | |
| path | A path pointing to non-existing node. | |
| error | Location to store error information. | 
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.
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.
| storage | A InfdStorage. | |
| path | A path pointing to an existing node. | |
| error | Location to store error information, if any. | 
A
possibly empty list of InfdStorageAcl objects. Free with
infd_storage_acl_list_free() when no longer needed. 
[transfer full][element-type InfdStorageAcl][allow-none]
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.
| storage | A InfdStorage. | |
| path | A path to an existing node. | |
| sheet_set | Sheets to set for the node at  | |
| error | Location to store error information, if any. | 
struct InfdStorageInterface {
  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);
};
struct InfdStorageNode {
  InfdStorageNodeType type;
  gchar* name;
  gchar* identifier; /* Only set when type == INFD_STORAGE_NODE_NOTE */
};