diff --git a/src/calls-emergency-call-types.c b/src/calls-emergency-call-types.c index 0807aab..f45d342 100644 --- a/src/calls-emergency-call-types.c +++ b/src/calls-emergency-call-types.c @@ -20,11 +20,6 @@ * TODO: parse the actual database for dynamic updates and broader coverage */ -typedef struct { - char *number; - CallsEmergencyCallTypeFlags flags; -} CallsEmergencyNumber; - typedef struct { char *country_code; CallsEmergencyNumber numbers[3]; @@ -239,17 +234,15 @@ CallsEmergencyNumberTypes emergency_number_types[] = { }; -static void -calls_emergency_number_free (gpointer data) +void +calls_emergency_number_free (CallsEmergencyNumber *emergency_number) { - CallsEmergencyNumber *emergency_number = data; - g_free (emergency_number->number); g_free (emergency_number); } -static CallsEmergencyNumber * +CallsEmergencyNumber * calls_emergency_number_new (const char *number, CallsEmergencyCallTypeFlags flags) { CallsEmergencyNumber *emergency_number; @@ -262,17 +255,15 @@ calls_emergency_number_new (const char *number, CallsEmergencyCallTypeFlags flag } -static void -calls_emergency_call_country_data_free (gpointer data) +void +calls_emergency_call_country_data_free (CallsEmergencyCallCountryData *country_data) { - CallsEmergencyCallCountryData *country_data = data; - g_ptr_array_unref (country_data->numbers); g_free (country_data); } -static CallsEmergencyCallCountryData * +CallsEmergencyCallCountryData * calls_emergency_call_country_data_new (const char *country) { CallsEmergencyCallCountryData *country_data; @@ -281,7 +272,7 @@ calls_emergency_call_country_data_new (const char *country) g_assert (strlen (country) == 2); country_data = g_new0 (CallsEmergencyCallCountryData, 1); - country_data->numbers = g_ptr_array_new_with_free_func (calls_emergency_number_free); + country_data->numbers = g_ptr_array_new_with_free_func ((GDestroyNotify) calls_emergency_number_free); strcpy (country_data->country_code, country); return country_data; @@ -295,7 +286,7 @@ init_hash (void) GHashTable *table = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, - calls_emergency_call_country_data_free); + (GDestroyNotify) calls_emergency_call_country_data_free); for (int i = 0; i < G_N_ELEMENTS (emergency_number_types); i++) { CallsEmergencyCallCountryData *country; diff --git a/src/calls-emergency-call-types.h b/src/calls-emergency-call-types.h index 6044d9e..197ee58 100644 --- a/src/calls-emergency-call-types.h +++ b/src/calls-emergency-call-types.h @@ -33,11 +33,23 @@ typedef enum { } CallsEmergencyCallTypeFlags; +typedef struct { + char *number; + CallsEmergencyCallTypeFlags flags; +} CallsEmergencyNumber; + +CallsEmergencyNumber *calls_emergency_number_new (const char *number, + CallsEmergencyCallTypeFlags flags); +void calls_emergency_number_free (CallsEmergencyNumber *emergency_number); + typedef struct { char country_code[3]; /* Two letter country code */ GPtrArray *numbers; /* (element-type: CallsEmergencyNumber) */ } CallsEmergencyCallCountryData; +CallsEmergencyCallCountryData *calls_emergency_call_country_data_new (const char *country); +void calls_emergency_call_country_data_free (CallsEmergencyCallCountryData *country_data); + char *calls_emergency_call_type_get_name (const char *number, const char *country_code); GStrv calls_emergency_call_types_get_numbers_by_country_code (const char *country_code);