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