Ardour  9.0-pre0-582-g084a23a80d
session_metadata.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2008-2015 Paul Davis <paul@linuxaudiosystems.com>
3  * Copyright (C) 2009 Carl Hetherington <carl@carlh.net>
4  * Copyright (C) 2009 David Robillard <d@drobilla.net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program; if not, write to the Free Software Foundation, Inc.,
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19  */
20 
21 #pragma once
22 
23 #include <string>
24 
25 #include <map>
26 #include <utility>
27 
29 #include "pbd/xml++.h"
30 
32 
33 namespace ARDOUR {
34 
40 {
41  public:
42  //singleton instance:
43  static SessionMetadata *Metadata() { if (_metadata == NULL) _metadata = new SessionMetadata(); return _metadata; }
44 
47 
48  /*** Accessing ***/
49  std::string description () const;
50 
51  std::string comment () const;
52  std::string copyright () const;
53  std::string isrc () const;
54  uint32_t year () const;
55 
56  std::string grouping () const;
57  std::string barcode () const;
58  std::string title () const;
59  std::string subtitle () const;
60 
61  std::string artist () const;
62  std::string album_artist () const;
63  std::string lyricist () const;
64  std::string composer () const;
65  std::string conductor () const;
66  std::string remixer () const;
67  std::string arranger () const;
68  std::string engineer () const;
69  std::string producer () const;
70  std::string dj_mixer () const;
71  std::string mixer () const;
72 
73  std::string album () const;
74  std::string compilation () const;
75  std::string disc_subtitle () const;
76  uint32_t disc_number () const;
77  uint32_t total_discs () const;
78  uint32_t track_number () const;
79  uint32_t total_tracks () const;
80 
81  std::string genre () const;
82 
83  std::string instructor () const;
84  std::string course () const;
85 
86  std::string user_name () const;
87  std::string user_email () const;
88  std::string user_web () const;
89  std::string organization () const;
90  std::string country () const;
91 
92  /*** Editing ***/
93  void set_description (const std::string &);
94  void set_comment (const std::string &);
95  void set_copyright (const std::string &);
96  void set_isrc (const std::string &);
97  void set_year (uint32_t);
98 
99  void set_grouping (const std::string &);
100  void set_barcode (const std::string &);
101  void set_title (const std::string &);
102  void set_subtitle (const std::string &);
103 
104  void set_artist (const std::string &);
105  void set_album_artist (const std::string &);
106  void set_lyricist (const std::string &);
107  void set_composer (const std::string &);
108  void set_conductor (const std::string &);
109  void set_remixer (const std::string &);
110  void set_arranger (const std::string &);
111  void set_engineer (const std::string &);
112  void set_producer (const std::string &);
113  void set_dj_mixer (const std::string &);
114  void set_mixer (const std::string &);
115 
116  void set_album (const std::string &);
117  void set_compilation (const std::string &);
118  void set_disc_subtitle (const std::string &);
119  void set_disc_number (uint32_t);
120  void set_total_discs (uint32_t);
121  void set_track_number (uint32_t);
122  void set_total_tracks (uint32_t);
123 
124  void set_genre (const std::string &);
125 
126  void set_instructor (const std::string &);
127  void set_course (const std::string &);
128 
129  void set_user_name (const std::string &);
130  void set_user_email (const std::string &);
131  void set_user_web (const std::string &);
132  void set_organization (const std::string &);
133  void set_country (const std::string &);
134 
135  /*** Export ***/
136  typedef std::map<std::string,std::string> MetaDataMap;
137  void av_export_tag (MetaDataMap&) const;
138 
139  /*** Serialization ***/
140  XMLNode& get_state () const; //serializes stuff in the map, to be stored in session file
141  XMLNode& get_user_state (); //serializes stuff in the user_map, to be stored in user's config file
142  int set_state (const XMLNode &, int version_num);
143 
144  private:
145 
146  static SessionMetadata *_metadata; //singleton instance
147 
148  typedef std::pair<std::string, std::string> Property;
149  typedef std::map<std::string, std::string> PropertyMap;
152 
153  XMLNode * get_xml (const std::string & name) const;
154 
155  std::string get_value (const std::string & name) const;
156  uint32_t get_uint_value (const std::string & name) const;
157 
158  void set_value (const std::string & name, const std::string & value);
159  void set_value (const std::string & name, uint32_t value);
160 };
161 
162 } // namespace ARDOUR
163 
void set_disc_subtitle(const std::string &)
void set_copyright(const std::string &)
uint32_t disc_number() const
uint32_t track_number() const
std::string disc_subtitle() const
void set_composer(const std::string &)
std::string mixer() const
std::string genre() const
std::string country() const
void set_total_tracks(uint32_t)
void set_engineer(const std::string &)
void set_remixer(const std::string &)
std::string user_web() const
void set_isrc(const std::string &)
std::string subtitle() const
std::string album() const
void set_user_email(const std::string &)
void av_export_tag(MetaDataMap &) const
void set_organization(const std::string &)
void set_subtitle(const std::string &)
void set_track_number(uint32_t)
void set_instructor(const std::string &)
void set_album_artist(const std::string &)
void set_genre(const std::string &)
void set_compilation(const std::string &)
int set_state(const XMLNode &, int version_num)
void set_title(const std::string &)
std::string copyright() const
std::string title() const
void set_artist(const std::string &)
std::pair< std::string, std::string > Property
std::string engineer() const
static SessionMetadata * Metadata()
void set_arranger(const std::string &)
std::string lyricist() const
void set_country(const std::string &)
std::string comment() const
static SessionMetadata * _metadata
std::string compilation() const
void set_comment(const std::string &)
void set_album(const std::string &)
XMLNode & get_user_state()
void set_producer(const std::string &)
void set_lyricist(const std::string &)
std::string composer() const
std::map< std::string, std::string > MetaDataMap
std::string conductor() const
void set_disc_number(uint32_t)
XMLNode * get_xml(const std::string &name) const
std::string grouping() const
void set_value(const std::string &name, uint32_t value)
XMLNode & get_state() const
std::string description() const
uint32_t total_discs() const
std::string instructor() const
std::string dj_mixer() const
void set_user_web(const std::string &)
uint32_t get_uint_value(const std::string &name) const
std::string arranger() const
std::string barcode() const
std::string get_value(const std::string &name) const
void set_description(const std::string &)
void set_user_name(const std::string &)
std::string course() const
void set_conductor(const std::string &)
void set_value(const std::string &name, const std::string &value)
uint32_t total_tracks() const
uint32_t year() const
void set_mixer(const std::string &)
std::string album_artist() const
void set_year(uint32_t)
void set_dj_mixer(const std::string &)
std::string producer() const
std::string user_email() const
std::string user_name() const
std::string organization() const
void set_barcode(const std::string &)
std::string artist() const
std::string isrc() const
void set_course(const std::string &)
void set_grouping(const std::string &)
std::map< std::string, std::string > PropertyMap
void set_total_discs(uint32_t)
std::string remixer() const
Definition: xml++.h:114
GtkImageIconNameData name
Definition: gtkimage.h:6
#define LIBARDOUR_API