#include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" #include typedef LIBMTP_album_t * MLA_Album; typedef LIBMTP_album_t * MLA_AlbumList; /* needs DESTROY */ typedef LIBMTP_allowed_values_t * MLA_AllowedValues; typedef LIBMTP_file_t * MLA_File; typedef LIBMTP_file_t * MLA_FileList; /* needs DESTROY */ typedef LIBMTP_filesampledata_t * MLA_FileSampleData; typedef LIBMTP_devicestorage_t * MLA_DeviceStorage; typedef LIBMTP_error_t * MLA_Error; typedef LIBMTP_folder_t * MLA_Folder; typedef LIBMTP_folder_t * MLA_FolderList; /* needs DESTROY */ typedef LIBMTP_mtpdevice_t * MLA_MTPDevice; typedef LIBMTP_mtpdevice_t * MLA_MTPDeviceList;/* needs DESTROY */ typedef LIBMTP_playlist_t * MLA_Playlist; typedef LIBMTP_playlist_t * MLA_PlaylistList;/* needs DESTROY */ typedef LIBMTP_raw_device_t * MLA_RawDevice; typedef LIBMTP_track_t * MLA_Track; typedef LIBMTP_track_t * MLA_TrackList; /* needs DESTROY */ typedef const char * Utf8StringConst; typedef char * Utf8String; typedef char * Utf8String2Free; struct MLA_raw_device_list { MLA_RawDevice devices; int numdevs; }; typedef struct MLA_raw_device_list * MLA_RawDeviceList; #include "const-c.inc" MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API PREFIX = LIBMTP_ PROTOTYPES: DISABLE INCLUDE: const-xs.inc int LIBMTP_Check_Specific_Device(busno, devno) int busno int devno LIBMTP_error_number_t LIBMTP_Detect_Raw_Devices(list) MLA_RawDeviceList list = NO_INIT CODE: Newxz(list, 1, struct MLA_raw_device_list); RETVAL = LIBMTP_Detect_Raw_Devices(&list->devices, &list->numdevs); OUTPUT: RETVAL list #//FIXME use AV* ??? #// LIBMTP_error_number_t #// LIBMTP_Get_Connected_Devices(arg0) #// MLA_MTPDevice * arg0 #// Utf8StringConst LIBMTP_Get_Filetype_Description(arg0) LIBMTP_filetype_t arg0 MLA_MTPDeviceList LIBMTP_Get_First_Device() Utf8StringConst LIBMTP_Get_Property_Description(inproperty) LIBMTP_property_t inproperty #// FIXME #// int #// LIBMTP_Get_Supported_Devices_List(arg0, arg1) #// LIBMTP_device_entry_t ** arg0 #// int * arg1 void LIBMTP_Init() void LIBMTP_Set_Debug(arg0) int arg0 int LIBMTP_FILETYPE_IS_AUDIO(filetype) LIBMTP_filetype_t filetype int LIBMTP_FILETYPE_IS_VIDEO(filetype) LIBMTP_filetype_t filetype int LIBMTP_FILETYPE_IS_AUDIOVIDEO(filetype) LIBMTP_filetype_t filetype int LIBMTP_FILETYPE_IS_TRACK(filetype) LIBMTP_filetype_t filetype int LIBMTP_FILETYPE_IS_IMAGE(filetype) LIBMTP_filetype_t filetype int LIBMTP_FILETYPE_IS_ADDRESSBOOK(filetype) LIBMTP_filetype_t filetype int LIBMTP_FILETYPE_IS_CALENDAR(filetype) LIBMTP_filetype_t filetype #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::Album MLA_AlbumList new(class) SV * class CODE: RETVAL = LIBMTP_new_album_t(); OUTPUT: RETVAL uint32_t album_id(self, newValue = NO_INIT) MLA_Album self uint32_t newValue CODE: if (items > 1) self->album_id = newValue; RETVAL = self->album_id; OUTPUT: RETVAL uint32_t parent_id(self, newValue = NO_INIT) MLA_Album self uint32_t newValue CODE: if (items > 1) self->parent_id = newValue; RETVAL = self->parent_id; OUTPUT: RETVAL uint32_t storage_id(self, newValue = NO_INIT) MLA_Album self uint32_t newValue CODE: if (items > 1) self->storage_id = newValue; RETVAL = self->storage_id; OUTPUT: RETVAL Utf8String name(self, newValue = NO_INIT) MLA_Album self Utf8String newValue CODE: if (items > 1) self->name = strdup(newValue); RETVAL = self->name; OUTPUT: RETVAL Utf8String artist(self, newValue = NO_INIT) MLA_Album self Utf8String newValue CODE: if (items > 1) self->artist = strdup(newValue); RETVAL = self->artist; OUTPUT: RETVAL Utf8String composer(self, newValue = NO_INIT) MLA_Album self Utf8String newValue CODE: if (items > 1) self->composer = strdup(newValue); RETVAL = self->composer; OUTPUT: RETVAL Utf8String genre(self, newValue = NO_INIT) MLA_Album self Utf8String newValue CODE: if (items > 1) self->genre = strdup(newValue); RETVAL = self->genre; OUTPUT: RETVAL AV * tracks(self, newValue = NO_INIT) MLA_Album self AV * newValue PREINIT: I32 i; CODE: if (items > 1) { if (self->tracks) Safefree(self->tracks); i = av_len(newValue); self->no_tracks = i + 1; Newx(self->tracks, self->no_tracks, uint32_t); for (; i >= 0; --i) { self->tracks[i] = SvUV(*av_fetch(newValue, i, 0)); } } RETVAL = newAV(); sv_2mortal((SV*)RETVAL); av_extend(RETVAL, self->no_tracks - 1); for (i = 0; i < self->no_tracks; ++i) { av_store(RETVAL, i, newSVuv(self->tracks[i])); } OUTPUT: RETVAL uint32_t no_tracks(self) MLA_Album self CODE: RETVAL = self->no_tracks; OUTPUT: RETVAL MLA_Album _next(self) MLA_Album self CODE: RETVAL = self->next; OUTPUT: RETVAL #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::AlbumList void DESTROY(self) MLA_Album self CODE: LIBMTP_destroy_album_t(self); #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::AllowedValues MLA_AllowedValues new(class) SV * class CODE: Newxz(RETVAL, 1, LIBMTP_allowed_values_t); OUTPUT: RETVAL void DESTROY(self) MLA_AllowedValues self CODE: LIBMTP_destroy_allowed_values_t(self); Safefree(self); uint8_t u8max(self) MLA_AllowedValues self CODE: RETVAL = self->u8max; OUTPUT: RETVAL uint8_t u8min(self) MLA_AllowedValues self CODE: RETVAL = self->u8min; OUTPUT: RETVAL uint8_t u8step(self) MLA_AllowedValues self CODE: RETVAL = self->u8step; OUTPUT: RETVAL int8_t i8max(self) MLA_AllowedValues self CODE: RETVAL = self->i8max; OUTPUT: RETVAL int8_t i8min(self) MLA_AllowedValues self CODE: RETVAL = self->i8min; OUTPUT: RETVAL int8_t i8step(self) MLA_AllowedValues self CODE: RETVAL = self->i8step; OUTPUT: RETVAL uint16_t u16max(self) MLA_AllowedValues self CODE: RETVAL = self->u16max; OUTPUT: RETVAL uint16_t u16min(self) MLA_AllowedValues self CODE: RETVAL = self->u16min; OUTPUT: RETVAL uint16_t u16step(self) MLA_AllowedValues self CODE: RETVAL = self->u16step; OUTPUT: RETVAL int16_t i16max(self) MLA_AllowedValues self CODE: RETVAL = self->i16max; OUTPUT: RETVAL int16_t i16min(self) MLA_AllowedValues self CODE: RETVAL = self->i16min; OUTPUT: RETVAL int16_t i16step(self) MLA_AllowedValues self CODE: RETVAL = self->i16step; OUTPUT: RETVAL uint32_t u32max(self) MLA_AllowedValues self CODE: RETVAL = self->u32max; OUTPUT: RETVAL uint32_t u32min(self) MLA_AllowedValues self CODE: RETVAL = self->u32min; OUTPUT: RETVAL uint32_t u32step(self) MLA_AllowedValues self CODE: RETVAL = self->u32step; OUTPUT: RETVAL int32_t i32max(self) MLA_AllowedValues self CODE: RETVAL = self->i32max; OUTPUT: RETVAL int32_t i32min(self) MLA_AllowedValues self CODE: RETVAL = self->i32min; OUTPUT: RETVAL int32_t i32step(self) MLA_AllowedValues self CODE: RETVAL = self->i32step; OUTPUT: RETVAL uint64_t u64max(self) MLA_AllowedValues self CODE: RETVAL = self->u64max; OUTPUT: RETVAL uint64_t u64min(self) MLA_AllowedValues self CODE: RETVAL = self->u64min; OUTPUT: RETVAL uint64_t u64step(self) MLA_AllowedValues self CODE: RETVAL = self->u64step; OUTPUT: RETVAL int64_t i64max(self) MLA_AllowedValues self CODE: RETVAL = self->i64max; OUTPUT: RETVAL int64_t i64min(self) MLA_AllowedValues self CODE: RETVAL = self->i64min; OUTPUT: RETVAL int64_t i64step(self) MLA_AllowedValues self CODE: RETVAL = self->i64step; OUTPUT: RETVAL uint16_t num_entries(self) MLA_AllowedValues self CODE: RETVAL = self->num_entries; OUTPUT: RETVAL LIBMTP_datatype_t datatype(self) MLA_AllowedValues self CODE: RETVAL = self->datatype; OUTPUT: RETVAL int is_range(self) MLA_AllowedValues self CODE: RETVAL = self->is_range; OUTPUT: RETVAL int8_t * i8vals(self) MLA_AllowedValues self PREINIT: int size_RETVAL; CODE: size_RETVAL = self->num_entries; RETVAL = self->i8vals; if (!RETVAL) XSRETURN_EMPTY; OUTPUT: RETVAL CLEANUP: XSRETURN(size_RETVAL); uint8_t * u8vals(self) MLA_AllowedValues self PREINIT: int size_RETVAL; CODE: size_RETVAL = self->num_entries; RETVAL = self->u8vals; if (!RETVAL) XSRETURN_EMPTY; OUTPUT: RETVAL CLEANUP: XSRETURN(size_RETVAL); int16_t * i16vals(self) MLA_AllowedValues self PREINIT: int size_RETVAL; CODE: size_RETVAL = self->num_entries; RETVAL = self->i16vals; if (!RETVAL) XSRETURN_EMPTY; OUTPUT: RETVAL CLEANUP: XSRETURN(size_RETVAL); uint16_t * u16vals(self) MLA_AllowedValues self PREINIT: int size_RETVAL; CODE: size_RETVAL = self->num_entries; RETVAL = self->u16vals; if (!RETVAL) XSRETURN_EMPTY; OUTPUT: RETVAL CLEANUP: XSRETURN(size_RETVAL); int32_t * i32vals(self) MLA_AllowedValues self PREINIT: int size_RETVAL; CODE: size_RETVAL = self->num_entries; RETVAL = self->i32vals; if (!RETVAL) XSRETURN_EMPTY; OUTPUT: RETVAL CLEANUP: XSRETURN(size_RETVAL); uint32_t * u32vals(self) MLA_AllowedValues self PREINIT: int size_RETVAL; CODE: size_RETVAL = self->num_entries; RETVAL = self->u32vals; if (!RETVAL) XSRETURN_EMPTY; OUTPUT: RETVAL CLEANUP: XSRETURN(size_RETVAL); int64_t * i64vals(self) MLA_AllowedValues self PREINIT: int size_RETVAL; CODE: size_RETVAL = self->num_entries; RETVAL = self->i64vals; if (!RETVAL) XSRETURN_EMPTY; OUTPUT: RETVAL CLEANUP: XSRETURN(size_RETVAL); uint64_t * u64vals(self) MLA_AllowedValues self PREINIT: int size_RETVAL; CODE: size_RETVAL = self->num_entries; RETVAL = self->u64vals; if (!RETVAL) XSRETURN_EMPTY; OUTPUT: RETVAL CLEANUP: XSRETURN(size_RETVAL); #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::MTPDevice uint8_t object_bitsize(self) MLA_MTPDevice self CODE: RETVAL = self->object_bitsize; OUTPUT: RETVAL uint8_t maximum_battery_level(self) MLA_MTPDevice self CODE: RETVAL = self->maximum_battery_level; OUTPUT: RETVAL uint32_t default_music_folder(self) MLA_MTPDevice self CODE: RETVAL = self->default_music_folder; OUTPUT: RETVAL uint32_t default_playlist_folder(self) MLA_MTPDevice self CODE: RETVAL = self->default_playlist_folder; OUTPUT: RETVAL uint32_t default_picture_folder(self) MLA_MTPDevice self CODE: RETVAL = self->default_picture_folder; OUTPUT: RETVAL uint32_t default_video_folder(self) MLA_MTPDevice self CODE: RETVAL = self->default_video_folder; OUTPUT: RETVAL uint32_t default_organizer_folder(self) MLA_MTPDevice self CODE: RETVAL = self->default_organizer_folder; OUTPUT: RETVAL uint32_t default_zencast_folder(self) MLA_MTPDevice self CODE: RETVAL = self->default_zencast_folder; OUTPUT: RETVAL uint32_t default_album_folder(self) MLA_MTPDevice self CODE: RETVAL = self->default_album_folder; OUTPUT: RETVAL uint32_t default_text_folder(self) MLA_MTPDevice self CODE: RETVAL = self->default_text_folder; OUTPUT: RETVAL MLA_MTPDevice _next(self) MLA_MTPDevice self CODE: RETVAL = self->next; OUTPUT: RETVAL MLA_DeviceStorage _storage(self) MLA_MTPDevice self CODE: RETVAL = self->storage; OUTPUT: RETVAL MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::MTPDevice PREFIX = LIBMTP_ void LIBMTP_Clear_Errorstack(self) MLA_MTPDevice self uint32_t LIBMTP_Create_Folder(self, arg1, arg2, arg3) MLA_MTPDevice self Utf8String arg1 uint32_t arg2 uint32_t arg3 int LIBMTP_Create_New_Album(self, arg1) MLA_MTPDevice self MLA_Album arg1 int LIBMTP_Create_New_Playlist(self, arg1) MLA_MTPDevice self MLA_Playlist arg1 int LIBMTP_Delete_Object(self, arg1) MLA_MTPDevice self uint32_t arg1 void LIBMTP_Dump_Device_Info(self) MLA_MTPDevice self void LIBMTP_Dump_Errorstack(self) MLA_MTPDevice self int LIBMTP_Format_Storage(self, storage) MLA_MTPDevice self MLA_DeviceStorage storage MLA_AlbumList LIBMTP_Get_Album(self, arg1) MLA_MTPDevice self uint32_t arg1 MLA_AlbumList LIBMTP_Get_Album_List(self) MLA_MTPDevice self MLA_AlbumList LIBMTP_Get_Album_List_For_Storage(self, arg1) MLA_MTPDevice self uint32_t arg1 int LIBMTP_Get_Allowed_Property_Values(self, arg1, arg2, arg3) MLA_MTPDevice self LIBMTP_property_t arg1 LIBMTP_filetype_t arg2 MLA_AllowedValues arg3 int LIBMTP_Get_Batterylevel(self, maximum_level, current_level) MLA_MTPDevice self uint8_t maximum_level = NO_INIT uint8_t current_level = NO_INIT CODE: RETVAL = LIBMTP_Get_Batterylevel( self, &maximum_level, ¤t_level ); OUTPUT: RETVAL maximum_level current_level int LIBMTP_Get_Device_Certificate(self, devcert) MLA_MTPDevice self Utf8String2Free devcert = NO_INIT CODE: devcert = NULL; RETVAL = LIBMTP_Get_Device_Certificate(self, &devcert); OUTPUT: RETVAL devcert Utf8String2Free LIBMTP_Get_Deviceversion(self) MLA_MTPDevice self MLA_Error LIBMTP_Get_Errorstack(self) MLA_MTPDevice self #// FIXME implement callback int LIBMTP_Get_File_To_File(device, id, path) #//LIBMTP_Get_File_To_File(device, id, path, callback, data) MLA_MTPDevice device uint32_t id Utf8String path #// void * callback #// void const * data CODE: RETVAL = LIBMTP_Get_File_To_File(device, id, path, NULL, NULL); OUTPUT: RETVAL #// FIXME implement callback int LIBMTP_Get_File_To_File_Descriptor(device, id, fd) #//LIBMTP_Get_File_To_File_Descriptor(device, id, fd, callback, data) MLA_MTPDevice device uint32_t id int fd #// void * arg3 #// void const * arg4 CODE: RETVAL = LIBMTP_Get_File_To_File_Descriptor(device, id, fd, NULL, NULL); OUTPUT: RETVAL #// FIXME #// int #// LIBMTP_Get_File_To_Handler(self, arg1, arg2, arg3, arg4, arg5) #// MLA_MTPDevice self #// uint32_t arg1 #// void * arg2 #// void * arg3 #// void * arg4 #// void const * arg5 MLA_FileList LIBMTP_Get_Filelisting(self) MLA_MTPDevice self CODE: RETVAL = LIBMTP_Get_Filelisting_With_Callback(self, NULL, NULL); OUTPUT: RETVAL #//FIXME #// MLA_File #// LIBMTP_Get_Filelisting_With_Callback(self, arg1, arg2) #// MLA_MTPDevice self #// void * arg1 #// void const * arg2 MLA_FileList LIBMTP_Get_Filemetadata(self, arg1) MLA_MTPDevice self uint32_t arg1 MLA_FileList LIBMTP_Get_Files_And_Folders(self, arg1, arg2) MLA_MTPDevice self uint32_t arg1 uint32_t arg2 MLA_FolderList LIBMTP_Get_Folder_List(self) MLA_MTPDevice self MLA_FolderList LIBMTP_Get_Folder_List_For_Storage(self, arg1) MLA_MTPDevice self uint32_t arg1 Utf8String2Free LIBMTP_Get_Friendlyname(self) MLA_MTPDevice self Utf8String2Free LIBMTP_Get_Manufacturername(self) MLA_MTPDevice self Utf8String2Free LIBMTP_Get_Modelname(self) MLA_MTPDevice self MLA_PlaylistList LIBMTP_Get_Playlist(self, arg1) MLA_MTPDevice self uint32_t arg1 MLA_PlaylistList LIBMTP_Get_Playlist_List(self) MLA_MTPDevice self int LIBMTP_Get_Representative_Sample(self, object_id, data) MLA_MTPDevice self uint32_t object_id MLA_FileSampleData data int LIBMTP_Get_Representative_Sample_Format(self, filetype, sample) MLA_MTPDevice self LIBMTP_filetype_t filetype MLA_FileSampleData sample = NO_INIT CODE: sample = NULL; RETVAL = LIBMTP_Get_Representative_Sample_Format( self, filetype, &sample ); OUTPUT: RETVAL sample int LIBMTP_Get_Secure_Time(self, sectime) MLA_MTPDevice self Utf8String2Free sectime = NO_INIT CODE: sectime = NULL; RETVAL = LIBMTP_Get_Secure_Time(self, §ime); OUTPUT: RETVAL sectime Utf8String2Free LIBMTP_Get_Serialnumber(self) MLA_MTPDevice self int LIBMTP_Get_Storage(self, sortby = LIBMTP_STORAGE_SORTBY_NOTSORTED) MLA_MTPDevice self int sortby Utf8String2Free LIBMTP_Get_String_From_Object(self, arg1, arg2) MLA_MTPDevice self uint32_t arg1 LIBMTP_property_t arg2 #// Return an arrayref, or undef on failure AV * LIBMTP_Get_Supported_Filetypes(self) MLA_MTPDevice self PREINIT: uint16_t * filetypes = NULL; uint16_t length = 0; int i; CODE: if (LIBMTP_Get_Supported_Filetypes(self, &filetypes, &length)) { XSRETURN_UNDEF; } else { RETVAL = newAV(); sv_2mortal((SV*)RETVAL); av_extend(RETVAL, length - 1); for (i = 0; i < length; ++i) { av_store(RETVAL, i, newSVuv(filetypes[i])); } Safefree(filetypes); } OUTPUT: RETVAL Utf8String2Free LIBMTP_Get_Syncpartner(self) MLA_MTPDevice self #// FIXME implement callback int LIBMTP_Get_Track_To_File(device, id, path) #// LIBMTP_Get_Track_To_File(device, id, path, callback, data) MLA_MTPDevice device uint32_t id Utf8String path #// void * callback #// void const * data CODE: RETVAL = LIBMTP_Get_Track_To_File(device, id, path, NULL, NULL); OUTPUT: RETVAL #// FIXME implement callback int LIBMTP_Get_Track_To_File_Descriptor(device, id, fd) #//LIBMTP_Get_Track_To_File_Descriptor(device, id, fd, callback, data) MLA_MTPDevice device uint32_t id int fd #// void * callback #// void const * data CODE: RETVAL = LIBMTP_Get_Track_To_File_Descriptor(device, id, fd, NULL, NULL); OUTPUT: RETVAL #// FIXME #// int #// LIBMTP_Get_Track_To_Handler(self, arg1, arg2, arg3, arg4, arg5) #// MLA_MTPDevice self #// uint32_t arg1 #// void * arg2 #// void * arg3 #// void * arg4 #// void const * arg5 MLA_TrackList LIBMTP_Get_Tracklisting(self) MLA_MTPDevice self CODE: RETVAL = LIBMTP_Get_Tracklisting_With_Callback(self, NULL, NULL); OUTPUT: RETVAL #// FIXME #// MLA_Track #// LIBMTP_Get_Tracklisting_With_Callback(self, arg1, arg2) #// MLA_MTPDevice self #// void * arg1 #// void const * arg2 #// #// MLA_Track #// LIBMTP_Get_Tracklisting_With_Callback_For_Storage(self, arg1, arg2, arg3) #// MLA_MTPDevice self #// uint32_t arg1 #// void * arg2 #// void const * arg3 MLA_TrackList LIBMTP_Get_Trackmetadata(self, arg1) MLA_MTPDevice self uint32_t arg1 uint16_t LIBMTP_Get_u16_From_Object(self, arg1, arg2, arg3) MLA_MTPDevice self uint32_t arg1 LIBMTP_property_t arg2 uint16_t arg3 uint32_t LIBMTP_Get_u32_From_Object(self, arg1, arg2, arg3) MLA_MTPDevice self uint32_t arg1 LIBMTP_property_t arg2 uint32_t arg3 uint64_t LIBMTP_Get_u64_From_Object(self, arg1, arg2, arg3) MLA_MTPDevice self uint32_t arg1 LIBMTP_property_t arg2 uint64_t arg3 uint8_t LIBMTP_Get_u8_From_Object(self, arg1, arg2, arg3) MLA_MTPDevice self uint32_t arg1 LIBMTP_property_t arg2 uint8_t arg3 int LIBMTP_Is_Property_Supported(self, arg1, arg2) MLA_MTPDevice self LIBMTP_property_t arg1 LIBMTP_filetype_t arg2 uint32_t LIBMTP_Number_Devices_In_List(self) MLA_MTPDevice self #// FIXME #// int #// LIBMTP_Read_Event(self, arg1) #// MLA_MTPDevice self #// LIBMTP_event_t * arg1 void LIBMTP_Release_Device(self) MLA_MTPDevice self void LIBMTP_Release_Device_List(self) MLA_MTPDevice self int LIBMTP_Reset_Device(self) MLA_MTPDevice self #// FIXME implement callback int LIBMTP_Send_File_From_File(device, path, filedata) #//LIBMTP_Send_File_From_File(device, path, filedata, callback, data) MLA_MTPDevice device Utf8String path MLA_File filedata #// void * callback #// void const * data CODE: RETVAL = LIBMTP_Send_File_From_File(device, path, filedata, NULL, NULL); OUTPUT: RETVAL #// FIXME implement callback int LIBMTP_Send_File_From_File_Descriptor(device, fd, filedata, callback, data) #//LIBMTP_Send_File_From_File_Descriptor(device, fd, filedata, callback, data) MLA_MTPDevice device int fd MLA_File filedata #// void * callback #// void const * data CODE: RETVAL = LIBMTP_Send_File_From_File_Descriptor(device, fd, filedata, NULL, NULL); OUTPUT: RETVAL #// FIXME #// int #// LIBMTP_Send_File_From_Handler(self, arg1, arg2, arg3, arg4, arg5) #// MLA_MTPDevice self #// void * arg1 #// void * arg2 #// MLA_File arg3 #// void * arg4 #// void const * arg5 int LIBMTP_Send_Representative_Sample(self, arg1, arg2) MLA_MTPDevice self uint32_t arg1 MLA_FileSampleData arg2 #// FIXME implement callback int LIBMTP_Send_Track_From_File(device, path, metadata) #//LIBMTP_Send_Track_From_File(device, path, metadata, callback, data) MLA_MTPDevice device Utf8String path MLA_Track metadata #// void * callback #// void const * data CODE: RETVAL = LIBMTP_Send_Track_From_File(device, path, metadata, NULL, NULL); OUTPUT: RETVAL #// FIXME implement callback int LIBMTP_Send_Track_From_File_Descriptor(device, fd, metadata) #//LIBMTP_Send_Track_From_File_Descriptor(device, fd, metadata, callback, data) MLA_MTPDevice device int fd MLA_Track metadata #// void * callback #// void const * data CODE: RETVAL = LIBMTP_Send_Track_From_File_Descriptor(device, fd, metadata, NULL, NULL); OUTPUT: RETVAL #// FIXME #// int #// LIBMTP_Send_Track_From_Handler(self, arg1, arg2, arg3, arg4, arg5) #// MLA_MTPDevice self #// void * arg1 #// void * arg2 #// MLA_Track arg3 #// void * arg4 #// void const * arg5 int LIBMTP_Set_Album_Name(self, arg1, arg2) MLA_MTPDevice self MLA_Album arg1 Utf8String arg2 int LIBMTP_Set_File_Name(self, arg1, arg2) MLA_MTPDevice self MLA_File arg1 Utf8String arg2 int LIBMTP_Set_Folder_Name(self, arg1, arg2) MLA_MTPDevice self MLA_Folder arg1 Utf8String arg2 int LIBMTP_Set_Friendlyname(self, arg1) MLA_MTPDevice self Utf8String arg1 int LIBMTP_Set_Object_String(self, arg1, arg2, arg3) MLA_MTPDevice self uint32_t arg1 LIBMTP_property_t arg2 Utf8String arg3 int LIBMTP_Set_Object_u16(self, arg1, arg2, arg3) MLA_MTPDevice self uint32_t arg1 LIBMTP_property_t arg2 uint16_t arg3 int LIBMTP_Set_Object_u32(self, arg1, arg2, arg3) MLA_MTPDevice self uint32_t arg1 LIBMTP_property_t arg2 uint32_t arg3 int LIBMTP_Set_Object_u8(self, arg1, arg2, arg3) MLA_MTPDevice self uint32_t arg1 LIBMTP_property_t arg2 uint8_t arg3 int LIBMTP_Set_Playlist_Name(self, arg1, arg2) MLA_MTPDevice self MLA_Playlist arg1 Utf8String arg2 int LIBMTP_Set_Syncpartner(self, arg1) MLA_MTPDevice self Utf8String arg1 int LIBMTP_Set_Track_Name(self, arg1, arg2) MLA_MTPDevice self MLA_Track arg1 Utf8String arg2 int LIBMTP_Track_Exists(self, arg1) MLA_MTPDevice self uint32_t arg1 int LIBMTP_Update_Album(self, arg1) MLA_MTPDevice self MLA_Album arg1 int LIBMTP_Update_Playlist(self, arg1) MLA_MTPDevice self MLA_Playlist arg1 int LIBMTP_Update_Track_Metadata(self, arg1) MLA_MTPDevice self MLA_Track arg1 #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::MTPDeviceList void DESTROY(self) MLA_MTPDevice self CODE: LIBMTP_Release_Device_List(self); #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::DeviceStorage uint32_t id(self) MLA_DeviceStorage self CODE: RETVAL = self->id; OUTPUT: RETVAL uint16_t StorageType(self) MLA_DeviceStorage self CODE: RETVAL = self->StorageType; OUTPUT: RETVAL uint16_t FilesystemType(self) MLA_DeviceStorage self CODE: RETVAL = self->FilesystemType; OUTPUT: RETVAL uint16_t AccessCapability(self) MLA_DeviceStorage self CODE: RETVAL = self->AccessCapability; OUTPUT: RETVAL uint64_t MaxCapacity(self) MLA_DeviceStorage self CODE: RETVAL = self->MaxCapacity; OUTPUT: RETVAL uint64_t FreeSpaceInBytes(self) MLA_DeviceStorage self CODE: RETVAL = self->FreeSpaceInBytes; OUTPUT: RETVAL uint64_t FreeSpaceInObjects(self) MLA_DeviceStorage self CODE: RETVAL = self->FreeSpaceInObjects; OUTPUT: RETVAL Utf8String StorageDescription(self) MLA_DeviceStorage self CODE: RETVAL = self->StorageDescription; OUTPUT: RETVAL Utf8String VolumeIdentifier(self) MLA_DeviceStorage self CODE: RETVAL = self->VolumeIdentifier; OUTPUT: RETVAL MLA_DeviceStorage _next(self) MLA_DeviceStorage self CODE: RETVAL = self->next; OUTPUT: RETVAL MLA_DeviceStorage _prev(self) MLA_DeviceStorage self CODE: RETVAL = self->prev; OUTPUT: RETVAL #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::Error LIBMTP_error_number_t errornumber(self) MLA_Error self CODE: RETVAL = self->errornumber; OUTPUT: RETVAL Utf8String error_text(self) MLA_Error self CODE: RETVAL = self->error_text; OUTPUT: RETVAL MLA_Error next(self) MLA_Error self CODE: RETVAL = self->next; OUTPUT: RETVAL #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::File MLA_FileList new(class) SV * class CODE: RETVAL = LIBMTP_new_file_t(); OUTPUT: RETVAL uint32_t item_id(self, newValue = NO_INIT) MLA_File self uint32_t newValue CODE: if (items > 1) self->item_id = newValue; RETVAL = self->item_id; OUTPUT: RETVAL uint32_t parent_id(self, newValue = NO_INIT) MLA_File self uint32_t newValue CODE: if (items > 1) self->parent_id = newValue; RETVAL = self->parent_id; OUTPUT: RETVAL uint32_t storage_id(self, newValue = NO_INIT) MLA_File self uint32_t newValue CODE: if (items > 1) self->storage_id = newValue; RETVAL = self->storage_id; OUTPUT: RETVAL Utf8String filename(self, newValue = NO_INIT) MLA_File self Utf8String newValue CODE: if (items > 1) self->filename = strdup(newValue); RETVAL = self->filename; OUTPUT: RETVAL uint64_t filesize(self, newValue = NO_INIT) MLA_File self uint64_t newValue CODE: if (items > 1) self->filesize = newValue; RETVAL = self->filesize; OUTPUT: RETVAL time_t modificationdate(self, newValue = NO_INIT) MLA_File self time_t newValue CODE: if (items > 1) self->modificationdate = newValue; RETVAL = self->modificationdate; OUTPUT: RETVAL LIBMTP_filetype_t filetype(self, newValue = NO_INIT) MLA_File self LIBMTP_filetype_t newValue CODE: if (items > 1) self->filetype = newValue; RETVAL = self->filetype; OUTPUT: RETVAL MLA_File _next(self) MLA_File self CODE: RETVAL = self->next; OUTPUT: RETVAL #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::FileList void DESTROY(self) MLA_File self CODE: LIBMTP_destroy_file_t(self); #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::FileSampleData void DESTROY(self) MLA_FileSampleData self CODE: LIBMTP_destroy_filesampledata_t(self); MLA_FileSampleData new(class) SV * class CODE: RETVAL = LIBMTP_new_filesampledata_t(); OUTPUT: RETVAL uint32_t width(self, newValue = NO_INIT) MLA_FileSampleData self uint32_t newValue CODE: if (items > 1) self->width = newValue; RETVAL = self->width; OUTPUT: RETVAL uint32_t height(self, newValue = NO_INIT) MLA_FileSampleData self uint32_t newValue CODE: if (items > 1) self->height = newValue; RETVAL = self->height; OUTPUT: RETVAL uint32_t duration(self, newValue = NO_INIT) MLA_FileSampleData self uint32_t newValue CODE: if (items > 1) self->duration = newValue; RETVAL = self->duration; OUTPUT: RETVAL LIBMTP_filetype_t filetype(self, newValue = NO_INIT) MLA_FileSampleData self LIBMTP_filetype_t newValue CODE: if (items > 1) self->filetype = newValue; RETVAL = self->filetype; OUTPUT: RETVAL uint64_t size(self) MLA_FileSampleData self CODE: RETVAL = self->size; OUTPUT: RETVAL SV * data(self, newValue = NO_INIT) MLA_FileSampleData self SV * newValue PREINIT: char * data; STRLEN size; CODE: if (items > 1) { if (self->data) Safefree(self->data); data = SvPVbyte(newValue, size); Newx(self->data, size, char); Copy(data, self->data, size, char); self->size = size; } RETVAL = newSVpvn(self->data, self->size); SvUTF8_off(RETVAL); OUTPUT: RETVAL #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::Folder MLA_FolderList new(class) SV * class CODE: RETVAL = LIBMTP_new_folder_t(); OUTPUT: RETVAL uint32_t folder_id(self, newValue = NO_INIT) MLA_Folder self uint32_t newValue CODE: if (items > 1) self->folder_id = newValue; RETVAL = self->folder_id; OUTPUT: RETVAL uint32_t parent_id(self, newValue = NO_INIT) MLA_Folder self uint32_t newValue CODE: if (items > 1) self->parent_id = newValue; RETVAL = self->parent_id; OUTPUT: RETVAL uint32_t storage_id(self, newValue = NO_INIT) MLA_Folder self uint32_t newValue CODE: if (items > 1) self->storage_id = newValue; RETVAL = self->storage_id; OUTPUT: RETVAL Utf8String name(self, newValue = NO_INIT) MLA_Folder self Utf8String newValue CODE: if (items > 1) self->name = strdup(newValue); RETVAL = self->name; OUTPUT: RETVAL MLA_Folder _sibling(self) MLA_Folder self CODE: RETVAL = self->sibling; OUTPUT: RETVAL MLA_Folder _child(self) MLA_Folder self CODE: RETVAL = self->child; OUTPUT: RETVAL MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::Folder PREFIX = LIBMTP MLA_Folder LIBMTP_Find_Folder(arg0, arg1) MLA_Folder arg0 uint32_t arg1 #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::FolderList void DESTROY(self) MLA_Folder self CODE: LIBMTP_destroy_folder_t(self); #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::Playlist MLA_PlaylistList new(class) SV * class CODE: RETVAL = LIBMTP_new_playlist_t(); OUTPUT: RETVAL uint32_t playlist_id(self, newValue = NO_INIT) MLA_Playlist self uint32_t newValue CODE: if (items > 1) self->playlist_id = newValue; RETVAL = self->playlist_id; OUTPUT: RETVAL uint32_t parent_id(self, newValue = NO_INIT) MLA_Playlist self uint32_t newValue CODE: if (items > 1) self->parent_id = newValue; RETVAL = self->parent_id; OUTPUT: RETVAL uint32_t storage_id(self, newValue = NO_INIT) MLA_Playlist self uint32_t newValue CODE: if (items > 1) self->storage_id = newValue; RETVAL = self->storage_id; OUTPUT: RETVAL Utf8String name(self, newValue = NO_INIT) MLA_Playlist self Utf8String newValue CODE: if (items > 1) self->name = strdup(newValue); RETVAL = self->name; OUTPUT: RETVAL AV * tracks(self, newValue = NO_INIT) MLA_Playlist self AV * newValue PREINIT: I32 i; CODE: if (items > 1) { if (self->tracks) Safefree(self->tracks); i = av_len(newValue); self->no_tracks = i + 1; Newx(self->tracks, self->no_tracks, uint32_t); for (; i >= 0; --i) { self->tracks[i] = SvUV(*av_fetch(newValue, i, 0)); } } RETVAL = newAV(); sv_2mortal((SV*)RETVAL); av_extend(RETVAL, self->no_tracks - 1); for (i = 0; i < self->no_tracks; ++i) { av_store(RETVAL, i, newSVuv(self->tracks[i])); } OUTPUT: RETVAL uint32_t no_tracks(self) MLA_Playlist self CODE: RETVAL = self->no_tracks; OUTPUT: RETVAL MLA_Playlist _next(self) MLA_Playlist self CODE: RETVAL = self->next; OUTPUT: RETVAL #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::PlaylistList void DESTROY(self) MLA_Playlist self CODE: LIBMTP_destroy_playlist_t(self); #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::RawDevice Utf8String vendor(self) MLA_RawDevice self CODE: RETVAL = self->device_entry.vendor; OUTPUT: RETVAL uint16_t vendor_id(self) MLA_RawDevice self CODE: RETVAL = self->device_entry.vendor_id; OUTPUT: RETVAL Utf8String product(self) MLA_RawDevice self CODE: RETVAL = self->device_entry.product; OUTPUT: RETVAL uint16_t product_id(self) MLA_RawDevice self CODE: RETVAL = self->device_entry.product_id; OUTPUT: RETVAL uint32_t device_flags(self) MLA_RawDevice self CODE: RETVAL = self->device_entry.device_flags; OUTPUT: RETVAL uint32_t bus_location(self) MLA_RawDevice self CODE: RETVAL = self->bus_location; OUTPUT: RETVAL uint8_t devnum(self) MLA_RawDevice self CODE: RETVAL = self->devnum; OUTPUT: RETVAL MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::RawDevice PREFIX = LIBMTP_ MLA_MTPDeviceList LIBMTP_Open_Raw_Device(self) MLA_RawDevice self MLA_MTPDeviceList LIBMTP_Open_Raw_Device_Uncached(self) MLA_RawDevice self #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::RawDeviceList void DESTROY(self) MLA_RawDeviceList self CODE: Safefree(self->devices); Safefree(self); int count(self) MLA_RawDeviceList self CODE: RETVAL = self->numdevs; OUTPUT: RETVAL MLA_RawDevice _device(self, index) MLA_RawDeviceList self int index CODE: if (index >= 0 && index < self->numdevs) { RETVAL = self->devices + index; } else { RETVAL = NULL; } OUTPUT: RETVAL void _devices(self) MLA_RawDeviceList self PREINIT: int i; PPCODE: EXTEND(SP, self->numdevs); for (i = 0; i < self->numdevs; ++i) { SV* sv = sv_newmortal(); sv_setref_pv(sv, "Media::LibMTP::API::RawDevice", (void*)(self->devices + i)); PUSHs(sv); } #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::Track MLA_TrackList new(class) SV * class CODE: RETVAL = LIBMTP_new_track_t(); OUTPUT: RETVAL uint32_t item_id(self, newValue = NO_INIT) MLA_Track self uint32_t newValue CODE: if (items > 1) self->item_id = newValue; RETVAL = self->item_id; OUTPUT: RETVAL uint32_t parent_id(self, newValue = NO_INIT) MLA_Track self uint32_t newValue CODE: if (items > 1) self->parent_id = newValue; RETVAL = self->parent_id; OUTPUT: RETVAL uint32_t storage_id(self, newValue = NO_INIT) MLA_Track self uint32_t newValue CODE: if (items > 1) self->storage_id = newValue; RETVAL = self->storage_id; OUTPUT: RETVAL Utf8String title(self, newValue = NO_INIT) MLA_Track self Utf8String newValue CODE: if (items > 1) self->title = strdup(newValue); RETVAL = self->title; OUTPUT: RETVAL Utf8String artist(self, newValue = NO_INIT) MLA_Track self Utf8String newValue CODE: if (items > 1) self->artist = strdup(newValue); RETVAL = self->artist; OUTPUT: RETVAL Utf8String composer(self, newValue = NO_INIT) MLA_Track self Utf8String newValue CODE: if (items > 1) self->composer = strdup(newValue); RETVAL = self->composer; OUTPUT: RETVAL Utf8String genre(self, newValue = NO_INIT) MLA_Track self Utf8String newValue CODE: if (items > 1) self->genre = strdup(newValue); RETVAL = self->genre; OUTPUT: RETVAL Utf8String album(self, newValue = NO_INIT) MLA_Track self Utf8String newValue CODE: if (items > 1) self->album = strdup(newValue); RETVAL = self->album; OUTPUT: RETVAL Utf8String date(self, newValue = NO_INIT) MLA_Track self Utf8String newValue CODE: if (items > 1) self->date = strdup(newValue); RETVAL = self->date; OUTPUT: RETVAL Utf8String filename(self, newValue = NO_INIT) MLA_Track self Utf8String newValue CODE: if (items > 1) self->filename = strdup(newValue); RETVAL = self->filename; OUTPUT: RETVAL uint16_t tracknumber(self, newValue = NO_INIT) MLA_Track self uint16_t newValue CODE: if (items > 1) self->tracknumber = newValue; RETVAL = self->tracknumber; OUTPUT: RETVAL uint32_t duration(self, newValue = NO_INIT) MLA_Track self uint32_t newValue CODE: if (items > 1) self->duration = newValue; RETVAL = self->duration; OUTPUT: RETVAL uint32_t samplerate(self, newValue = NO_INIT) MLA_Track self uint32_t newValue CODE: if (items > 1) self->samplerate = newValue; RETVAL = self->samplerate; OUTPUT: RETVAL uint16_t nochannels(self, newValue = NO_INIT) MLA_Track self uint16_t newValue CODE: if (items > 1) self->nochannels = newValue; RETVAL = self->nochannels; OUTPUT: RETVAL uint32_t wavecodec(self, newValue = NO_INIT) MLA_Track self uint32_t newValue CODE: if (items > 1) self->wavecodec = newValue; RETVAL = self->wavecodec; OUTPUT: RETVAL uint32_t bitrate(self, newValue = NO_INIT) MLA_Track self uint32_t newValue CODE: if (items > 1) self->bitrate = newValue; RETVAL = self->bitrate; OUTPUT: RETVAL uint16_t bitratetype(self, newValue = NO_INIT) MLA_Track self uint16_t newValue CODE: if (items > 1) self->bitratetype = newValue; RETVAL = self->bitratetype; OUTPUT: RETVAL uint16_t rating(self, newValue = NO_INIT) MLA_Track self uint16_t newValue CODE: if (items > 1) self->rating = newValue; RETVAL = self->rating; OUTPUT: RETVAL uint32_t usecount(self, newValue = NO_INIT) MLA_Track self uint32_t newValue CODE: if (items > 1) self->usecount = newValue; RETVAL = self->usecount; OUTPUT: RETVAL uint64_t filesize(self, newValue = NO_INIT) MLA_Track self uint64_t newValue CODE: if (items > 1) self->filesize = newValue; RETVAL = self->filesize; OUTPUT: RETVAL time_t modificationdate(self, newValue = NO_INIT) MLA_Track self time_t newValue CODE: if (items > 1) self->modificationdate = newValue; RETVAL = self->modificationdate; OUTPUT: RETVAL LIBMTP_filetype_t filetype(self, newValue = NO_INIT) MLA_Track self LIBMTP_filetype_t newValue CODE: if (items > 1) self->filetype = newValue; RETVAL = self->filetype; OUTPUT: RETVAL MLA_Track _next(self) MLA_Track self CODE: RETVAL = self->next; OUTPUT: RETVAL #-------------------------------------------------------------------- MODULE = Media::LibMTP::API PACKAGE = Media::LibMTP::API::TrackList void DESTROY(self) MLA_Track self CODE: LIBMTP_destroy_track_t(self);