stub_analytics_plugin  1.6
Network Optix Video Analytics SDK
ini_config_c_impl.h
1 #pragma once
2 
3 #include <nx/kit/ini_config.h>
4 
5 #include <ini_config_c.h> //< Needed for IDE convenience, since already included from "ini.h".
6 
8 
9 struct Ini ini; //< Definition of Ini instance global variable.
10 
11 namespace {
12 
13 struct CppIni: public IniConfig
14 {
15  CppIni(): IniConfig(NX_INI_FILE)
16  {
17  // Call reg...Param() for each param, and assign default values.
18 
19  #undef NX_INI_FLAG
20  #undef NX_INI_INT
21  #undef NX_INI_STRING
22  #undef NX_INI_FLOAT
23  #undef NX_INI_DOUBLE
24 
25  #define NX_INI_FLAG(DEFAULT, PARAM, DESCR) \
26  pIni->PARAM = regBoolParam(&pIni->PARAM, (DEFAULT), #PARAM, (DESCR))
27  #define NX_INI_INT(DEFAULT, PARAM, DESCR) \
28  pIni->PARAM = regIntParam(&pIni->PARAM, (DEFAULT), #PARAM, (DESCR))
29  #define NX_INI_STRING(DEFAULT, PARAM, DESCR) \
30  pIni->PARAM = regStringParam(&pIni->PARAM, (DEFAULT), #PARAM, (DESCR))
31  #define NX_INI_FLOAT(DEFAULT, PARAM, DESCR) \
32  pIni->PARAM = regFloatParam(&pIni->PARAM, (DEFAULT), #PARAM, (DESCR))
33  #define NX_INI_DOUBLE(DEFAULT, PARAM, DESCR) \
34  pIni->PARAM = regDoubleParam(&pIni->PARAM, (DEFAULT), #PARAM, (DESCR))
35 
36  NX_INI_STRUCT //< Fields initialization: expands using the macros defined above.
37  }
38 
39  Ini* const pIni = &ini;
40 };
41 
42 static CppIni cppIni;
43 
44 } // namespace
45 
46 bool nx_ini_isEnabled()
47 {
48  return IniConfig::isEnabled();
49 }
50 
51 void nx_ini_setOutput(NxIniOutput output)
52 {
53  switch (output)
54  {
55  case NX_INI_OUTPUT_NONE: IniConfig::setOutput(nullptr); break;
56  case NX_INI_OUTPUT_STDOUT: IniConfig::setOutput(&std::cout); break;
57  case NX_INI_OUTPUT_STDERR: IniConfig::setOutput(&std::cerr); break;
58  default:
59  std::cerr << "nx_ini_setOutput(): INTERNAL ERROR: Invalid NxIniOutput: "
60  << output << std::endl;
61  }
62 }
63 
64 void nx_ini_reload()
65 {
66  cppIni.reload();
67 }
68 
69 const char* nx_ini_iniFile()
70 {
71  return cppIni.iniFile();
72 }
73 
74 void nx_ini_setIniFilesDir(const char* value)
75 {
76  IniConfig::setIniFilesDir(value);
77 }
78 
79 const char* nx_ini_iniFilesDir()
80 {
81  return IniConfig::iniFilesDir();
82 }
83 
84 const char* nx_ini_iniFilePath()
85 {
86  return cppIni.iniFilePath();
87 }
Definition: ini_config.h:58