#ifndef MUSICBRAINZ_DISC_ID_H
#define MUSICBRAINZ_DISC_ID_H
#if (defined(_WIN32) || defined(_WIN64) || defined(__CYGWIN__))
# ifdef libdiscid_EXPORTS
# define LIBDISCID_API __declspec(dllexport)
# else
# define LIBDISCID_API __declspec(dllimport)
# endif
# define LIBDISCID_INTERNAL
#elif (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__)
# define LIBDISCID_API
# define LIBDISCID_INTERNAL __attribute__((visibility("hidden")))
#elif defined(__SUNPRO_C)
# define LIBDISCID_API __global
# define LIBDISCID_INTERNAL __hidden
#else
# define LIBDISCID_API
# define LIBDISCID_INTERNAL
#endif
#if (defined(_WIN32) || defined(_WIN64) || defined(__CYGWIN__))
#define LIBDISCID_DEPRECATED __declspec(deprecated)
#elif (defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))) || defined(__clang__)
#define LIBDISCID_DEPRECATED __attribute__((deprecated))
#else
#define LIBDISCID_DEPRECATED
#endif
#define DISCID_VERSION_MAJOR 0
#define DISCID_VERSION_MINOR 6
#define DISCID_VERSION_PATCH 5
#define DISCID_VERSION_NUM 605
#ifdef __cplusplus
extern "C" {
#endif
typedef void *DiscId;
LIBDISCID_API DiscId *discid_new();
LIBDISCID_API void discid_free(DiscId *d);
LIBDISCID_API int discid_read(DiscId *d, const char *device);
LIBDISCID_API int discid_read_sparse(DiscId *d, const char *device,
unsigned int features);
#define DISCID_HAVE_SPARSE_READ
LIBDISCID_API int discid_put(DiscId *d, int first, int last, int *offsets);
LIBDISCID_API char *discid_get_error_msg(DiscId *d);
LIBDISCID_API char *discid_get_id(DiscId *d);
LIBDISCID_API char *discid_get_freedb_id(DiscId *d);
LIBDISCID_API char *discid_get_toc_string(DiscId *d);
LIBDISCID_API char *discid_get_submission_url(DiscId *d);
LIBDISCID_API LIBDISCID_DEPRECATED char *discid_get_webservice_url(DiscId *d);
LIBDISCID_API char *discid_get_default_device(void);
LIBDISCID_API int discid_get_first_track_num(DiscId *d);
LIBDISCID_API int discid_get_last_track_num(DiscId *d);
LIBDISCID_API int discid_get_sectors(DiscId *d);
LIBDISCID_API int discid_get_track_offset(DiscId *d, int track_num);
LIBDISCID_API int discid_get_track_length(DiscId *d, int track_num);
LIBDISCID_API char* discid_get_mcn(DiscId *d);
LIBDISCID_API char* discid_get_track_isrc(DiscId *d, int track_num);
enum discid_feature {
DISCID_FEATURE_READ = 1 << 0,
DISCID_FEATURE_MCN = 1 << 1,
DISCID_FEATURE_ISRC = 1 << 2,
};
LIBDISCID_API int discid_has_feature(enum discid_feature feature);
#define DISCID_FEATURE_STR_READ "read"
#define DISCID_FEATURE_STR_MCN "mcn"
#define DISCID_FEATURE_STR_ISRC "isrc"
#define DISCID_FEATURE_LENGTH 32
LIBDISCID_API void discid_get_feature_list(
char *features[DISCID_FEATURE_LENGTH]);
LIBDISCID_API char *discid_get_version_string(void);
#ifdef __cplusplus
}
#endif
#endif