00001 #ifndef __EH_SYMBOL_TABLE_H__ 00002 #define __EH_SYMBOL_TABLE_H__ 00003 00004 #include <stdio.h> 00005 #include <glib.h> 00006 #include <utils/eh_types.h> 00007 #include <utils/eh_input_val.h> 00008 00009 new_handle( Eh_symbol_table ); 00010 00011 typedef enum 00012 { 00013 EH_SYM_TABLE_ERROR_MISSING_LABEL 00014 } 00015 Eh_symbol_table_error; 00016 00017 #define EH_SYM_TABLE_ERROR eh_symbol_table_error_quark() 00018 00019 Eh_symbol_table eh_symbol_table_new ( void ); 00020 Eh_symbol_table eh_symbol_table_dup ( Eh_symbol_table t ); 00021 Eh_symbol_table eh_symbol_table_copy ( Eh_symbol_table dest , 00022 Eh_symbol_table src ); 00023 void eh_symbol_table_foreach ( Eh_symbol_table s , 00024 GHFunc f , 00025 gpointer user_data ); 00026 Eh_symbol_table eh_symbol_table_merge ( Eh_symbol_table table1 , 00027 ... ); 00028 void eh_symbol_table_insert ( Eh_symbol_table s , 00029 char *key , 00030 char *value ); 00031 void eh_symbol_table_replace ( Eh_symbol_table s , 00032 char* key , 00033 char* value ); 00034 char* eh_symbol_table_lookup ( Eh_symbol_table s , 00035 const char *key ); 00036 void eh_symbol_table_print ( Eh_symbol_table s , 00037 FILE *fp ); 00038 void eh_symbol_table_print_aligned ( Eh_symbol_table s , 00039 FILE *fp ); 00040 gssize eh_symbol_table_size ( Eh_symbol_table s ); 00041 Eh_symbol_table eh_symbol_table_destroy ( Eh_symbol_table s ); 00042 00043 00044 gboolean eh_symbol_table_has_label ( Eh_symbol_table s , 00045 gchar* label ); 00046 gboolean eh_symbol_table_has_labels ( Eh_symbol_table s , 00047 gchar** labels ); 00048 gboolean eh_symbol_table_require_labels ( Eh_symbol_table s , 00049 gchar** labels , 00050 GError** error ); 00051 gchar* eh_symbol_table_value ( Eh_symbol_table s , 00052 const gchar* label ); 00053 gchar** eh_symbol_table_values ( Eh_symbol_table s , 00054 const gchar* label , 00055 const gchar* delimiters ); 00056 00057 double eh_symbol_table_dbl_value ( Eh_symbol_table s , 00058 gchar* label ); 00059 double* eh_symbol_table_dbl_array_value( Eh_symbol_table s , 00060 gchar* label , 00061 gint* len , 00062 const gchar* delims ); 00063 double eh_symbol_table_time_value ( Eh_symbol_table s , 00064 gchar* label ); 00065 gboolean eh_symbol_table_bool_value ( Eh_symbol_table s , 00066 gchar* label ); 00067 gint eh_symbol_table_int_value ( Eh_symbol_table s , 00068 gchar* label ); 00069 Eh_input_val eh_symbol_table_input_value ( Eh_symbol_table s , 00070 gchar* label , 00071 GError** err ); 00072 00073 guint eh_str_case_hash ( gconstpointer key ); 00074 gboolean eh_str_case_equal ( gconstpointer a, gconstpointer b); 00075 00076 #endif