Home | History | Annotate | Download | only in gio
      1 /* GIO - GLib Input, Output and Streaming Library
      2  *
      3  * Copyright (C) 2006-2007 Red Hat, Inc.
      4  *
      5  * This library is free software; you can redistribute it and/or
      6  * modify it under the terms of the GNU Lesser General Public
      7  * License as published by the Free Software Foundation; either
      8  * version 2 of the License, or (at your option) any later version.
      9  *
     10  * This library is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13  * Lesser General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU Lesser General
     16  * Public License along with this library; if not, write to the
     17  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
     18  * Boston, MA 02111-1307, USA.
     19  *
     20  * Author: Alexander Larsson <alexl (at) redhat.com>
     21  */
     22 
     23 #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
     24 #error "Only <gio/gio.h> can be included directly."
     25 #endif
     26 
     27 #ifndef __G_VFS_H__
     28 #define __G_VFS_H__
     29 
     30 #include <gio/giotypes.h>
     31 
     32 G_BEGIN_DECLS
     33 
     34 #define G_TYPE_VFS         (g_vfs_get_type ())
     35 #define G_VFS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_VFS, GVfs))
     36 #define G_VFS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_VFS, GVfsClass))
     37 #define G_VFS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_VFS, GVfsClass))
     38 #define G_IS_VFS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_VFS))
     39 #define G_IS_VFS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_VFS))
     40 
     41 /**
     42  * G_VFS_EXTENSION_POINT_NAME:
     43  *
     44  * Extension point for #GVfs functionality.
     45  * See <link linkend="extending-gio">Extending GIO</link>.
     46  */
     47 #define G_VFS_EXTENSION_POINT_NAME "gio-vfs"
     48 
     49 /**
     50  * GVfs:
     51  *
     52  * Virtual File System object.
     53  **/
     54 typedef struct _GVfsClass    GVfsClass;
     55 
     56 struct _GVfs
     57 {
     58   GObject parent_instance;
     59 };
     60 
     61 struct _GVfsClass
     62 {
     63   GObjectClass parent_class;
     64 
     65   /* Virtual Table */
     66 
     67   gboolean              (* is_active)                 (GVfs       *vfs);
     68   GFile               * (* get_file_for_path)         (GVfs       *vfs,
     69                                                        const char *path);
     70   GFile               * (* get_file_for_uri)          (GVfs       *vfs,
     71                                                        const char *uri);
     72   const gchar * const * (* get_supported_uri_schemes) (GVfs       *vfs);
     73   GFile               * (* parse_name)                (GVfs       *vfs,
     74                                                        const char *parse_name);
     75 
     76   /*< private >*/
     77   /* Padding for future expansion */
     78   void (*_g_reserved1) (void);
     79   void (*_g_reserved2) (void);
     80   void (*_g_reserved3) (void);
     81   void (*_g_reserved4) (void);
     82   void (*_g_reserved5) (void);
     83   void (*_g_reserved6) (void);
     84   void (*_g_reserved7) (void);
     85   void (*_g_reserved8) (void);
     86   void (*_g_reserved9) (void);
     87   void (*_g_reserved10) (void);
     88   void (*_g_reserved11) (void);
     89   void (*_g_reserved12) (void);
     90 };
     91 
     92 GType                 g_vfs_get_type                  (void) G_GNUC_CONST;
     93 
     94 gboolean              g_vfs_is_active                 (GVfs       *vfs);
     95 GFile *               g_vfs_get_file_for_path         (GVfs       *vfs,
     96                                                        const char *path);
     97 GFile *               g_vfs_get_file_for_uri          (GVfs       *vfs,
     98                                                        const char *uri);
     99 const gchar* const * g_vfs_get_supported_uri_schemes  (GVfs       *vfs);
    100 
    101 GFile *               g_vfs_parse_name                (GVfs       *vfs,
    102                                                        const char *parse_name);
    103 
    104 GVfs *                g_vfs_get_default               (void);
    105 GVfs *                g_vfs_get_local                 (void);
    106 
    107 G_END_DECLS
    108 
    109 #endif /* __G_VFS_H__ */
    110