X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Faudio_library.cc;h=4d78bdac86563e62c66cc3e8b3778cd8eb9a6bb3;hb=32b73439275dbe2cccaa2a71026a951ea46d24b9;hp=26f225273f626a15c5878af1c082f23bfeff0e47;hpb=bb9cc45cd22af67ac275a5e73accbe14fee664d8;p=ardour.git diff --git a/libs/ardour/audio_library.cc b/libs/ardour/audio_library.cc index 26f225273f..4d78bdac86 100644 --- a/libs/ardour/audio_library.cc +++ b/libs/ardour/audio_library.cc @@ -17,22 +17,30 @@ */ +#ifdef WAF_BUILD +#include "libardour-config.h" +#endif + #include #include +#ifdef HAVE_LRDF #include +#endif + #include #include #include "pbd/compose.h" +#include "pbd/error.h" +#include "pbd/file_utils.h" #include "ardour/audio_library.h" -#include "ardour/utils.h" #include "ardour/filesystem_paths.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace PBD; @@ -46,18 +54,20 @@ static const char* TAG = "http://ardour.org/ontology/Tag"; AudioLibrary::AudioLibrary () { - sys::path sfdb_file_path(user_config_directory ()); + std::string sfdb_file_path(user_config_directory ()); - sfdb_file_path /= sfdb_file_name; + sfdb_file_path = Glib::build_filename (sfdb_file_path, sfdb_file_name); - src = Glib::filename_to_uri (sfdb_file_path.to_string ()); + src = Glib::filename_to_uri (sfdb_file_path); // workaround for possible bug in raptor that crashes when saving to a // non-existant file. - touch_file(sfdb_file_path.to_string()); + touch_file(sfdb_file_path); +#ifdef HAVE_LRDF lrdf_read_file(src.c_str()); +#endif } AudioLibrary::~AudioLibrary () @@ -67,14 +77,17 @@ AudioLibrary::~AudioLibrary () void AudioLibrary::save_changes () { +#ifdef HAVE_LRDF if (lrdf_export_by_source(src.c_str(), src.substr(5).c_str())) { PBD::warning << string_compose(_("Could not open %1. Audio Library not saved"), src) << endmsg; } +#endif } void AudioLibrary::set_tags (string member, vector tags) { +#ifdef HAVE_LRDF sort (tags.begin(), tags.end()); tags.erase (unique(tags.begin(), tags.end()), tags.end()); @@ -85,21 +98,23 @@ AudioLibrary::set_tags (string member, vector tags) for (vector::iterator i = tags.begin(); i != tags.end(); ++i) { lrdf_add_triple (src.c_str(), file_uri.c_str(), TAG, (*i).c_str(), lrdf_literal); } +#endif } vector AudioLibrary::get_tags (string member) { vector tags; +#ifdef HAVE_LRDF + char * uri = strdup(Glib::filename_to_uri(member).c_str()); lrdf_statement pattern; - pattern.subject = strdup(Glib::filename_to_uri(member).c_str()); - pattern.predicate = (char*)TAG; + pattern.subject = uri; + pattern.predicate = const_cast(TAG); pattern.object = 0; pattern.object_type = lrdf_literal; lrdf_statement* matches = lrdf_matches (&pattern); - free (pattern.subject); lrdf_statement* current = matches; while (current != 0) { @@ -111,13 +126,15 @@ AudioLibrary::get_tags (string member) lrdf_free_statements (matches); sort (tags.begin(), tags.end()); - + free (uri); +#endif return tags; } void -AudioLibrary::search_members_and (vector& members, const vector tags) +AudioLibrary::search_members_and (vector& members, const vector& tags) { +#ifdef HAVE_LRDF lrdf_statement **head; lrdf_statement* pattern = 0; lrdf_statement* old = 0; @@ -126,8 +143,8 @@ AudioLibrary::search_members_and (vector& members, const vector vector::const_iterator i; for (i = tags.begin(); i != tags.end(); ++i){ pattern = new lrdf_statement; - pattern->subject = (char*)"?"; - pattern->predicate = (char*)TAG; + pattern->subject = const_cast("?"); + pattern->predicate = const_cast(TAG); pattern->object = strdup((*i).c_str()); pattern->next = old; @@ -141,8 +158,8 @@ AudioLibrary::search_members_and (vector& members, const vector } lrdf_free_uris(ulist); - sort(members.begin(), members.end()); - unique(members.begin(), members.end()); + sort (members.begin(), members.end()); + members.erase (unique (members.begin(), members.end()), members.end()); } // memory clean up @@ -153,4 +170,5 @@ AudioLibrary::search_members_and (vector& members, const vector pattern = pattern->next; delete old; } +#endif }