extern "C" int metadata_editor_create(metadata_editor_h *metadata) {
metadata_editor_retvm_if(metadata == NULL, METADATA_EDITOR_ERROR_INVALID_PARAMETER, "Invalid metadata");
- metadata_editor_s *_metadata = new metadata_editor_s; // Allocate a structure for handler
- metadata_editor_retvm_if(_metadata == NULL, METADATA_EDITOR_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+ metadata_editor_s *_metadata = g_new0(metadata_editor_s, 1);
_metadata->file = NULL;
_metadata->filetype = METADATA_EDITOR_FORMAT_NOTYPE; // Specify file type out of range
}
}
-// *** This function is used to free memory that was allocated with metadata_editor_create(...) and metadata_editor_set_path(...) functions *** //
extern "C" int metadata_editor_destroy(metadata_editor_h metadata) {
metadata_editor_s *_metadata = (metadata_editor_s*)metadata;
+
metadata_editor_retvm_if(!_metadata, METADATA_EDITOR_ERROR_INVALID_PARAMETER, "Invalid metadata");
- switch (_metadata->filetype) {
- case METADATA_EDITOR_FORMAT_MP3: {
- // Bring the pointer to actual file type
- TagLib::MPEG::File* _file = (TagLib::MPEG::File*)_metadata->file;
- metadata_editor_info("file free [%p]", _metadata->file);
- delete _file;
- break;
- }
- case METADATA_EDITOR_FORMAT_MP4: {
- TagLib::MP4::File* _file = (TagLib::MP4::File*)_metadata->file;
- metadata_editor_info("file free [%p]", _metadata->file);
- delete _file;
- break;
- }
-#if 0
- case METADATA_EDITOR_FORMAT_FLAC: {
- TagLib::FLAC::File* _file = (TagLib::FLAC::File*)_metadata->file;
- metadata_editor_info("file free [%p]", _metadata->file);
- delete _file;
- break;
- }
- case METADATA_EDITOR_FORMAT_OGG_VORBIS: {
- TagLib::Ogg::Vorbis::File* _file = (TagLib::Ogg::Vorbis::File*)_metadata->file;
- metadata_editor_info("file free [%p]", _metadata->file);
- delete _file;
- break;
- }
- case METADATA_EDITOR_FORMAT_OGG_FLAC: {
- TagLib::Ogg::FLAC::File* _file = (TagLib::Ogg::FLAC::File*)_metadata->file;
- metadata_editor_info("file free [%p]", _metadata->file);
- delete _file;
- break;
- }
- case METADATA_EDITOR_FORMAT_WAV: {
- TagLib::RIFF::WAV::File* _file = (TagLib::RIFF::WAV::File*)_metadata->file;
- metadata_editor_info("file free [%p]", _metadata->file);
- delete _file;
- break;
- }
-#endif
- default:
- metadata_editor_error("Wrong file type");
- return METADATA_EDITOR_ERROR_INVALID_PARAMETER;
- }
+ if (_metadata->file)
+ delete _metadata->file;
- metadata_editor_info("<metadata_editor_s> with address %p will be freed", metadata);
- delete _metadata;
+ g_free(_metadata);
return METADATA_EDITOR_ERROR_NONE;
}