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