ardour
session_metadata.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2008 Paul Davis
3  Author: Sakari Bergen
4 
5  This program is free software; you can redistribute it and/or modify it
6  under the terms of the GNU General Public License as published by the Free
7  Software Foundation; either version 2 of the License, or (at your option)
8  any later version.
9 
10  This program is distributed in the hope that it will be useful, but WITHOUT
11  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13  for more details.
14 
15  You should have received a copy of the GNU General Public License along
16  with this program; if not, write to the Free Software Foundation, Inc.,
17  675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19 
20 #ifndef __ardour_session_metadata_h__
21 #define __ardour_session_metadata_h__
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 
45  SessionMetadata ();
46  ~SessionMetadata ();
47 
48  /*** Accessing ***/
49  std::string comment () const;
50  std::string copyright () const;
51  std::string isrc () const;
52  uint32_t year () const;
53 
54  std::string grouping () const;
55  std::string barcode () const;
56  std::string title () const;
57  std::string subtitle () const;
58 
59  std::string artist () const;
60  std::string album_artist () const;
61  std::string lyricist () const;
62  std::string composer () const;
63  std::string conductor () const;
64  std::string remixer () const;
65  std::string arranger () const;
66  std::string engineer () const;
67  std::string producer () const;
68  std::string dj_mixer () const;
69  std::string mixer () const;
70 
71  std::string album () const;
72  std::string compilation () const;
73  std::string disc_subtitle () const;
74  uint32_t disc_number () const;
75  uint32_t total_discs () const;
76  uint32_t track_number () const;
77  uint32_t total_tracks () const;
78 
79  std::string genre () const;
80 
81  std::string instructor () const;
82  std::string course () const;
83 
84  std::string user_name () const;
85  std::string user_email () const;
86  std::string user_web () const;
87  std::string organization () const;
88  std::string country () const;
89 
90  /*** Editing ***/
91  void set_comment (const std::string &);
92  void set_copyright (const std::string &);
93  void set_isrc (const std::string &);
94  void set_year (uint32_t);
95 
96  void set_grouping (const std::string &);
97  void set_barcode (const std::string &);
98  void set_title (const std::string &);
99  void set_subtitle (const std::string &);
100 
101  void set_artist (const std::string &);
102  void set_album_artist (const std::string &);
103  void set_lyricist (const std::string &);
104  void set_composer (const std::string &);
105  void set_conductor (const std::string &);
106  void set_remixer (const std::string &);
107  void set_arranger (const std::string &);
108  void set_engineer (const std::string &);
109  void set_producer (const std::string &);
110  void set_dj_mixer (const std::string &);
111  void set_mixer (const std::string &);
112 
113  void set_album (const std::string &);
114  void set_compilation (const std::string &);
115  void set_disc_subtitle (const std::string &);
116  void set_disc_number (uint32_t);
117  void set_total_discs (uint32_t);
118  void set_track_number (uint32_t);
119  void set_total_tracks (uint32_t);
120 
121  void set_genre (const std::string &);
122 
123  void set_instructor (const std::string &);
124  void set_course (const std::string &);
125 
126  void set_user_name (const std::string &);
127  void set_user_email (const std::string &);
128  void set_user_web (const std::string &);
129  void set_organization (const std::string &);
130  void set_country (const std::string &);
131 
132  /*** Serialization ***/
133  XMLNode & get_state (); //serializes stuff in the map, to be stored in session file
134  XMLNode & get_user_state (); //serializes stuff in the user_map, to be stored in user's config file
135  int set_state (const XMLNode &, int version_num);
136 
137  private:
138 
139  static SessionMetadata *_metadata; //singleton instance
140 
141  typedef std::pair<std::string, std::string> Property;
142  typedef std::map<std::string, std::string> PropertyMap;
143  PropertyMap map;
144  PropertyMap user_map;
145 
146  XMLNode * get_xml (const std::string & name);
147 
148  std::string get_value (const std::string & name) const;
149  uint32_t get_uint_value (const std::string & name) const;
150 
151  void set_value (const std::string & name, const std::string & value);
152  void set_value (const std::string & name, uint32_t value);
153 };
154 
155 } // namespace ARDOUR
156 
157 #endif // __ardour_session_metadata_h__
std::pair< std::string, std::string > Property
Definition: amp.h:29
static SessionMetadata * _metadata
static SessionMetadata * Metadata()
std::map< std::string, std::string > PropertyMap
#define LIBARDOUR_API
const char * name
Definition: xml++.h:95
static LilvNode * get_value(LilvWorld *world, const LilvNode *subject, const LilvNode *predicate)
Definition: lv2_plugin.cc:971