From 3a42a17abdfa8430bdd0d8fcd21ab6a08a396f62 Mon Sep 17 00:00:00 2001 From: casey langen Date: Sat, 25 Jan 2020 22:41:27 -0800 Subject: [PATCH] A bunch more function definitions -- maybe enough to get IMetadataProxy operational? --- src/core_c/musikcore_c.h | 95 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 91 insertions(+), 4 deletions(-) diff --git a/src/core_c/musikcore_c.h b/src/core_c/musikcore_c.h index c5bd2a183..c5e0ccf83 100644 --- a/src/core_c/musikcore_c.h +++ b/src/core_c/musikcore_c.h @@ -129,6 +129,9 @@ static const size_t mcsdk_equalizer_bands[] = { 2093, 2960, 4186, 5920, 8372, 11840, 16744, 22000 }; +static const int mcsdk_no_offset = -1; +static const int mcsdk_no_limit = -1; + static const char* mcsdk_category_type_album = "album"; static const char* mcsdk_category_type_artist = "artist"; static const char* mcsdk_category_type_album_artist = "album_artist"; @@ -166,8 +169,13 @@ static const char* mcsdk_track_field_external_id = "external_id"; typedef void* mcsdk_handle; typedef mcsdk_handle mcsdk_resource; typedef mcsdk_handle mcsdk_value; +typedef mcsdk_handle mcsdk_value_list; typedef mcsdk_handle mcsdk_map; typedef mcsdk_handle mcsdk_track; +typedef mcsdk_handle mcsdk_map_list; +typedef mcsdk_handle mcsdk_track_list; +typedef mcsdk_handle mcsdk_track_list_editor; +typedef mcsdk_handle mcsdk_metadata_proxy; /* * @@ -187,6 +195,17 @@ extern const char* mcsdk_resource_release(mcsdk_resource r); */ extern size_t mcsdk_value_get_value(mcsdk_value v, char* dst, size_t size); +extern size_t mcsdk_value_release(mcsdk_value v); + +/* + * + * IValueList + * + */ + +extern size_t mcsdk_value_list_count(mcsdk_value_list vl); +extern mcsdk_value mcsdk_value_list_get_at(mcsdk_value_list vl, size_t index); +extern void mcsdk_value_list_release(mcsdk_value_list vl); /* * @@ -195,17 +214,85 @@ extern size_t mcsdk_value_get_value(mcsdk_value v, char* dst, size_t size); */ extern int mcsdk_map_get_string(mcsdk_map m, const char* key, char* dst, int size); -extern int64_t mcsdk_map_get_int64(mcsdk_map m, const char* key, int64_t default_value = 0); -extern int32_t mcsdk_map_get_int32(mcsdk_map m, const char* key, int32_t default_value = 0); -extern double mcsdk_map_get_double(mcsdk_map m, const char* key, double default_value = 0.0f); +extern int64_t mcsdk_map_get_int64(mcsdk_map m, const char* key, int64_t default_value); +extern int32_t mcsdk_map_get_int32(mcsdk_map m, const char* key, int32_t default_value); +extern double mcsdk_map_get_double(mcsdk_map m, const char* key, double default_value); +extern double mcsdk_map_release(mcsdk_map m); /* * - * ITrack + * IMapList + * + */ + +extern void mcsdk_map_list_get_count(mcsdk_map_list ml); +extern mcsdk_map_list mcsdk_map_list_get_at(mcsdk_map_list ml, size_t index); +extern void mcsdk_map_list_release(mcsdk_map_list t); + +/* + * + * mcsdk_track * */ extern void mcsdk_track_retain(mcsdk_track t); extern int mcsdk_track_get_uri(mcsdk_track t, char* dst, int size); +extern void mcsdk_track_release(mcsdk_track t); + +/* + * + * mcsdk_track_list + * + */ + +extern void mcsdk_track_list_get_count(mcsdk_track_list tl); +extern int64_t mcsdk_track_list_get_id(mcsdk_map_list ml, size_t index); +extern int64_t mcsdk_track_list_index_of(mcsdk_map_list ml, int64_t id); +extern int64_t mcsdk_track_list_get_track_at(mcsdk_map_list ml, size_t index); +extern void mcsdk_track_list_release(mcsdk_map_list ml); + +/* + * + * mcsdk_track_listEditor + * + */ + +extern bool mcsdk_track_list_editor_insert(mcsdk_track_list_editor tle, int64_t id, size_t index); +extern bool mcsdk_track_list_editor_swap(mcsdk_track_list_editor tle, size_t index1, size_t index2); +extern bool mcsdk_track_list_editor_move(mcsdk_track_list_editor tle, size_t from, size_t to); +extern bool mcsdk_track_list_editor_delete(mcsdk_track_list_editor tle, size_t index); +extern void mcsdk_track_list_editor_add(mcsdk_track_list_editor tle, const int64_t id); +extern void mcsdk_track_list_editor_clear(mcsdk_track_list_editor tle); +extern void mcsdk_track_list_editor_shuffle(mcsdk_track_list_editor tle); +extern void mcsdk_track_list_editor_release(mcsdk_track_list_editor tle); + +/* + * + * IMetadataProxy + * + */ + +extern mcsdk_track_list mcsdk_metadata_proxy_query_tracks(mcsdk_metadata_proxy mp, const char* query = nullptr, int limit = -1, int offset = 0); +extern mcsdk_track_list mcsdk_metadata_proxy_query_track_by_id(mcsdk_metadata_proxy mp, int64_t track_id); +extern mcsdk_track_list mcsdk_metadata_proxy_query_track_by_external_id(mcsdk_metadata_proxy mp, const char* external_id); +extern mcsdk_track_list mcsdk_metadata_proxy_query_tracks_by_category(mcsdk_metadata_proxy mp, const char* category_type, int64_t selected_id, const char* filter, int limit, int offset); +extern mcsdk_track_list mcsdk_metadata_proxy_query_tracks_by_categories(mcsdk_metadata_proxy mp, mcsdk_value* categories, size_t category_count, const char* filter, int limit, int offset); +extern mcsdk_track_list mcsdk_metadata_proxy_query_tracks_by_external_id(mcsdk_metadata_proxy mp, const char** external_ids, size_t external_id_count); +extern mcsdk_value_list mcsdk_metadata_proxy_list_categories(mcsdk_metadata_proxy mp); +extern mcsdk_value_list mcsdk_metadata_proxy_query_category(mcsdk_metadata_proxy mp, const char* type, const char* filter); +extern mcsdk_value_list mcsdk_metadata_proxy_query_category_with_predicate(mcsdk_metadata_proxy mp, const char* type, const char* predicate_type, int64_t predicate_id, const char* filter); +extern mcsdk_value_list mcsdk_metadata_proxy_query_category_with_predicates(mcsdk_metadata_proxy mp, const char* type, mcsdk_value* predicates, size_t predicate_count, const char* filter); +extern mcsdk_map_list mcsdk_metadata_proxy_query_albums(mcsdk_metadata_proxy mp, const char* filter); +extern mcsdk_map_list mcsdk_metadata_proxy_query_albums(mcsdk_metadata_proxy mp, const char* category_id_name, int64_t category_id_value, const char* filter); +extern int64_t mcsdk_metadata_proxy_save_playlist_with_ids(mcsdk_metadata_proxy mp, int64_t* track_ids, size_t track_id_count, const char* playlist_name, const int64_t playlist_id); +extern int64_t mcsdk_metadata_proxy_save_playlist_with_external_ids(mcsdk_metadata_proxy mp, const char** external_ids, size_t external_id_count, const char* playlist_name, const int64_t playlist_id); +extern int64_t mcsdk_metadata_proxy_save_playlist_with_track_list(mcsdk_metadata_proxy mp, mcsdk_track_list track_list, const char* playlist_name, const int64_t playlist_id); +extern bool mcsdk_metadata_proxy_rename_playlist(mcsdk_metadata_proxy mp, const int64_t playlist_id, const char* playlist_name); +extern bool mcsdk_metadata_proxy_delete_playlist(mcsdk_metadata_proxy mp, const int64_t playlist_id); +extern bool mcsdk_metadata_proxy_append_to_playlist_with_ids(mcsdk_metadata_proxy mp, const int64_t playlist_id, const int64_t* track_ids, size_t track_id_count, int offset); +extern bool mcsdk_metadata_proxy_append_to_playlist_with_external_ids(mcsdk_metadata_proxy mp, const int64_t playlist_id, const char** external_track_ids, size_t external_track_id_count, int offset); +extern bool mcsdk_metadata_proxy_append_to_playlist_with_track_list(mcsdk_metadata_proxy mp, const int64_t playlist_id, mcsdk_track_list track_list, int offset); +extern size_t mcsdk_metadata_proxy_remove_tracks_from_playlist(mcsdk_metadata_proxy mp, const int64_t playlist_id, const char** external_ids, const int* sort_orders, int count); +extern void mcsdk_metadata_proxy_release(mcsdk_metadata_proxy mp); #endif \ No newline at end of file