libmusicbrainz3
3.0.2
|
00001 /* 00002 * MusicBrainz -- The Internet music metadatabase 00003 * 00004 * Copyright (C) 2006 Lukas Lalinsky 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00019 * 00020 * $Id: mb_c.h 9932 2008-07-02 06:48:17Z luks $ 00021 */ 00022 00023 #ifndef __MUSICBRAINZ3_MB_C_H__ 00024 #define __MUSICBRAINZ3_MB_C_H__ 00025 00026 #ifdef __cplusplus 00027 extern "C" { 00028 #endif 00029 00030 #include <musicbrainz3/defines.h> 00031 00032 /* {{{ Typedefs */ 00033 00034 typedef void *MbArtist; 00035 typedef void *MbArtistAlias; 00036 typedef void *MbArtistFilter; 00037 typedef void *MbArtistIncludes; 00038 typedef void *MbDisc; 00039 typedef void *MbEntity; 00040 typedef void *MbQuery; 00041 typedef void *MbRelation; 00042 typedef void *MbRelease; 00043 typedef void *MbReleaseEvent; 00044 typedef void *MbReleaseFilter; 00045 typedef void *MbReleaseIncludes; 00046 typedef void *MbResultList; 00047 typedef void *MbTrack; 00048 typedef void *MbTrackFilter; 00049 typedef void *MbTrackIncludes; 00050 typedef void *MbUser; 00051 typedef void *MbUserFilter; 00052 typedef void *MbWebService; 00053 00054 /* }}} */ 00055 00056 /* {{{ MusicBrainz::WebService */ 00057 00063 MB_API MbWebService 00064 mb_webservice_new(); 00065 00071 MB_API void 00072 mb_webservice_free(MbWebService webservice); 00073 00077 MB_API void 00078 mb_webservice_set_host(MbWebService webservice, const char *str); 00079 00083 MB_API void 00084 mb_webservice_set_port(MbWebService webservice, int port); 00085 00089 MB_API void 00090 mb_webservice_set_path_prefix(MbWebService webservice, const char *str); 00091 00095 MB_API void 00096 mb_webservice_set_username(MbWebService webservice, const char *str); 00097 00101 MB_API void 00102 mb_webservice_set_password(MbWebService webservice, const char *str); 00103 00107 MB_API void 00108 mb_webservice_set_realm(MbWebService webservice, const char *str); 00109 00113 MB_API void 00114 mb_webservice_set_proxy_host(MbWebService webservice, const char *str); 00115 00119 MB_API void 00120 mb_webservice_set_proxy_port(MbWebService webservice, int port); 00121 00125 MB_API void 00126 mb_webservice_set_proxy_username(MbWebService webservice, const char *str); 00127 00131 MB_API void 00132 mb_webservice_set_proxy_password(MbWebService webservice, const char *str); 00133 00134 /* }}} */ 00135 00136 /* {{{ MusicBrainz::Query */ 00137 00143 MB_API MbQuery 00144 mb_query_new(MbWebService ws, const char *client_id); 00145 00151 MB_API void 00152 mb_query_free(MbQuery query); 00153 00159 MB_API MbArtist 00160 mb_query_get_artist_by_id(MbQuery query, const char *id, MbArtistIncludes inc); 00161 00167 MB_API MbRelease 00168 mb_query_get_release_by_id(MbQuery query, const char *id, MbReleaseIncludes inc); 00169 00175 MB_API MbTrack 00176 mb_query_get_track_by_id(MbQuery query, const char *id, MbTrackIncludes inc); 00177 00183 MB_API MbUser 00184 mb_query_get_user_by_name(MbQuery query, const char *name); 00185 00186 /* }}} */ 00187 00188 MB_API void 00189 mb_result_list_free(MbResultList list); 00190 00191 MB_API int 00192 mb_result_list_get_size(MbResultList list); 00193 00194 MB_API int 00195 mb_result_list_get_score(MbResultList list, int index); 00196 00197 MB_API MbArtist 00198 mb_result_list_get_artist(MbResultList list, int index); 00199 00200 MB_API MbRelease 00201 mb_result_list_get_release(MbResultList list, int index); 00202 00203 MB_API MbTrack 00204 mb_result_list_get_track(MbResultList list, int index); 00205 00206 MB_API MbResultList 00207 mb_query_get_artists(MbQuery query, MbArtistFilter flt); 00208 00209 MB_API MbResultList 00210 mb_query_get_releases(MbQuery query, MbReleaseFilter flt); 00211 00212 MB_API MbResultList 00213 mb_query_get_tracks(MbQuery query, MbTrackFilter flt); 00214 00215 /* {{{ MusicBrainz::Artist */ 00216 00220 MB_API void 00221 mb_artist_free(MbArtist artist); 00222 00228 MB_API void 00229 mb_artist_get_id(MbArtist artist, char *str, int len); 00230 00236 MB_API void 00237 mb_artist_get_type(MbArtist artist, char *str, int len); 00238 00244 MB_API void 00245 mb_artist_get_name(MbArtist artist, char *str, int len); 00246 00252 MB_API void 00253 mb_artist_get_sortname(MbArtist artist, char *str, int len); 00254 00260 MB_API void 00261 mb_artist_get_disambiguation(MbArtist artist, char *str, int len); 00262 00268 MB_API void 00269 mb_artist_get_unique_name(MbArtist artist, char *str, int len); 00270 00276 MB_API void 00277 mb_artist_get_begin_date(MbArtist artist, char *str, int len); 00278 00284 MB_API void 00285 mb_artist_get_end_date(MbArtist artist, char *str, int len); 00286 00292 MB_API int 00293 mb_artist_get_num_aliases(MbArtist artist); 00294 00300 MB_API MbArtistAlias 00301 mb_artist_get_alias(MbArtist artist, int index); 00302 00308 MB_API int 00309 mb_artist_get_num_releases(MbArtist artist); 00310 00316 MB_API MbRelease 00317 mb_artist_get_release(MbArtist artist, int index); 00318 00324 MB_API int 00325 mb_artist_get_releases_offset(MbArtist artist); 00326 00332 MB_API int 00333 mb_artist_get_releases_count(MbArtist artist); 00334 00340 MB_API int 00341 mb_artist_get_num_relations(MbArtist artist); 00342 00348 MB_API MbRelation 00349 mb_artist_get_relation(MbArtist artist, int index); 00350 00351 /* }}} */ 00352 00353 /* {{{ MusicBrainz::Release */ 00354 00358 MB_API void 00359 mb_release_free(MbRelease release); 00360 00366 MB_API void 00367 mb_release_get_id(MbRelease release, char *str, int len); 00368 00374 MB_API void 00375 mb_release_get_title(MbRelease release, char *str, int len); 00376 00382 MB_API void 00383 mb_release_get_text_language(MbRelease release, char *str, int len); 00384 00390 MB_API void 00391 mb_release_get_text_script(MbRelease release, char *str, int len); 00392 00398 MB_API void 00399 mb_release_get_asin(MbRelease release, char *str, int len); 00400 00406 MB_API MbArtist 00407 mb_release_get_artist(MbRelease release); 00408 00414 MB_API int 00415 mb_release_get_tracks_offset(MbRelease release); 00416 00422 MB_API int 00423 mb_release_get_tracks_count(MbRelease release); 00424 00430 MB_API int 00431 mb_release_get_num_relations(MbRelease release); 00432 00438 MB_API MbRelation 00439 mb_release_get_relation(MbRelease release, int index); 00440 00446 MB_API int 00447 mb_release_get_num_tracks(MbRelease release); 00448 00454 MB_API MbTrack 00455 mb_release_get_track(MbRelease release, int index); 00456 00462 MB_API int 00463 mb_release_get_num_discs(MbRelease release); 00464 00470 MB_API MbDisc 00471 mb_release_get_disc(MbRelease release, int index); 00472 00478 MB_API int 00479 mb_release_get_num_release_events(MbRelease release); 00480 00486 MB_API MbReleaseEvent 00487 mb_release_get_release_event(MbRelease release, int index); 00488 00494 MB_API int 00495 mb_release_get_num_types(MbRelease release); 00496 00502 MB_API void 00503 mb_release_get_type(MbRelease release, int index, char *str, int len); 00504 00505 /* }}} */ 00506 00507 /* {{{ MusicBrainz::Track */ 00508 00512 MB_API void 00513 mb_track_free(MbTrack track); 00514 00520 MB_API void 00521 mb_track_get_id(MbTrack track, char *str, int len); 00522 00528 MB_API void 00529 mb_track_get_title(MbTrack track, char *str, int len); 00530 00536 MB_API int 00537 mb_track_get_duration(MbTrack track); 00538 00544 MB_API int 00545 mb_track_get_num_relations(MbTrack track); 00546 00552 MB_API MbRelation 00553 mb_track_get_relation(MbTrack track, int index); 00554 00560 MB_API MbArtist 00561 mb_track_get_artist(MbTrack track); 00562 00563 /* }}} */ 00564 00565 /* {{{ MusicBrainz::ArtistAlias */ 00566 00572 MB_API void 00573 mb_artist_alias_get_value(MbArtistAlias alias, char *str, int len); 00574 00580 MB_API void 00581 mb_artist_alias_get_type(MbArtistAlias alias, char *str, int len); 00582 00588 MB_API void 00589 mb_artist_alias_get_script(MbArtistAlias alias, char *str, int len); 00590 00591 /* }}} */ 00592 00593 /* {{{ MusicBrainz::User */ 00594 00598 MB_API void 00599 mb_user_free(MbUser user); 00600 00606 MB_API void 00607 mb_user_get_name(MbUser user, char *str, int len); 00608 00614 MB_API int 00615 mb_user_get_show_nag(MbUser user); 00616 00622 MB_API int 00623 mb_user_get_num_types(MbUser user); 00624 00630 MB_API void 00631 mb_user_get_type(MbUser user, int index, char *str, int len); 00632 00633 /* }}} */ 00634 00635 /* {{{ MusicBrainz::ArtistIncludes */ 00636 00637 MB_API MbArtistIncludes 00638 mb_artist_includes_new(); 00639 00640 MB_API void 00641 mb_artist_includes_free(MbArtistIncludes inc); 00642 00643 MB_API MbArtistIncludes 00644 mb_artist_includes_aliases(MbArtistIncludes inc); 00645 00646 MB_API MbArtistIncludes 00647 mb_artist_includes_releases(MbArtistIncludes inc, const char *type); 00648 00649 MB_API MbArtistIncludes 00650 mb_artist_includes_va_releases(MbArtistIncludes inc, const char *type); 00651 00652 MB_API MbArtistIncludes 00653 mb_artist_includes_artist_relations(MbArtistIncludes inc); 00654 00655 MB_API MbArtistIncludes 00656 mb_artist_includes_release_relations(MbArtistIncludes inc); 00657 00658 MB_API MbArtistIncludes 00659 mb_artist_includes_track_relations(MbArtistIncludes inc); 00660 00661 MB_API MbArtistIncludes 00662 mb_artist_includes_url_relations(MbArtistIncludes inc); 00663 00664 MB_API MbArtistIncludes 00665 mb_artist_includes_release_events(MbArtistIncludes inc); 00666 00667 /* }}} */ 00668 00669 /* {{{ MusicBrainz::ReleaseIncludes */ 00670 00671 MB_API MbReleaseIncludes 00672 mb_release_includes_new(); 00673 00674 MB_API void 00675 mb_release_includes_free(MbReleaseIncludes inc); 00676 00677 MB_API MbReleaseIncludes 00678 mb_release_includes_artist(MbReleaseIncludes inc); 00679 00680 MB_API MbReleaseIncludes 00681 mb_release_includes_counts(MbReleaseIncludes inc); 00682 00683 MB_API MbReleaseIncludes 00684 mb_release_includes_release_events(MbReleaseIncludes inc); 00685 00686 MB_API MbReleaseIncludes 00687 mb_release_includes_discs(MbReleaseIncludes inc); 00688 00689 MB_API MbReleaseIncludes 00690 mb_release_includes_tracks(MbReleaseIncludes inc); 00691 00692 MB_API MbReleaseIncludes 00693 mb_release_includes_artist_relations(MbReleaseIncludes inc); 00694 00695 MB_API MbReleaseIncludes 00696 mb_release_includes_release_relations(MbReleaseIncludes inc); 00697 00698 MB_API MbReleaseIncludes 00699 mb_release_includes_track_relations(MbReleaseIncludes inc); 00700 00701 MB_API MbReleaseIncludes 00702 mb_release_includes_url_relations(MbReleaseIncludes inc); 00703 00704 /* }}} */ 00705 00706 /* {{{ MusicBrainz::TrackIncludes */ 00707 00708 MB_API MbTrackIncludes 00709 mb_track_includes_new(); 00710 00711 MB_API void 00712 mb_track_includes_free(MbArtistIncludes inc); 00713 00714 MB_API MbTrackIncludes 00715 mb_track_includes_artist(MbArtistIncludes inc); 00716 00717 MB_API MbTrackIncludes 00718 mb_track_includes_releases(MbArtistIncludes inc); 00719 00720 MB_API MbTrackIncludes 00721 mb_track_includes_puids(MbArtistIncludes inc); 00722 00723 MB_API MbTrackIncludes 00724 mb_track_includes_artist_relations(MbArtistIncludes inc); 00725 00726 MB_API MbTrackIncludes 00727 mb_track_includes_release_relations(MbTrackIncludes inc); 00728 00729 MB_API MbTrackIncludes 00730 mb_track_includes_track_relations(MbTrackIncludes inc); 00731 00732 MB_API MbTrackIncludes 00733 mb_track_includes_url_relations(MbTrackIncludes inc); 00734 00735 /* }}} */ 00736 00737 /* {{{ MusicBrainz::MbArtistFilter */ 00738 00739 MB_API MbArtistFilter 00740 mb_artist_filter_new(); 00741 00742 MB_API void 00743 mb_artist_filter_free(MbArtistFilter flt); 00744 00745 MB_API MbArtistFilter 00746 mb_artist_filter_name(MbArtistFilter flt, const char *value); 00747 00748 MB_API MbArtistFilter 00749 mb_artist_filter_limit(MbArtistFilter flt, int value); 00750 00751 /* }}} */ 00752 00753 /* {{{ MusicBrainz::MbReleaseFilter */ 00754 00755 MB_API MbReleaseFilter 00756 mb_release_filter_new(); 00757 00758 MB_API void 00759 mb_release_filter_free(MbReleaseFilter flt); 00760 00761 MB_API MbReleaseFilter 00762 mb_release_filter_title(MbReleaseFilter flt, const char *value); 00763 00764 MB_API MbReleaseFilter 00765 mb_release_filter_disc_id(MbReleaseFilter flt, const char *value); 00766 00767 MB_API MbReleaseFilter 00768 mb_release_filter_release_type(MbReleaseFilter flt, const char *value); 00769 00770 MB_API MbReleaseFilter 00771 mb_release_filter_artist_name(MbReleaseFilter flt, const char *value); 00772 00773 MB_API MbReleaseFilter 00774 mb_release_filter_artist_id(MbReleaseFilter flt, const char *value); 00775 00776 MB_API MbReleaseFilter 00777 mb_release_filter_limit(MbReleaseFilter flt, int value); 00778 00779 /* }}} */ 00780 00781 /* {{{ MusicBrainz::MbTrackFilter */ 00782 00783 MB_API MbTrackFilter 00784 mb_track_filter_new(); 00785 00786 MB_API void 00787 mb_track_filter_free(MbTrackFilter flt); 00788 00789 MB_API MbTrackFilter 00790 mb_track_filter_title(MbTrackFilter flt, const char *value); 00791 00792 MB_API MbTrackFilter 00793 mb_track_filter_artist_name(MbTrackFilter flt, const char *value); 00794 00795 MB_API MbTrackFilter 00796 mb_track_filter_artist_id(MbTrackFilter flt, const char *value); 00797 00798 MB_API MbTrackFilter 00799 mb_track_filter_release_title(MbTrackFilter flt, const char *value); 00800 00801 MB_API MbTrackFilter 00802 mb_track_filter_release_id(MbTrackFilter flt, const char *value); 00803 00804 MB_API MbTrackFilter 00805 mb_track_filter_duration(MbTrackFilter flt, int value); 00806 00807 MB_API MbTrackFilter 00808 mb_track_filter_puid(MbTrackFilter flt, const char *value); 00809 00810 MB_API MbTrackFilter 00811 mb_track_filter_limit(MbTrackFilter flt, int value); 00812 00813 /* }}} */ 00814 00815 /* {{{ MusicBrainz::MbUserFilter */ 00816 00817 MB_API MbUserFilter 00818 mb_user_filter_new(); 00819 00820 MB_API void 00821 mb_user_filter_free(MbUserFilter flt); 00822 00823 MB_API MbUserFilter 00824 mb_user_filter_name(MbUserFilter flt, const char *value); 00825 00826 /* }}} */ 00827 00828 /* {{{ MusicBrainz::ArtistAlias */ 00829 00835 MB_API void 00836 mb_release_event_get_country(MbReleaseEvent releaseEvent, char *str, int len); 00837 00843 MB_API void 00844 mb_release_event_get_date(MbReleaseEvent releaseEvent, char *str, int len); 00845 00846 /* }}} */ 00847 00848 /* {{{ MusicBrainz::Relation */ 00849 00855 MB_API void 00856 mb_relation_get_type(MbRelation relation, char *str, int len); 00857 00863 MB_API void 00864 mb_relation_get_target_id(MbRelation relation, char *str, int len); 00865 00871 MB_API void 00872 mb_relation_get_target_type(MbRelation relation, char *str, int len); 00873 00879 MB_API void 00880 mb_relation_get_begin_date(MbRelation relation, char *str, int len); 00881 00887 MB_API void 00888 mb_relation_get_end_date(MbRelation relation, char *str, int len); 00889 00895 MB_API int 00896 mb_relation_get_direction(MbRelation relation); 00897 00903 MB_API MbEntity 00904 mb_relation_get_target(MbRelation relation); 00905 00911 MB_API int 00912 mb_relation_get_num_attributes(MbRelation relation); 00913 00919 MB_API void 00920 mb_relation_get_attribute(MbRelation relation, int index, char *str, int len); 00921 00922 /* }}} */ 00923 00924 /* {{{ MusicBrainz::Disc */ 00925 00931 MB_API void 00932 mb_disc_get_id(MbDisc disc, char *str, int len); 00933 00939 MB_API int 00940 mb_disc_get_sectors(MbDisc disc); 00941 00947 MB_API int 00948 mb_disc_get_first_track_num(MbDisc disc); 00949 00955 MB_API int 00956 mb_disc_get_last_track_num(MbDisc disc); 00957 00963 MB_API MbDisc 00964 mb_read_disc(const char *device_name); 00965 00971 MB_API void 00972 mb_get_submission_url(MbDisc disc, const char *host, int port, char *str, int len); 00973 00974 /* }}} */ 00975 00976 #ifdef __cplusplus 00977 } 00978 #endif 00979 00980 #endif