KiCad PCB EDA Suite
PARAM_SET< Type > Class Template Reference

#include <parameters.h>

Inheritance diagram for PARAM_SET< Type >:
PARAM_BASE

Public Member Functions

 PARAM_SET (const std::string &aJsonPath, std::set< Type > *aPtr, std::initializer_list< Type > aDefault, bool aReadOnly=false)
 
 PARAM_SET (const std::string &aJsonPath, std::set< Type > *aPtr, std::set< Type > aDefault, bool aReadOnly=false)
 
void Load (JSON_SETTINGS *aSettings, bool aResetIfMissing=true) const override
 Loads the value of this parameter from JSON to the underlying storage. More...
 
void Store (JSON_SETTINGS *aSettings) const override
 Stores the value of this parameter to the given JSON_SETTINGS object. More...
 
void SetDefault () override
 
bool MatchesFile (JSON_SETTINGS *aSettings) const override
 Checks whether the parameter in memory matches the one in a given JSON file. More...
 
const std::string & GetJsonPath () const
 

Protected Attributes

std::set< Type > * m_ptr
 
std::set< Type > m_default
 
std::string m_path
 the string used to store the param in json files More...
 
bool m_readOnly
 ! True if the parameter pointer should never be overwritten More...
 

Detailed Description

template<typename Type>
class PARAM_SET< Type >

Definition at line 450 of file parameters.h.

Constructor & Destructor Documentation

◆ PARAM_SET() [1/2]

template<typename Type >
PARAM_SET< Type >::PARAM_SET ( const std::string &  aJsonPath,
std::set< Type > *  aPtr,
std::initializer_list< Type >  aDefault,
bool  aReadOnly = false 
)
inline

Definition at line 453 of file parameters.h.

454 :
455 PARAM_BASE( aJsonPath, aReadOnly ),
456 m_ptr( aPtr ),
457 m_default( aDefault )
458 { }
PARAM_BASE(std::string aJsonPath, bool aReadOnly)
Definition: parameters.h:36
std::set< Type > * m_ptr
Definition: parameters.h:479
std::set< Type > m_default
Definition: parameters.h:481

◆ PARAM_SET() [2/2]

template<typename Type >
PARAM_SET< Type >::PARAM_SET ( const std::string &  aJsonPath,
std::set< Type > *  aPtr,
std::set< Type >  aDefault,
bool  aReadOnly = false 
)
inline

Definition at line 460 of file parameters.h.

461 :
462 PARAM_BASE( aJsonPath, aReadOnly ),
463 m_ptr( aPtr ),
464 m_default( aDefault )
465 { }

Member Function Documentation

◆ GetJsonPath()

const std::string & PARAM_BASE::GetJsonPath ( ) const
inlineinherited
Returns
the path name of the parameter used to store it in the json file mainly useful in error messages

Definition at line 69 of file parameters.h.

69{ return m_path; }
std::string m_path
the string used to store the param in json files
Definition: parameters.h:75

References PARAM_BASE::m_path.

◆ Load()

template<typename ValueType >
void PARAM_SET< ValueType >::Load ( JSON_SETTINGS aSettings,
bool  aResetIfMissing = true 
) const
overridevirtual

Loads the value of this parameter from JSON to the underlying storage.

Parameters
aSettingsis the JSON_SETTINGS object to load from.
aResetIfMissingif true will set the parameter to its default value if load fails

Implements PARAM_BASE.

Definition at line 142 of file parameters.cpp.

143{
144 if( m_readOnly )
145 return;
146
147 if( std::optional<nlohmann::json> js = aSettings->GetJson( m_path ) )
148 {
149 std::set<ValueType> val;
150
151 if( js->is_array() )
152 {
153 for( const auto& el : js->items() )
154 val.insert( el.value().get<ValueType>() );
155 }
156
157 *m_ptr = val;
158 }
159 else if( aResetIfMissing )
160 *m_ptr = m_default;
161}
std::optional< nlohmann::json > GetJson(const std::string &aPath) const
Fetches a JSON object that is a subset of this JSON_SETTINGS object, using a path of the form "key1....
bool m_readOnly
! True if the parameter pointer should never be overwritten
Definition: parameters.h:78

References JSON_SETTINGS::GetJson().

◆ MatchesFile()

template<typename ValueType >
bool PARAM_SET< ValueType >::MatchesFile ( JSON_SETTINGS aSettings) const
overridevirtual

Checks whether the parameter in memory matches the one in a given JSON file.

Parameters
aSettingsis a JSON_SETTINGS to check the JSON file contents of
Returns
true if the parameter in memory matches its value in the file

Implements PARAM_BASE.

Definition at line 177 of file parameters.cpp.

178{
179 if( std::optional<nlohmann::json> js = aSettings->GetJson( m_path ) )
180 {
181 if( js->is_array() )
182 {
183 std::set<ValueType> val;
184
185 for( const auto& el : js->items() )
186 val.insert( el.value().get<ValueType>() );
187
188 return val == *m_ptr;
189 }
190 }
191
192 return false;
193}

References JSON_SETTINGS::GetJson().

◆ SetDefault()

template<typename Type >
void PARAM_SET< Type >::SetDefault ( )
inlineoverridevirtual

Implements PARAM_BASE.

Definition at line 471 of file parameters.h.

472 {
473 *m_ptr = m_default;
474 }

References PARAM_SET< Type >::m_default, and PARAM_SET< Type >::m_ptr.

◆ Store()

template<typename ValueType >
void PARAM_SET< ValueType >::Store ( JSON_SETTINGS aSettings) const
overridevirtual

Stores the value of this parameter to the given JSON_SETTINGS object.

Parameters
aSettingsis the JSON_SETTINGS object to store into.

Implements PARAM_BASE.

Definition at line 165 of file parameters.cpp.

166{
167 nlohmann::json js = nlohmann::json::array();
168
169 for( const auto& el : *m_ptr )
170 js.push_back( el );
171
172 aSettings->Set<nlohmann::json>( m_path, js );
173}
void Set(const std::string &aPath, ValueType aVal)
Stores a value into the JSON document Will throw an exception if ValueType isn't something that the l...
nlohmann::json json
Definition: gerbview.cpp:44

References JSON_SETTINGS::Set().

Member Data Documentation

◆ m_default

template<typename Type >
std::set<Type> PARAM_SET< Type >::m_default
protected

Definition at line 481 of file parameters.h.

Referenced by PARAM_SET< Type >::SetDefault().

◆ m_path

◆ m_ptr

template<typename Type >
std::set<Type>* PARAM_SET< Type >::m_ptr
protected

Definition at line 479 of file parameters.h.

Referenced by PARAM_SET< Type >::SetDefault().

◆ m_readOnly

bool PARAM_BASE::m_readOnly
protectedinherited

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