SNode.C
Loading...
Searching...
No Matches
net::config::ConfigInstance Class Reference

#include <ConfigInstance.h>

Inheritance diagram for net::config::ConfigInstance:
Collaboration diagram for net::config::ConfigInstance:

Public Types

enum class  Role { SERVER , CLIENT }
 
using Instance = ConfigInstance
 

Public Member Functions

 ConfigInstance (ConfigInstance &)=delete
 
 ConfigInstance (ConfigInstance &&)=delete
 
ConfigInstanceoperator= (ConfigInstance &)=delete
 
ConfigInstanceoperator= (ConfigInstance &&)=delete
 
Role getRole ()
 
const std::string & getInstanceName () const
 
void setInstanceName (const std::string &instanceName)
 
bool getDisabled () const
 
void setDisabled (bool disabled=true)
 

Protected Member Functions

 ConfigInstance (const std::string &instanceName, Role role)
 
virtual ~ConfigInstance ()
 

Private Member Functions

CLI::App * addSection (const std::string &name, const std::string &description)
 
CLI::App * getSection (const std::string &name) const
 
void required (CLI::App *section, bool req=true)
 
bool getRequired () const
 

Private Attributes

uint8_t requiredCount = 0
 
std::string instanceName
 
Role role
 
CLI::App * instanceSc = nullptr
 
CLI::Option * disableOpt = nullptr
 

Static Private Attributes

static const std::string nameAnonymous = "<anonymous>"
 

Friends

class net::config::ConfigSection
 

Detailed Description

Definition at line 63 of file ConfigInstance.h.

Member Typedef Documentation

◆ Instance

Member Enumeration Documentation

◆ Role

Enumerator
SERVER 
CLIENT 

Definition at line 67 of file ConfigInstance.h.

Constructor & Destructor Documentation

◆ ConfigInstance() [1/3]

net::config::ConfigInstance::ConfigInstance ( const std::string & instanceName,
Role role )
explicitprotected

Definition at line 74 of file ConfigInstance.cpp.

76 , role(role) {
78 std::string("Configuration for ")
79 .append(role == Role::SERVER ? "server" : "client")
80 .append(" instance '")
81 .append(instanceName)
82 .append("'"),
83 "Instance");
84
87
89 ->add_flag_callback(
90 "--disabled{true}",
91 [this]() {
93 },
94 "Disable this instance")
95 ->trigger_on_parse()
96 ->default_val("false")
97 ->type_name("bool")
98 ->check(CLI::IsMember({"true", "false"}))
99 ->group(instanceSc->get_formatter()->get_label("Persistent Options"));
100 }
static CLI::App * addStandardFlags(CLI::App *app)
Definition Config.cpp:701
static void disabled(CLI::App *instance, bool disabled=true)
Definition Config.cpp:849
static CLI::App * addHelp(CLI::App *app)
Definition Config.cpp:765
static CLI::App * addInstance(const std::string &name, const std::string &description, const std::string &group)
Definition Config.cpp:678

◆ ~ConfigInstance()

net::config::ConfigInstance::~ConfigInstance ( )
protectedvirtual

Definition at line 102 of file ConfigInstance.cpp.

102 {
104 }
static bool removeInstance(CLI::App *instance)
Definition Config.cpp:879

◆ ConfigInstance() [2/3]

net::config::ConfigInstance::ConfigInstance ( ConfigInstance & )
delete

◆ ConfigInstance() [3/3]

net::config::ConfigInstance::ConfigInstance ( ConfigInstance && )
delete

Member Function Documentation

◆ addSection()

CLI::App * net::config::ConfigInstance::addSection ( const std::string & name,
const std::string & description )
private

Definition at line 118 of file ConfigInstance.cpp.

118 {
119 CLI::App* sectionSc = instanceSc //
120 ->add_subcommand(name, description)
121 ->fallthrough()
122 ->configurable(false)
123 ->allow_extras(false)
124 ->group("Sections")
125 ->disabled(this->instanceName.empty() || name.empty());
126
127 sectionSc //
128 ->option_defaults()
129 ->configurable(!sectionSc->get_disabled());
130
131 if (!sectionSc->get_disabled()) {
134 }
135
136 return sectionSc;
137 }
static CLI::App * addSimpleHelp(CLI::App *app)
Definition Config.cpp:810

◆ getDisabled()

bool net::config::ConfigInstance::getDisabled ( ) const

Definition at line 165 of file ConfigInstance.cpp.

165 {
166 return disableOpt //
167 ->as<bool>();
168 }

◆ getInstanceName()

const std::string & net::config::ConfigInstance::getInstanceName ( ) const

Definition at line 110 of file ConfigInstance.cpp.

110 {
111 return instanceName.empty() ? nameAnonymous : instanceName;
112 }
static const std::string nameAnonymous

◆ getRequired()

bool net::config::ConfigInstance::getRequired ( ) const
private

Definition at line 157 of file ConfigInstance.cpp.

157 {
158 return requiredCount > 0;
159 }

◆ getRole()

ConfigInstance::Role net::config::ConfigInstance::getRole ( )

Definition at line 106 of file ConfigInstance.cpp.

106 {
107 return role;
108 }

◆ getSection()

CLI::App * net::config::ConfigInstance::getSection ( const std::string & name) const
private

Definition at line 161 of file ConfigInstance.cpp.

161 {
162 return instanceSc->get_subcommand_no_throw(name);
163 }

◆ operator=() [1/2]

ConfigInstance & net::config::ConfigInstance::operator= ( ConfigInstance && )
delete

◆ operator=() [2/2]

ConfigInstance & net::config::ConfigInstance::operator= ( ConfigInstance & )
delete

◆ required()

void net::config::ConfigInstance::required ( CLI::App * section,
bool req = true )
private

Definition at line 139 of file ConfigInstance.cpp.

139 {
140 if (req != section->get_required()) {
141 if (req) {
143 instanceSc->needs(section);
144 } else {
146 instanceSc->remove_needs(section);
147 }
148
149 section->required(req);
150
151 if (!disableOpt->as<bool>()) {
153 }
154 }
155 }
static void required(CLI::App *instance, bool reqired=true)
Definition Config.cpp:827

◆ setDisabled()

void net::config::ConfigInstance::setDisabled ( bool disabled = true)

Definition at line 170 of file ConfigInstance.cpp.

170 {
171 disableOpt //
172 ->default_val(disabled ? "true" : "false")
173 ->clear();
174
176 }

◆ setInstanceName()

void net::config::ConfigInstance::setInstanceName ( const std::string & instanceName)

Definition at line 114 of file ConfigInstance.cpp.

114 {
115 this->instanceName = instanceName;
116 }

Friends And Related Symbol Documentation

◆ net::config::ConfigSection

friend class net::config::ConfigSection
friend

Definition at line 108 of file ConfigInstance.h.

Member Data Documentation

◆ disableOpt

CLI::Option* net::config::ConfigInstance::disableOpt = nullptr
private

Definition at line 106 of file ConfigInstance.h.

◆ instanceName

std::string net::config::ConfigInstance::instanceName
private

Definition at line 100 of file ConfigInstance.h.

◆ instanceSc

CLI::App* net::config::ConfigInstance::instanceSc = nullptr
private

Definition at line 105 of file ConfigInstance.h.

◆ nameAnonymous

const std::string net::config::ConfigInstance::nameAnonymous = "<anonymous>"
staticprivate

Definition at line 101 of file ConfigInstance.h.

◆ requiredCount

uint8_t net::config::ConfigInstance::requiredCount = 0
private

Definition at line 98 of file ConfigInstance.h.

◆ role

Role net::config::ConfigInstance::role
private

Definition at line 103 of file ConfigInstance.h.


The documentation for this class was generated from the following files: