00001 #ifndef __EH_KEY_FILE_H__
00002 #define __EH_KEY_FILE_H__
00003
00004 #include <glib.h>
00005
00006 #include <utils/eh_types.h>
00007 #include <utils/eh_symbol_table.h>
00008
00009 new_handle( Eh_key_file );
00010
00011 typedef enum
00012 {
00013 EH_ARG_DBL ,
00014 EH_ARG_INT ,
00015 EH_ARG_DARRAY ,
00016 EH_ARG_FILENAME ,
00017 }
00018 Eh_arg_type;
00019
00020 typedef struct {
00021 const gchar* label;
00022 Eh_arg_type arg;
00023 gpointer arg_data;
00024 gint* arg_data_len;
00025 }
00026 Eh_key_file_entry;
00027
00028 typedef enum
00029 {
00030 EH_KEY_FILE_ERROR_ARRAY_LEN_MISMATCH ,
00031 EH_KEY_FILE_ERROR_MISSING_ENTRY
00032 }
00033 Eh_key_file_error;
00034
00035 #define EH_KEY_FILE_ERROR eh_key_file_error_quark()
00036
00037 Eh_key_file eh_key_file_new ( void );
00038 Eh_key_file eh_key_file_destroy ( Eh_key_file f );
00039 gboolean eh_key_file_has_group ( Eh_key_file f ,
00040 const gchar* group_name );
00041 gboolean eh_key_file_has_key ( Eh_key_file f ,
00042 const gchar* group_name ,
00043 const gchar* key );
00044 gchar** eh_key_file_get_groups ( Eh_key_file f );
00045 gint eh_key_file_group_size ( Eh_key_file f ,
00046 const gchar* group_name );
00047 gint eh_key_file_size ( Eh_key_file f );
00048 gchar** eh_key_file_get_keys ( Eh_key_file f ,
00049 const gchar* group_name );
00050 gchar** eh_key_file_get_all_values ( Eh_key_file f ,
00051 const gchar* group_name ,
00052 const gchar* key );
00053 gchar* eh_key_file_get_value ( Eh_key_file f ,
00054 const gchar* group_name ,
00055 const gchar* key );
00056 gchar* eh_key_file_get_str_value ( Eh_key_file f ,
00057 const gchar* group_name ,
00058 const gchar* key );
00059 gchar** eh_key_file_get_str_values ( Eh_key_file f ,
00060 const gchar* group_name ,
00061 const gchar* key );
00062 gboolean eh_key_file_get_bool_value ( Eh_key_file f ,
00063 const gchar* group_name ,
00064 const gchar* key );
00065 gboolean* eh_key_file_get_bool_values ( Eh_key_file f ,
00066 const gchar* group_name ,
00067 const gchar* key );
00068 double eh_key_file_get_dbl_value ( Eh_key_file f ,
00069 const gchar* group_name ,
00070 const gchar* key );
00071 double* eh_key_file_get_dbl_array( Eh_key_file f ,
00072 const gchar* group_name ,
00073 const gchar* key ,
00074 gint* len );
00075 gint eh_key_file_get_int_value ( Eh_key_file f ,
00076 const gchar* group_name ,
00077 const gchar* key );
00078 double* eh_key_file_get_dbl_values ( Eh_key_file f ,
00079 const gchar* group_name ,
00080 const gchar* key );
00081 void eh_key_file_set_value ( Eh_key_file f ,
00082 const gchar* group_name ,
00083 const gchar* key ,
00084 const gchar* value );
00085 void eh_key_file_reset_value ( Eh_key_file f ,
00086 const gchar* group_name ,
00087 const gchar* key ,
00088 const gchar* value );
00089 Eh_symbol_table eh_key_file_get_symbol_table ( Eh_key_file f ,
00090 const gchar* group_name );
00091 Eh_symbol_table* eh_key_file_get_symbol_tables( Eh_key_file f ,
00092 const gchar* group_name );
00093 Eh_key_file eh_key_file_scan ( const char* file , GError** error );
00094 gint eh_key_file_scan_from_template( const gchar* file ,
00095 const gchar* group_name ,
00096 Eh_key_file_entry* t ,
00097 GError** error );
00098 gssize eh_key_file_fprint_template ( FILE* fp ,
00099 const gchar* group_name ,
00100 Eh_key_file_entry entry[] );
00101 Eh_symbol_table eh_key_file_scan_for ( const gchar* file ,
00102 const gchar* name ,
00103 Eh_symbol_table tab ,
00104 GError** error );
00105 Eh_symbol_table eh_key_file_pop_group ( Eh_key_file f );
00106
00107 #endif