diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-07-29 15:53:26 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-07-29 15:53:26 +0100 |
| commit | 8ef91325f4e565d04493bc05202f8e066b5e3e0c (patch) | |
| tree | 162fbc2bef7243ff1f650cd7e91c851e783ba8c6 /src/name_format.h | |
| parent | e02bf26f284c6efc72593e6b4a251301144e5d0b (diff) | |
Basics of allowing custom filenames for DCP components.
Diffstat (limited to 'src/name_format.h')
| -rw-r--r-- | src/name_format.h | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/src/name_format.h b/src/name_format.h new file mode 100644 index 00000000..c2a71280 --- /dev/null +++ b/src/name_format.h @@ -0,0 +1,95 @@ +/* + Copyright (C) 2016 Carl Hetherington <cth@carlh.net> + + This file is part of libdcp. + + libdcp is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + libdcp is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with libdcp. If not, see <http://www.gnu.org/licenses/>. + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations + including the two. + + You must obey the GNU General Public License in all respects + for all of the code used other than OpenSSL. If you modify + file(s) with this exception, you may extend this exception to your + version of the file(s), but you are not obligated to do so. If you + do not wish to do so, delete this exception statement from your + version. If you delete this exception statement from all source + files in the program, then also delete it here. +*/ + +#ifndef LIBDCP_NAME_FORMAT +#define LIBDCP_NAME_FORMAT + +#include <boost/optional.hpp> +#include <map> +#include <list> + +namespace dcp { + +class NameFormat +{ +public: + struct Component + { + Component (std::string name_, char placeholder_, std::string title_) + : name (name_) + , placeholder (placeholder_) + , title (title_) + {} + + std::string name; + char placeholder; + std::string title; + }; + + std::list<Component> components () const { + return _components; + } + + std::string specification () const { + return _specification; + } + + void set_specification (std::string specification) { + _specification = specification; + } + + typedef std::map<std::string, std::string> Map; + + std::string get (Map) const; + +protected: + NameFormat () {} + + NameFormat (std::string specification) + : _specification (specification) + {} + + void add (std::string name, char placeholder, std::string title); + +private: + boost::optional<NameFormat::Component> component_by_placeholder (char p) const; + + std::list<Component> _components; + std::string _specification; +}; + +extern bool operator== (NameFormat const & a, NameFormat const & b); + +} + +#endif |
