MotionLib  1.0.0
SamBuCa motion library
SettingParser.cpp
1 /*
2  * Copyright (C) 2022 CERN
3  *
4  * This software is provided 'as-is', without any express or implied
5  * warranty. In no event will the authors be held liable for any damages
6  * arising from the use of this software.
7  *
8  * Permission is granted to anyone to use this software for any purpose,
9  * including commercial applications, and to alter it and redistribute it
10  * freely, subject to the following restrictions:
11  *
12  * 1. The origin of this software must not be misrepresented; you must not
13  * claim that you wrote the original software. If you use this software
14  * in a product, an acknowledgment in the product documentation would be
15  * appreciated but is not required.
16  * 2. Altered source versions must be plainly marked as such, and must not be
17  * misrepresented as being the original software.
18  * 3. This notice may not be removed or altered from any source distribution.
19  *
20  * Created on: 2022-07-22
21  * Author: Michal Mysior <mmysior> <michal.mysior@cern.ch>
22  *
23  */
24 
25 #include "SettingParser.hpp"
26 
27 #include <ccut/yml.hpp>
28 
29 #include "Exception.hpp"
30 
31 namespace smc {
32 namespace internal {
33 
34 template<>
35 bool SettingParser::parse<bool>(const std::string &value)
36 {
37  if (value.size() == 1)
38  return (value != "0");
39 
40  if (value == "true")
41  return true;
42  else if (value == "false")
43  return false;
44 
45  bool ret;
46  try
47  {
48  ccut::yml::parse(value).rootref() >> ret;
49  }
50  catch (const std::exception &e)
51  {
52  throw smc::make_errno_exception(smc::ErrorCode::InvalidArguments);
53  }
54  return ret;
55 }
56 
57 } // namespace internal
58 } // namespace smc
main motion-lib namespace
Definition: Client.cpp:30