/*
- Copyright (C) 2003 Paul Davis
- Author: Taybin Rutkin
+ Copyright (C) 2003-2006 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id$
*/
#ifndef __ardour_audio_library_h__
#define __ardour_audio_library_h__
-#include <list>
#include <string>
#include <map>
+#include <vector>
-#include <sigc++/signal.h>
-
-using std::list;
-using std::string;
-using std::map;
+#include "ardour/libardour_visibility.h"
namespace ARDOUR {
-class AudioLibrary
+class LIBARDOUR_API AudioLibrary
{
public:
AudioLibrary ();
~AudioLibrary ();
-
- // add_group returns the URI of the created group
- string add_group (string group, string parent_uri = "");
- void remove_group (string uri);
- void get_groups (list<string>& groups, string parent_uri = "");
-
- // add_member returns the URI of the created group
- string add_member (string member, string parent_uri = "");
- void remove_member (string uri);
- void get_members (list<string>& members, string parent_uri = "");
- string get_member_filename (string uri);
-
- void search_members_and (list<string>& results,
- const map<string,string>& fields);
- void search_members_or (list<string>& results,
- const map<string,string>& fields);
-
- void add_field (string field);
- void get_fields (list<string>& fields);
- void remove_field (string field);
- string get_field (string uri, string field);
- void set_field (string uri, string field, string literal);
-
- string get_label (string uri);
- void set_label (string uri, string label);
-
- sigc::signal<void, string, string> added_group; // group, parent
- sigc::signal<void, string, string> added_member;// member, parent
- sigc::signal<void, string> removed_group;
- sigc::signal<void, string> removed_member;
- sigc::signal<void> fields_changed;
-
- private:
- void save_changes ();
- string field_uri (string name);
- bool is_rdf_type (string uri, string type);
- void remove_uri (string uri);
+ void set_tags (std::string member, std::vector<std::string> tags);
+ std::vector<std::string> get_tags (std::string member);
+
+ void search_members_and (std::vector<std::string>& results, const std::vector<std::string>& tags);
- string src;
-
- void initialize_db();
+ void save_changes();
+
+ private:
+ std::string src;
};
-extern AudioLibrary* Library;
+LIBARDOUR_API extern AudioLibrary* Library;
} // ARDOUR namespace