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 41 of file ConfigInstance.h.

Member Typedef Documentation

◆ Instance

Member Enumeration Documentation

◆ Role

Enumerator
SERVER 
CLIENT 

Definition at line 45 of file ConfigInstance.h.

Constructor & Destructor Documentation

◆ ConfigInstance() [1/3]

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

Definition at line 52 of file ConfigInstance.cpp.

54 , role(role) {
56 std::string("Configuration for ")
57 .append(role == Role::SERVER ? "server" : "client")
58 .append(" instance '")
59 .append(instanceName)
60 .append("'"),
61 "Instance");
62
65
67 ->add_flag_callback(
68 "--disabled{true}",
69 [this]() {
71 },
72 "Disable this instance")
73 ->trigger_on_parse()
74 ->default_val("false")
75 ->type_name("bool")
76 ->check(CLI::IsMember({"true", "false"}))
77 ->group(instanceSc->get_formatter()->get_label("Persistent Options"));
78 }
static CLI::App * addStandardFlags(CLI::App *app)
Definition Config.cpp:675
static void disabled(CLI::App *instance, bool disabled=true)
Definition Config.cpp:826
static CLI::App * addHelp(CLI::App *app)
Definition Config.cpp:739
static CLI::App * addInstance(const std::string &name, const std::string &description, const std::string &group)
Definition Config.cpp:652

◆ ~ConfigInstance()

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

Definition at line 80 of file ConfigInstance.cpp.

80 {
82 }
static bool removeInstance(CLI::App *instance)
Definition Config.cpp:856

◆ 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 96 of file ConfigInstance.cpp.

96 {
97 CLI::App* sectionSc = instanceSc //
98 ->add_subcommand(name, description)
99 ->fallthrough()
100 ->configurable(false)
101 ->allow_extras(false)
102 ->group("Sections")
103 ->disabled(this->instanceName.empty() || name.empty());
104
105 sectionSc //
106 ->option_defaults()
107 ->configurable(!sectionSc->get_disabled());
108
109 if (!sectionSc->get_disabled()) {
112 }
113
114 return sectionSc;
115 }
static CLI::App * addSimpleHelp(CLI::App *app)
Definition Config.cpp:786

◆ getDisabled()

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

Definition at line 143 of file ConfigInstance.cpp.

143 {
144 return disableOpt //
145 ->as<bool>();
146 }

◆ getInstanceName()

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

Definition at line 88 of file ConfigInstance.cpp.

88 {
89 return instanceName.empty() ? nameAnonymous : instanceName;
90 }
static const std::string nameAnonymous

◆ getRequired()

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

Definition at line 135 of file ConfigInstance.cpp.

135 {
136 return requiredCount > 0;
137 }

◆ getRole()

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

Definition at line 84 of file ConfigInstance.cpp.

84 {
85 return role;
86 }

◆ getSection()

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

Definition at line 139 of file ConfigInstance.cpp.

139 {
140 return instanceSc->get_subcommand_no_throw(name);
141 }

◆ 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 117 of file ConfigInstance.cpp.

117 {
118 if (req != section->get_required()) {
119 if (req) {
121 instanceSc->needs(section);
122 } else {
124 instanceSc->remove_needs(section);
125 }
126
127 section->required(req);
128
129 if (!disableOpt->as<bool>()) {
131 }
132 }
133 }
static void required(CLI::App *instance, bool reqired=true)
Definition Config.cpp:804

◆ setDisabled()

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

Definition at line 148 of file ConfigInstance.cpp.

148 {
149 disableOpt //
150 ->default_val(disabled ? "true" : "false")
151 ->clear();
152
154 }

◆ setInstanceName()

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

Definition at line 92 of file ConfigInstance.cpp.

92 {
93 this->instanceName = instanceName;
94 }

Friends And Related Symbol Documentation

◆ net::config::ConfigSection

friend class net::config::ConfigSection
friend

Definition at line 86 of file ConfigInstance.h.

Member Data Documentation

◆ disableOpt

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

Definition at line 84 of file ConfigInstance.h.

◆ instanceName

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

Definition at line 78 of file ConfigInstance.h.

◆ instanceSc

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

Definition at line 83 of file ConfigInstance.h.

◆ nameAnonymous

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

Definition at line 79 of file ConfigInstance.h.

◆ requiredCount

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

Definition at line 76 of file ConfigInstance.h.

◆ role

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

Definition at line 81 of file ConfigInstance.h.


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