#include "e_fm_shared_types.h" #include "e_fm_shared_codec.h" static Eet_Data_Descriptor *_e_volume_edd = NULL; static Eet_Data_Descriptor *_e_storage_edd = NULL; Eet_Data_Descriptor * _e_volume_edd_new(void) { Eet_Data_Descriptor *edd; Eet_Data_Descriptor_Class eddc; if (!eet_eina_stream_data_descriptor_class_set(&eddc, sizeof(eddc), "e_volume", sizeof(E_Volume))) return NULL; // eddc.func.str_alloc = (char *(*)(const char *)) strdup; // eddc.func.str_free = (void (*)(const char *)) free; edd = eet_data_descriptor_stream_new(&eddc); #define DAT(MEMBER, TYPE) EET_DATA_DESCRIPTOR_ADD_BASIC(edd, E_Volume, #MEMBER, MEMBER, EET_T_##TYPE) DAT(type, INT); DAT(udi, STRING); DAT(uuid, STRING); DAT(label, STRING); DAT(fstype, STRING); DAT(size, ULONG_LONG); DAT(partition, CHAR); DAT(partition_number, INT); DAT(partition_label, STRING); DAT(mounted, CHAR); DAT(mount_point, STRING); DAT(parent, STRING); DAT(first_time, CHAR); DAT(encrypted, CHAR); DAT(unlocked, CHAR); DAT(efm_mode, UINT); #undef DAT return edd; } Eet_Data_Descriptor * _e_storage_edd_new(void) { Eet_Data_Descriptor *edd; Eet_Data_Descriptor_Class eddc; if (!eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "e_storage", sizeof (E_Storage))) return NULL; // eddc.func.str_alloc = (char *(*)(const char *)) strdup; // eddc.func.str_free = (void (*)(const char *)) free; edd = eet_data_descriptor_stream_new(&eddc); #define DAT(MEMBER, TYPE) EET_DATA_DESCRIPTOR_ADD_BASIC(edd, E_Storage, #MEMBER, MEMBER, EET_T_##TYPE) DAT(type, INT); DAT(udi, STRING); DAT(bus, STRING); DAT(drive_type, STRING); DAT(model, STRING); DAT(vendor, STRING); DAT(serial, STRING); DAT(removable, CHAR); DAT(media_available, CHAR); DAT(media_size, ULONG_LONG); DAT(requires_eject, CHAR); DAT(hotpluggable, CHAR); DAT(media_check_enabled, CHAR); DAT(icon.drive, STRING); DAT(icon.volume, STRING); #undef DAT return edd; } void * _e_fm_shared_codec_storage_encode(E_Storage *s, int *size) { return eet_data_descriptor_encode(_e_storage_edd, s, size); } E_Storage * _e_fm_shared_codec_storage_decode(void *s, int size) { return eet_data_descriptor_decode(_e_storage_edd, s, size); } void * _e_fm_shared_codec_volume_encode(E_Volume *v, int *size) { return eet_data_descriptor_encode(_e_volume_edd, v, size); } E_Volume * _e_fm_shared_codec_volume_decode(void *v, int size) { return eet_data_descriptor_decode(_e_volume_edd, v, size); } void _e_storage_volume_edd_init(void) { _e_volume_edd = _e_volume_edd_new(); _e_storage_edd = _e_storage_edd_new(); } void _e_storage_volume_edd_shutdown(void) { if (_e_volume_edd) { eet_data_descriptor_free(_e_volume_edd); _e_volume_edd = NULL; } if (_e_storage_edd) { eet_data_descriptor_free(_e_storage_edd); _e_storage_edd = NULL; } }