1 ///
2 /// Parser for audio options.
3 /// Parse audio options for creating or reconfiguring a room.
4 ///	@file		audiooptionsparser.h - pianod2
5 ///	@author		Perette Barella
6 ///	@date		2015-11-23
7 ///	@copyright	  Copyright (c) 2015-2017 Devious Fish. All rights reserved.
8 ///
9 
10 #ifndef __pianod2__audiooptionsparser__
11 #define __pianod2__audiooptionsparser__
12 
13 #include <config.h>
14 
15 #include <footparser.h>
16 
17 #include "connection.h"
18 
19 #include "fundamentals.h"
20 
21 /// Support for parsing audio options into the AudioSettings structure.
22 namespace AudioOptions {
23     enum class Option {
24         Driver = 1,
25         Device,
26         Id,
27         Options,
28         Server,
29         Library,
30         Volume,
31         CrossfadeTime,
32         CrossfadeLevel,
33         PrerollTime
34     };
35 
36     void validate (const AudioSettings);
37 
38     /** AudioOptions is the parser that fills in the AudioSettings structure. */
39     class Parser : public Football::OptionParser<AudioSettings, Option> {
40         virtual int handleOption (Option option, AudioSettings &dest) override;
41     public:
42         Parser ();
43         int interpret (const std::vector<std::string> &options, AudioSettings &result, PianodConnection &conn);
44     };
45 
46     extern Parser parser;
47 }
48 
49 #endif /* defined(__pianod2__audiooptionsparser__) */
50