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.1 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, see <http://www.gnu.org/licenses/>. 17 * 18 * Author: Alexander Larsson <alexl@redhat.com> 19 */ 20 21 #ifndef __G_FILE_ATTRIBUTE_H__ 22 #define __G_FILE_ATTRIBUTE_H__ 23 24 #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) 25 #error "Only <gio/gio.h> can be included directly." 26 #endif 27 28 #include <gio/giotypes.h> 29 30 G_BEGIN_DECLS 31 32 /** 33 * GFileAttributeInfo: 34 * @name: the name of the attribute. 35 * @type: the #GFileAttributeType type of the attribute. 36 * @flags: a set of #GFileAttributeInfoFlags. 37 * 38 * Information about a specific attribute. 39 **/ 40 struct _GFileAttributeInfo 41 { 42 char *name; 43 GFileAttributeType type; 44 GFileAttributeInfoFlags flags; 45 }; 46 47 /** 48 * GFileAttributeInfoList: 49 * @infos: an array of #GFileAttributeInfos. 50 * @n_infos: the number of values in the array. 51 * 52 * Acts as a lightweight registry for possible valid file attributes. 53 * The registry stores Key-Value pair formats as #GFileAttributeInfos. 54 **/ 55 struct _GFileAttributeInfoList 56 { 57 GFileAttributeInfo *infos; 58 int n_infos; 59 }; 60 61 #define G_TYPE_FILE_ATTRIBUTE_INFO_LIST (g_file_attribute_info_list_get_type ()) 62 GLIB_AVAILABLE_IN_ALL 63 GType g_file_attribute_info_list_get_type (void); 64 65 GLIB_AVAILABLE_IN_ALL 66 GFileAttributeInfoList * g_file_attribute_info_list_new (void); 67 GLIB_AVAILABLE_IN_ALL 68 GFileAttributeInfoList * g_file_attribute_info_list_ref (GFileAttributeInfoList *list); 69 GLIB_AVAILABLE_IN_ALL 70 void g_file_attribute_info_list_unref (GFileAttributeInfoList *list); 71 GLIB_AVAILABLE_IN_ALL 72 GFileAttributeInfoList * g_file_attribute_info_list_dup (GFileAttributeInfoList *list); 73 GLIB_AVAILABLE_IN_ALL 74 const GFileAttributeInfo *g_file_attribute_info_list_lookup (GFileAttributeInfoList *list, 75 const char *name); 76 GLIB_AVAILABLE_IN_ALL 77 void g_file_attribute_info_list_add (GFileAttributeInfoList *list, 78 const char *name, 79 GFileAttributeType type, 80 GFileAttributeInfoFlags flags); 81 82 G_END_DECLS 83 84 #endif /* __G_FILE_INFO_H__ */ 85