#ifndef MC__VFS_PATH_H #define MC__VFS_PATH_H /*** typedefs(not structures) and defined constants **********************************************/ #define VFS_PATH_URL_DELIMITER "://" /*** enums ***************************************************************************************/ /*** structures declarations (and typedefs of structures)*****************************************/ struct vfs_class; struct vfs_url_struct; typedef struct { GList *path; } vfs_path_t; typedef struct { char *user; char *password; char *host; int port; char *path; struct vfs_class *class; char *encoding; char *vfs_prefix; struct { GIConv converter; DIR *info; } dir; struct vfs_s_super *current_super_block; } vfs_path_element_t; /*** global variables defined in .c file *********************************************************/ /*** declarations of public functions ************************************************************/ vfs_path_t *vfs_path_new (void); vfs_path_t *vfs_path_clone (const vfs_path_t * vpath); void vfs_path_remove_element_by_index (vfs_path_t * vpath, int element_index); void vfs_path_free (vfs_path_t * path); int vfs_path_elements_count (const vfs_path_t * path); char *vfs_path_to_str (const vfs_path_t * path); char *vfs_path_to_str_elements_count (const vfs_path_t * path, int elements_count); vfs_path_t *vfs_path_from_str (const char *path_str); vfs_path_element_t *vfs_path_get_by_index (const vfs_path_t * path, int element_index); vfs_path_element_t *vfs_path_element_clone (const vfs_path_element_t * element); void vfs_path_element_free (vfs_path_element_t * element); struct vfs_class *vfs_prefix_to_class (const char *prefix); gboolean vfs_path_element_need_cleanup_converter (const vfs_path_element_t * element); char *vfs_path_serialize (const vfs_path_t * vpath, GError ** error); vfs_path_t *vfs_path_deserialize (const char *data, GError ** error); /*** inline functions ****************************************************************************/ #endif