KiCad PCB EDA Suite
PARAM_ENUM< EnumType > Class Template Reference

Stores an enum as an integer. More...

#include <parameters.h>

Inheritance diagram for PARAM_ENUM< EnumType >:
PARAM_BASE

Public Member Functions

 PARAM_ENUM (const std::string &aJsonPath, EnumType *aPtr, EnumType aDefault, EnumType aMin, EnumType aMax, 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...
 
EnumType GetDefault () const
 
void SetDefault () override
 
bool IsDefault () const override
 Checks whether or not this param has been changed from its default value. More...
 
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::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...
 

Private Attributes

EnumType * m_ptr
 
EnumType m_min
 
EnumType m_max
 
EnumType m_default
 

Detailed Description

template<typename EnumType>
class PARAM_ENUM< EnumType >

Stores an enum as an integer.

Definition at line 226 of file parameters.h.

Constructor & Destructor Documentation

◆ PARAM_ENUM()

template<typename EnumType >
PARAM_ENUM< EnumType >::PARAM_ENUM ( const std::string &  aJsonPath,
EnumType *  aPtr,
EnumType  aDefault,
EnumType  aMin,
EnumType  aMax,
bool  aReadOnly = false 
)
inline

Definition at line 229 of file parameters.h.

230  :
231  PARAM_BASE( aJsonPath, aReadOnly ),
232  m_ptr( aPtr ),
233  m_min( aMin ),
234  m_max( aMax ),
235  m_default( aDefault )
236  {
237  }
EnumType m_default
Definition: parameters.h:288
EnumType m_max
Definition: parameters.h:287
PARAM_BASE(std::string aJsonPath, bool aReadOnly)
Definition: parameters.h:35
EnumType m_min
Definition: parameters.h:286
EnumType * m_ptr
Definition: parameters.h:285

Member Function Documentation

◆ GetDefault()

template<typename EnumType >
EnumType PARAM_ENUM< EnumType >::GetDefault ( ) const
inline

Definition at line 261 of file parameters.h.

262  {
263  return m_default;
264  }
EnumType m_default
Definition: parameters.h:288

References PARAM_ENUM< EnumType >::m_default.

◆ 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 usefull in error messages

Definition at line 74 of file parameters.h.

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

References PARAM_BASE::m_path.

◆ IsDefault()

template<typename EnumType >
bool PARAM_ENUM< EnumType >::IsDefault ( ) const
inlineoverridevirtual

Checks whether or not this param has been changed from its default value.

Returns
true if the parameter in memory matches its default value

Implements PARAM_BASE.

Definition at line 271 of file parameters.h.

272  {
273  return *m_ptr == m_default;
274  }
EnumType m_default
Definition: parameters.h:288
EnumType * m_ptr
Definition: parameters.h:285

References PARAM_ENUM< EnumType >::m_default, and PARAM_ENUM< EnumType >::m_ptr.

◆ Load()

template<typename EnumType >
void PARAM_ENUM< EnumType >::Load ( JSON_SETTINGS aSettings,
bool  aResetIfMissing = true 
) const
inlineoverridevirtual

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 239 of file parameters.h.

240  {
241  if( m_readOnly )
242  return;
243 
244  if( OPT<int> val = aSettings->Get<int>( m_path ) )
245  {
246  if( *val >= static_cast<int>( m_min ) && *val <= static_cast<int>( m_max ) )
247  *m_ptr = static_cast<EnumType>( *val );
248  else if( aResetIfMissing )
249  *m_ptr = m_default;
250 
251  }
252  else if( aResetIfMissing )
253  *m_ptr = m_default;
254  }
std::string m_path
the string used to store the param in json files
Definition: parameters.h:80
EnumType m_default
Definition: parameters.h:288
EnumType m_max
Definition: parameters.h:287
OPT< ValueType > Get(const std::string &aPath) const
Fetches a value from within the JSON document.
EnumType m_min
Definition: parameters.h:286
bool m_readOnly
! True if the parameter pointer should never be overwritten
Definition: parameters.h:83
boost::optional< T > OPT
Definition: optional.h:7
EnumType * m_ptr
Definition: parameters.h:285

References JSON_SETTINGS::Get(), PARAM_ENUM< EnumType >::m_default, PARAM_ENUM< EnumType >::m_max, PARAM_ENUM< EnumType >::m_min, PARAM_BASE::m_path, PARAM_ENUM< EnumType >::m_ptr, and PARAM_BASE::m_readOnly.

◆ MatchesFile()

template<typename EnumType >
bool PARAM_ENUM< EnumType >::MatchesFile ( JSON_SETTINGS aSettings) const
inlineoverridevirtual

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 276 of file parameters.h.

277  {
278  if( OPT<int> val = aSettings->Get<int>( m_path ) )
279  return *val == static_cast<int>( *m_ptr );
280 
281  return false;
282  }
std::string m_path
the string used to store the param in json files
Definition: parameters.h:80
OPT< ValueType > Get(const std::string &aPath) const
Fetches a value from within the JSON document.
boost::optional< T > OPT
Definition: optional.h:7
EnumType * m_ptr
Definition: parameters.h:285

References JSON_SETTINGS::Get(), PARAM_BASE::m_path, and PARAM_ENUM< EnumType >::m_ptr.

◆ SetDefault()

template<typename EnumType >
void PARAM_ENUM< EnumType >::SetDefault ( )
inlineoverridevirtual

Implements PARAM_BASE.

Definition at line 266 of file parameters.h.

267  {
268  *m_ptr = m_default;
269  }
EnumType m_default
Definition: parameters.h:288
EnumType * m_ptr
Definition: parameters.h:285

References PARAM_ENUM< EnumType >::m_default, and PARAM_ENUM< EnumType >::m_ptr.

◆ Store()

template<typename EnumType >
void PARAM_ENUM< EnumType >::Store ( JSON_SETTINGS aSettings) const
inlineoverridevirtual

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 256 of file parameters.h.

257  {
258  aSettings->Set<int>( m_path, static_cast<int>( *m_ptr ) );
259  }
std::string m_path
the string used to store the param in json files
Definition: parameters.h:80
EnumType * m_ptr
Definition: parameters.h:285
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...

References PARAM_BASE::m_path, PARAM_ENUM< EnumType >::m_ptr, and JSON_SETTINGS::Set().

Member Data Documentation

◆ m_default

template<typename EnumType >
EnumType PARAM_ENUM< EnumType >::m_default
private

◆ m_max

template<typename EnumType >
EnumType PARAM_ENUM< EnumType >::m_max
private

Definition at line 287 of file parameters.h.

Referenced by PARAM_ENUM< EnumType >::Load().

◆ m_min

template<typename EnumType >
EnumType PARAM_ENUM< EnumType >::m_min
private

Definition at line 286 of file parameters.h.

Referenced by PARAM_ENUM< EnumType >::Load().

◆ m_path

◆ m_ptr

◆ m_readOnly


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