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

219  :
220  PARAM_BASE( aJsonPath, aReadOnly ),
221  m_ptr( aPtr ),
222  m_min( aMin ),
223  m_max( aMax ),
224  m_default( aDefault )
225  {
226  }
EnumType m_default
Definition: parameters.h:272
EnumType m_max
Definition: parameters.h:271
PARAM_BASE(std::string aJsonPath, bool aReadOnly)
Definition: parameters.h:35
EnumType m_min
Definition: parameters.h:270
EnumType * m_ptr
Definition: parameters.h:269

Member Function Documentation

◆ GetDefault()

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

Definition at line 250 of file parameters.h.

251  {
252  return m_default;
253  }
EnumType m_default
Definition: parameters.h:272

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 useful in error messages

Definition at line 68 of file parameters.h.

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

References PARAM_BASE::m_path.

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

229  {
230  if( m_readOnly )
231  return;
232 
233  if( OPT<int> val = aSettings->Get<int>( m_path ) )
234  {
235  if( *val >= static_cast<int>( m_min ) && *val <= static_cast<int>( m_max ) )
236  *m_ptr = static_cast<EnumType>( *val );
237  else if( aResetIfMissing )
238  *m_ptr = m_default;
239 
240  }
241  else if( aResetIfMissing )
242  *m_ptr = m_default;
243  }
std::string m_path
the string used to store the param in json files
Definition: parameters.h:74
EnumType m_default
Definition: parameters.h:272
EnumType m_max
Definition: parameters.h:271
EnumType m_min
Definition: parameters.h:270
OPT< ValueType > Get(const std::string &aPath) const
Fetches a value from within the JSON document.
bool m_readOnly
! True if the parameter pointer should never be overwritten
Definition: parameters.h:77
boost::optional< T > OPT
Definition: optional.h:7
EnumType * m_ptr
Definition: parameters.h:269

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

261  {
262  if( OPT<int> val = aSettings->Get<int>( m_path ) )
263  return *val == static_cast<int>( *m_ptr );
264 
265  return false;
266  }
std::string m_path
the string used to store the param in json files
Definition: parameters.h:74
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:269

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

256  {
257  *m_ptr = m_default;
258  }
EnumType m_default
Definition: parameters.h:272
EnumType * m_ptr
Definition: parameters.h:269

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

246  {
247  aSettings->Set<int>( m_path, static_cast<int>( *m_ptr ) );
248  }
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...
std::string m_path
the string used to store the param in json files
Definition: parameters.h:74
EnumType * m_ptr
Definition: parameters.h:269

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

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

◆ m_path

◆ m_ptr

template<typename EnumType >
EnumType* PARAM_ENUM< EnumType >::m_ptr
private

◆ m_readOnly

bool PARAM_BASE::m_readOnly
protectedinherited

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