2 Copyright (C) 2008 Paul Davis
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 #ifndef __ardour_element_import_handler_h__
22 #define __ardour_element_import_handler_h__
27 #include <boost/shared_ptr.hpp>
35 class ElementImporter;
37 /// Virtual interface class for element import handlers
38 class ElementImportHandler
41 typedef boost::shared_ptr<ElementImporter> ElementPtr;
42 typedef std::list<ElementPtr> ElementList;
44 /** ElementImportHandler constructor
45 * The constructor should find everything from the XML Tree it can handle
46 * and create respective Elements stored in elements.
48 * @param source XML tree to be parsed
51 ElementImportHandler (XMLTree const & source, ARDOUR::Session & session) :
52 source (source), session (session) { }
54 virtual ~ElementImportHandler ();
56 /** Gets a textual representation of the element type
57 * @return textual representation of element type
59 virtual string get_info () const = 0;
61 /// Elements this handler handles
64 /* For checking duplicates names against queued elements */
66 /** Checks whether or not an element with some name is queued or not
67 * @param name name to check
68 * @return true if name is not used
70 bool check_name (const string & name) const;
72 /// Adds name to the list of used names
73 void add_name (string name);
75 /// Removes name from the list of used names
76 void remove_name (const string & name);
78 /// Checks wheter or not all elements can be imported cleanly
79 static bool dirty () { return _dirty; }
81 /// Sets handler dirty
82 static void set_dirty () { _dirty = true; }
84 /// Checks wheter or not all elements were imported cleanly
85 static bool errors () { return _errors; }
87 /// Sets handler dirty
88 static void set_errors () { _errors = true; }
91 /// Source session XML tree
92 XMLTree const & source;
94 /// Destination session
95 ARDOUR::Session & session;
97 /// Session XML readability
100 /// Errors post initialization
104 /// List of names for duplicate checking
105 std::list<string> names;
108 } // namespace ARDOUR