libmtp.h   libmtp.h 
skipping to change at line 13 skipping to change at line 13
* *
* Interface to the Media Transfer Protocol library. * Interface to the Media Transfer Protocol library.
* *
* <code> * <code>
* #include <libmtp.h> * #include <libmtp.h>
* </code> * </code>
*/ */
#ifndef LIBMTP_H_INCLUSION_GUARD #ifndef LIBMTP_H_INCLUSION_GUARD
#define LIBMTP_H_INCLUSION_GUARD #define LIBMTP_H_INCLUSION_GUARD
#define LIBMTP_VERSION 0.0.8 #define LIBMTP_VERSION 0.0.9
/* This handles MSVC pecularities */ /* This handles MSVC pecularities */
#ifdef _MSC_VER #ifdef _MSC_VER
#include <windows.h> #include <windows.h>
#define __WIN32__ #define __WIN32__
#define snprintf _snprintf #define snprintf _snprintf
#define ssize_t SSIZE_T #define ssize_t SSIZE_T
#endif #endif
#include <stdio.h> #include <stdio.h>
skipping to change at line 42 skipping to change at line 42
typedef char int8_t; typedef char int8_t;
typedef unsigned char uint8_t; typedef unsigned char uint8_t;
typedef __int16 int16_t; typedef __int16 int16_t;
typedef unsigned __int16 uint16_t; typedef unsigned __int16 uint16_t;
typedef __int32 int32_t; typedef __int32 int32_t;
typedef unsigned __int32 uint32_t; typedef unsigned __int32 uint32_t;
typedef unsigned __int64 uint64_t; typedef unsigned __int64 uint64_t;
#endif #endif
/** /**
* @defgroup types libnjb global type definitions * @defgroup types libmtp global type definitions
* @{ * @{
* The filetypes defined here are the external types used * The filetypes defined here are the external types used
* by the libmtp library interface. The types used internally * by the libmtp library interface. The types used internally
* as PTP-defined enumerator types is something different. * as PTP-defined enumerator types is something different.
*/ */
typedef enum { typedef enum {
LIBMTP_FILETYPE_WAV, LIBMTP_FILETYPE_WAV,
LIBMTP_FILETYPE_MP3, LIBMTP_FILETYPE_MP3,
LIBMTP_FILETYPE_WMA, LIBMTP_FILETYPE_WMA,
LIBMTP_FILETYPE_OGG, LIBMTP_FILETYPE_OGG,
LIBMTP_FILETYPE_AUDIBLE,
LIBMTP_FILETYPE_MP4, LIBMTP_FILETYPE_MP4,
LIBMTP_FILETYPE_UNDEF_AUDIO, LIBMTP_FILETYPE_UNDEF_AUDIO,
LIBMTP_FILETYPE_WMV, LIBMTP_FILETYPE_WMV,
LIBMTP_FILETYPE_AVI, LIBMTP_FILETYPE_AVI,
LIBMTP_FILETYPE_MPEG, LIBMTP_FILETYPE_MPEG,
LIBMTP_FILETYPE_ASF, LIBMTP_FILETYPE_ASF,
LIBMTP_FILETYPE_QT, LIBMTP_FILETYPE_QT,
LIBMTP_FILETYPE_UNDEF_VIDEO, LIBMTP_FILETYPE_UNDEF_VIDEO,
LIBMTP_FILETYPE_JPEG, LIBMTP_FILETYPE_JPEG,
LIBMTP_FILETYPE_JFIF, LIBMTP_FILETYPE_JFIF,
skipping to change at line 82 skipping to change at line 83
LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT, LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT,
LIBMTP_FILETYPE_WINEXEC, LIBMTP_FILETYPE_WINEXEC,
LIBMTP_FILETYPE_TEXT, LIBMTP_FILETYPE_TEXT,
LIBMTP_FILETYPE_HTML, LIBMTP_FILETYPE_HTML,
LIBMTP_FILETYPE_UNKNOWN LIBMTP_FILETYPE_UNKNOWN
} LIBMTP_filetype_t; } LIBMTP_filetype_t;
typedef struct LIBMTP_device_entry_struct LIBMTP_device_entry_t; /**< @see LIBMTP_device_entry_struct */ typedef struct LIBMTP_device_entry_struct LIBMTP_device_entry_t; /**< @see LIBMTP_device_entry_struct */
typedef struct LIBMTP_mtpdevice_struct LIBMTP_mtpdevice_t; /**< @see LIBMTP _mtpdevice_struct */ typedef struct LIBMTP_mtpdevice_struct LIBMTP_mtpdevice_t; /**< @see LIBMTP _mtpdevice_struct */
typedef struct LIBMTP_file_struct LIBMTP_file_t; /**< @see LIBMTP_file_stru ct */ typedef struct LIBMTP_file_struct LIBMTP_file_t; /**< @see LIBMTP_file_stru ct */
typedef struct LIBMTP_track_struct LIBMTP_track_t; /**< @see LIBMTP_track_s truct */ typedef struct LIBMTP_track_struct LIBMTP_track_t; /**< @see LIBMTP_track_s truct */
typedef struct LIBMTP_playlist_struct LIBMTP_playlist_t; /**< @see LIBMTP_p laylist_struct */
typedef struct LIBMTP_folder_struct LIBMTP_folder_t; /**< @see LIBMTP_folde r_t */ typedef struct LIBMTP_folder_struct LIBMTP_folder_t; /**< @see LIBMTP_folde r_t */
typedef struct LIBMTP_object_struct LIBMTP_object_t; /**< @see LIBMTP_objec t_t */ typedef struct LIBMTP_object_struct LIBMTP_object_t; /**< @see LIBMTP_objec t_t */
/** @} */
/**
* The callback type definition. Notice that a progress percentage ratio
* is easy to calculate by dividing <code>sent</code> by
* <code>total</code>.
* @param sent the number of bytes sent so far
* @param total the total number of bytes to send
* @param data a user-defined dereferencable pointer
* @return if anything else than 0 is returned, the current transfer will b
e
* interrupted / cancelled.
*/
typedef int LIBMTP_progressfunc_t (uint64_t const sent, uint64_t const tota
l,
void const * const data);
/**
* @}
* @defgroup structar libmtp data structures
* @{
*/
/** /**
* A data structure to hold MTP device entries * A data structure to hold MTP device entries
*/ */
struct LIBMTP_device_entry_struct { struct LIBMTP_device_entry_struct {
char *name; /**< The descriptive name of this device */ char *name; /**< The descriptive name of this device */
uint16_t vendor_id; /**< Vendor ID for this device */ uint16_t vendor_id; /**< Vendor ID for this device */
uint16_t product_id; /**< Product ID for this device */ uint16_t product_id; /**< Product ID for this device */
}; };
skipping to change at line 115 skipping to change at line 135
void *params; void *params;
/** /**
* USB device for this device, must be cast into * USB device for this device, must be cast into
* \c (PTP_USB*) before internal use. * \c (PTP_USB*) before internal use.
*/ */
void *usbinfo; void *usbinfo;
/** The storage ID for this device */ /** The storage ID for this device */
unsigned storage_id; unsigned storage_id;
/** The maximum battery level for this device */ /** The maximum battery level for this device */
uint8_t maximum_battery_level; uint8_t maximum_battery_level;
/** Default music folder */
uint32_t default_music_folder;
/** Default playlist folder */
uint32_t default_playlist_folder;
/** Default picture folder */
uint32_t default_picture_folder;
/** Default video folder */
uint32_t default_video_folder;
/** Default organizer folder */
uint32_t default_organizer_folder;
/** Default ZENcast folder (only Creative devices...) */
uint32_t default_zencast_folder;
}; };
/** /**
* MTP file struct * MTP file struct
*/ */
struct LIBMTP_file_struct { struct LIBMTP_file_struct {
uint32_t item_id; /**< Unique item ID */ uint32_t item_id; /**< Unique item ID */
uint32_t parent_id; /**< ID of parent folder */ uint32_t parent_id; /**< ID of parent folder */
char *filename; /**< Filename of this file */ char *filename; /**< Filename of this file */
uint64_t filesize; /**< Size of file in bytes */ uint64_t filesize; /**< Size of file in bytes */
skipping to change at line 142 skipping to change at line 174
struct LIBMTP_track_struct { struct LIBMTP_track_struct {
uint32_t item_id; /**< Unique item ID */ uint32_t item_id; /**< Unique item ID */
char *title; /**< Track title */ char *title; /**< Track title */
char *artist; /**< Name of recording artist */ char *artist; /**< Name of recording artist */
char *genre; /**< Genre name for track */ char *genre; /**< Genre name for track */
char *album; /**< Album name for track */ char *album; /**< Album name for track */
char *date; /**< Date of original recording as a string */ char *date; /**< Date of original recording as a string */
char *filename; /**< Original filename of this track */ char *filename; /**< Original filename of this track */
uint16_t tracknumber; /**< Track number (in sequence on recording) */ uint16_t tracknumber; /**< Track number (in sequence on recording) */
uint32_t duration; /**< Duration in milliseconds */ uint32_t duration; /**< Duration in milliseconds */
uint32_t samplerate; /**< Sample rate of original file, min 0x1f80 max 0x
bb80 */
uint16_t nochannels; /**< Number of channels in this recording 0 = unknow
n, 1 or 2 */
uint32_t wavecodec; /**< FourCC wave codec name */
uint32_t bitrate; /**< (Average) bitrate for this file min=1 max=0x16e360
*/
uint16_t bitratetype; /**< 0 = unused, 1 = constant, 2 = VBR, 3 = free */
uint16_t rating; /**< User rating 0-100 (0x00-0x64) */
uint32_t usecount; /**< Number of times used/played */
uint64_t filesize; /**< Size of track file in bytes */ uint64_t filesize; /**< Size of track file in bytes */
LIBMTP_filetype_t filetype; /**< Filetype used for the current track */ LIBMTP_filetype_t filetype; /**< Filetype used for the current track */
LIBMTP_track_t *next; /**< Next track in list or NULL if last track */ LIBMTP_track_t *next; /**< Next track in list or NULL if last track */
}; };
/** /**
* MTP Playlist structure
*/
struct LIBMTP_playlist_struct {
uint32_t playlist_id; /**< Unique playlist ID */
char *name; /**< Name of playlist */
uint32_t *tracks; /**< The tracks in this playlist */
uint32_t no_tracks; /**< The number of tracks in this playlist */
LIBMTP_playlist_t *next; /**< Next playlist or NULL if last playlist */
};
/**
* MTP Folder structure * MTP Folder structure
*/ */
struct LIBMTP_folder_struct { struct LIBMTP_folder_struct {
uint32_t folder_id; /**< Unique folder ID */ uint32_t folder_id; /**< Unique folder ID */
uint32_t parent_id; /**< ID of parent folder */ uint32_t parent_id; /**< ID of parent folder */
char *name; /**< Name of folder */ char *name; /**< Name of folder */
LIBMTP_folder_t *sibling; /**< Next folder at same level or NULL if no mo re */ LIBMTP_folder_t *sibling; /**< Next folder at same level or NULL if no mo re */
LIBMTP_folder_t *child; /**< Child folder or NULL if no children */ LIBMTP_folder_t *child; /**< Child folder or NULL if no children */
}; };
skipping to change at line 172 skipping to change at line 222
uint32_t id; uint32_t id;
uint32_t parent; uint32_t parent;
uint32_t type; uint32_t type;
uint32_t size; uint32_t size;
char *name; char *name;
void *data; void *data;
LIBMTP_object_t *sibling; LIBMTP_object_t *sibling;
LIBMTP_object_t *child; LIBMTP_object_t *child;
}; };
/** @} */
/* Make functions available for C++ */ /* Make functions available for C++ */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/** /**
* The callback type definition. Notice that a progress percentage ratio
* is easy to calculate by dividing <code>sent</code> by
* <code>total</code>.
* @param sent the number of bytes sent so far
* @param total the total number of bytes to send
* @param data a user-defined dereferencable pointer
* @return if anything else than 0 is returned, the current transfer will b
e
* interrupted / cancelled.
*/
typedef int LIBMTP_progressfunc_t (uint64_t const sent, uint64_t const tota
l,
void const * const data);
/**
* @defgroup internals The libmtp internals API. * @defgroup internals The libmtp internals API.
* @{ * @{
*/ */
void LIBMTP_Init(void); void LIBMTP_Init(void);
int LIBMTP_Get_Supported_Devices_List(LIBMTP_device_entry_t ** const, int * const); int LIBMTP_Get_Supported_Devices_List(LIBMTP_device_entry_t ** const, int * const);
/** /**
* @} * @}
* @defgroup basic The basic device management API. * @defgroup basic The basic device management API.
* @{ * @{
*/ */
skipping to change at line 215 skipping to change at line 254
char *LIBMTP_Get_Modelname(LIBMTP_mtpdevice_t*); char *LIBMTP_Get_Modelname(LIBMTP_mtpdevice_t*);
char *LIBMTP_Get_Serialnumber(LIBMTP_mtpdevice_t*); char *LIBMTP_Get_Serialnumber(LIBMTP_mtpdevice_t*);
char *LIBMTP_Get_Deviceversion(LIBMTP_mtpdevice_t*); char *LIBMTP_Get_Deviceversion(LIBMTP_mtpdevice_t*);
char *LIBMTP_Get_Ownername(LIBMTP_mtpdevice_t*); char *LIBMTP_Get_Ownername(LIBMTP_mtpdevice_t*);
int LIBMTP_Get_Storageinfo(LIBMTP_mtpdevice_t *, uint64_t * const, int LIBMTP_Get_Storageinfo(LIBMTP_mtpdevice_t *, uint64_t * const,
uint64_t * const, char ** const storage_description, uint64_t * const, char ** const storage_description,
char ** const volume_label); char ** const volume_label);
int LIBMTP_Get_Batterylevel(LIBMTP_mtpdevice_t *, int LIBMTP_Get_Batterylevel(LIBMTP_mtpdevice_t *,
uint8_t * const, uint8_t * const,
uint8_t * const); uint8_t * const);
int LIBMTP_Get_Secure_Time(LIBMTP_mtpdevice_t *, char ** const);
int LIBMTP_Get_Device_Certificate(LIBMTP_mtpdevice_t *, char ** const);
int LIBMTP_Get_Supported_Filetypes(LIBMTP_mtpdevice_t *, uint16_t ** const,
uint16_t * const);
/** /**
* @} * @}
* @defgroup files The file management API. * @defgroup files The file management API.
* @{ * @{
*/ */
LIBMTP_file_t *LIBMTP_new_file_t(void); LIBMTP_file_t *LIBMTP_new_file_t(void);
void LIBMTP_destroy_file_t(LIBMTP_file_t*); void LIBMTP_destroy_file_t(LIBMTP_file_t*);
char const * LIBMTP_Get_Filetype_Description(LIBMTP_filetype_t); char const * LIBMTP_Get_Filetype_Description(LIBMTP_filetype_t);
LIBMTP_file_t *LIBMTP_Get_Filelisting(LIBMTP_mtpdevice_t *device); LIBMTP_file_t *LIBMTP_Get_Filelisting(LIBMTP_mtpdevice_t *);
int LIBMTP_Delete_File(LIBMTP_mtpdevice_t *, uint32_t); LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const
);
int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * con st, int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * con st,
LIBMTP_progressfunc_t const * const, void const * co nst); LIBMTP_progressfunc_t const * const, void const * co nst);
int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const, int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const,
LIBMTP_progressfunc_t const * const, void const * co nst); LIBMTP_progressfunc_t const * const, void const * co nst);
int LIBMTP_Send_File_From_File(LIBMTP_mtpdevice_t *, char const * const, int LIBMTP_Send_File_From_File(LIBMTP_mtpdevice_t *, char const * const,
LIBMTP_file_t * const, LIBMTP_progressfunc_t const * const, LIBMTP_file_t * const, LIBMTP_progressfunc_t const * const,
void const * const, uint32_t const); void const * const, uint32_t const);
int LIBMTP_Send_File_From_File_Descriptor(LIBMTP_mtpdevice_t *, int const, int LIBMTP_Send_File_From_File_Descriptor(LIBMTP_mtpdevice_t *, int const,
LIBMTP_file_t * const, LIBMTP_progressfunc_t const * const, LIBMTP_file_t * const, LIBMTP_progressfunc_t const * const,
void const * const, uint32_t const); void const * const, uint32_t const);
/** /**
* @} * @}
* @defgroup tracks The track management API. * @defgroup tracks The track management API.
* @{ * @{
*/ */
LIBMTP_track_t *LIBMTP_new_track_t(void); LIBMTP_track_t *LIBMTP_new_track_t(void);
void LIBMTP_destroy_track_t(LIBMTP_track_t*); void LIBMTP_destroy_track_t(LIBMTP_track_t*);
LIBMTP_track_t *LIBMTP_Get_Tracklisting(LIBMTP_mtpdevice_t*); LIBMTP_track_t *LIBMTP_Get_Tracklisting(LIBMTP_mtpdevice_t*);
LIBMTP_track_t *LIBMTP_Get_Trackmetadata(LIBMTP_mtpdevice_t*, uint32_t cons t);
int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * co nst, int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * co nst,
LIBMTP_progressfunc_t const * const, void const * co nst); LIBMTP_progressfunc_t const * const, void const * co nst);
int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const , int const, int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const , int const,
LIBMTP_progressfunc_t const * const, void const * co nst); LIBMTP_progressfunc_t const * const, void const * co nst);
int LIBMTP_Send_Track_From_File(LIBMTP_mtpdevice_t *, int LIBMTP_Send_Track_From_File(LIBMTP_mtpdevice_t *,
char const * const, LIBMTP_track_t * const, char const * const, LIBMTP_track_t * const,
LIBMTP_progressfunc_t const * const, LIBMTP_progressfunc_t const * const,
void const * const, uint32_t const); void const * const, uint32_t const);
int LIBMTP_Send_Track_From_File_Descriptor(LIBMTP_mtpdevice_t *, int LIBMTP_Send_Track_From_File_Descriptor(LIBMTP_mtpdevice_t *,
int const, LIBMTP_track_t * const, int const, LIBMTP_track_t * const,
skipping to change at line 270 skipping to change at line 313
/** /**
* @} * @}
* @defgroup folders The folder management API. * @defgroup folders The folder management API.
* @{ * @{
*/ */
LIBMTP_folder_t *LIBMTP_new_folder_t(void); LIBMTP_folder_t *LIBMTP_new_folder_t(void);
void LIBMTP_destroy_folder_t(LIBMTP_folder_t*); void LIBMTP_destroy_folder_t(LIBMTP_folder_t*);
LIBMTP_folder_t *LIBMTP_Get_Folder_List(LIBMTP_mtpdevice_t*); LIBMTP_folder_t *LIBMTP_Get_Folder_List(LIBMTP_mtpdevice_t*);
LIBMTP_folder_t *LIBMTP_Find_Folder(LIBMTP_folder_t*, uint32_t const); LIBMTP_folder_t *LIBMTP_Find_Folder(LIBMTP_folder_t*, uint32_t const);
uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t*, char * , uint32_t); uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t*, char *, uint32_t);
/** @} */ /** @} */
/** /**
* @} * @}
* @defgroup playlists The audio/video playlist management API.
* @{
*/
LIBMTP_playlist_t *LIBMTP_new_playlist_t(void);
void LIBMTP_destroy_playlist_t(LIBMTP_playlist_t *);
LIBMTP_playlist_t *LIBMTP_Get_Playlist_List(LIBMTP_mtpdevice_t *);
LIBMTP_playlist_t *LIBMTP_Get_Playlist(LIBMTP_mtpdevice_t *, uint32_t const
);
int LIBMTP_Create_New_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * co
nst, uint32_t const);
int LIBMTP_Update_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t const *
const);
/**
* @}
* @defgroup objects The object management API. * @defgroup objects The object management API.
* @{ * @{
*/ */
char *LIBMTP_Get_String_From_Object(LIBMTP_mtpdevice_t *,uint32_t, uint32_t char *LIBMTP_Get_String_From_Object(LIBMTP_mtpdevice_t *,const uint32_t, co
, char); nst uint32_t, uint8_t);
uint32_t LIBMTP_Get_U32_From_Object(LIBMTP_mtpdevice_t *,uint32_t, uint32_t uint32_t LIBMTP_Get_U32_From_Object(LIBMTP_mtpdevice_t *,const uint32_t, co
, uint32_t); nst uint32_t, const uint32_t);
uint16_t LIBMTP_Get_U16_From_Object(LIBMTP_mtpdevice_t *,uint32_t, uint32_t uint16_t LIBMTP_Get_U16_From_Object(LIBMTP_mtpdevice_t *,const uint32_t, co
, uint16_t); nst uint32_t, const uint16_t);
int LIBMTP_Set_Object_String(LIBMTP_mtpdevice_t *,uint32_t, uint32_t, char int LIBMTP_Set_Object_String(LIBMTP_mtpdevice_t *,const uint32_t,const uint
*, int); 32_t,
int LIBMTP_Set_Object_U32(LIBMTP_mtpdevice_t *,uint32_t, uint32_t, uint32_t char const * const, const uint8_t);
); int LIBMTP_Set_Object_U32(LIBMTP_mtpdevice_t *,const uint32_t, const uint32
int LIBMTP_Set_Object_U16(LIBMTP_mtpdevice_t *,uint32_t, uint32_t, uint16_t _t, const uint32_t);
); int LIBMTP_Set_Object_U16(LIBMTP_mtpdevice_t *,const uint32_t, const uint32
int LIBMTP_Get_Object_References(LIBMTP_mtpdevice_t *, uint32_t, uint32_t * _t, const uint16_t);
*, uint32_t *); int LIBMTP_Get_Object_References(LIBMTP_mtpdevice_t *, const uint32_t, uint
int LIBMTP_Set_Object_References(LIBMTP_mtpdevice_t *, uint32_t, uint32_t * 32_t **, uint32_t *);
, uint32_t); int LIBMTP_Set_Object_References(LIBMTP_mtpdevice_t *, const uint32_t, uint
32_t const * const, const uint32_t);
LIBMTP_object_t *LIBMTP_Make_List(LIBMTP_mtpdevice_t *, uint32_t *, uint32_ t, uint32_t *, uint32_t); LIBMTP_object_t *LIBMTP_Make_List(LIBMTP_mtpdevice_t *, uint32_t *, uint32_ t, uint32_t *, uint32_t);
LIBMTP_object_t *LIBMTP_Find_Object(LIBMTP_object_t *, uint32_t); LIBMTP_object_t *LIBMTP_Find_Object(LIBMTP_object_t *, const uint32_t);
void LIBMTP_Dump_List(LIBMTP_object_t *); void LIBMTP_Dump_List(LIBMTP_object_t *);
LIBMTP_object_t *LIBMTP_new_object_t(void); LIBMTP_object_t *LIBMTP_new_object_t(void);
void LIBMTP_destroy_object_t(LIBMTP_object_t *, uint32_t); void LIBMTP_destroy_object_t(LIBMTP_object_t *, uint32_t);
int LIBMTP_Delete_Object(LIBMTP_mtpdevice_t *, uint32_t);
/** @} */ /** @} */
/** /**
* @} * @}
* @defgroup File mapping The file mapping API * @defgroup File mapping The file mapping API
* @{ * @{
*/ */
int LIBMTP_Register_Filetype(char *, LIBMTP_filetype_t, uint16_t, void *, v int LIBMTP_Register_Filetype(char const * const, LIBMTP_filetype_t const,
oid *, void *); uint16_t const, void const * const,
int LIBMTP_Set_Description(LIBMTP_filetype_t, char *); void const * const, void const * const);
int LIBMTP_Set_Constructor(LIBMTP_filetype_t, void *); int LIBMTP_Set_Filetype_Description(LIBMTP_filetype_t, char const * const);
int LIBMTP_Set_Destructor(LIBMTP_filetype_t, void *); int LIBMTP_Set_Constructor(LIBMTP_filetype_t, void const * const);
int LIBMTP_Set_Datafunc(LIBMTP_filetype_t, void *); int LIBMTP_Set_Destructor(LIBMTP_filetype_t, void const * const);
int LIBMTP_Set_Datafunc(LIBMTP_filetype_t, void const * const);
/** @} */ /** @} */
/* End of C++ exports */ /* End of C++ exports */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* LIBMTP_H_INCLUSION_GUARD */ #endif /* LIBMTP_H_INCLUSION_GUARD */
 End of changes. 19 change blocks. 
44 lines changed or deleted 110 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/