mc/src/treestore.h
Mikhail S. Pobolovets 758ab591d8 Simple doxygen description for files in src directory.
Mostly \file and \brief tag added.

Signed-off-by: Mikhail S. Pobolovets <styx.mp@gmail.com>
2009-02-10 16:07:59 +02:00

56 lines
1.8 KiB
C

/** \file treestore.h
* \brief Header: tree store
*
* Contains a storage of the file system tree representation.
*/
#ifndef MC_TREE_STORE_H
#define MC_TREE_STORE_H
/* Default filenames for the tree */
#define MC_TREE ".mc/Tree"
#define MC_TREE_TMP ".mc/Tree.tmp"
typedef struct tree_entry {
char *name; /* The full path of directory */
int sublevel; /* Number of parent directories (slashes) */
long submask; /* Bitmask of existing sublevels after this entry */
const char *subname; /* The last part of name (the actual name) */
unsigned int mark:1; /* Flag: Is this entry marked (e. g. for delete)? */
unsigned int scanned:1; /* Flag: childs scanned or not */
struct tree_entry *next; /* Next item in the list */
struct tree_entry *prev; /* Previous item in the list */
} tree_entry;
struct TreeStore {
tree_entry *tree_first; /* First entry in the list */
tree_entry *tree_last; /* Last entry in the list */
tree_entry *check_start; /* Start of checked subdirectories */
char *check_name;
GList *add_queue; /* List of strings of added directories */
unsigned int loaded:1;
unsigned int dirty:1;
};
struct TreeStore *tree_store_get (void);
int tree_store_load (void);
int tree_store_save (void);
void tree_store_remove_entry (const char *name);
tree_entry *tree_store_start_check (const char *path);
void tree_store_mark_checked (const char *subname);
void tree_store_end_check (void);
tree_entry *tree_store_whereis (const char *name);
tree_entry *tree_store_rescan (const char *dir);
/*
* Register/unregister notification functions for "entry_remove"
*/
typedef void (*tree_store_remove_fn) (tree_entry *tree, void *data);
void tree_store_add_entry_remove_hook (tree_store_remove_fn callback,
void *data);
void tree_store_remove_entry_remove_hook (tree_store_remove_fn callback);
#endif