MXS-2727 Allow assignment to config types

Allows for code like

    CacheConfig config("MXS-2727");
    config.storage = std::string("inmemory_storage");
    config.soft_ttl = std::chrono::seconds(1);
    config.hard_ttl = std::chrono::seconds(10);
    config.max_size = 10;
    config.thread_model = CACHE_THREAD_MODEL_MT;
    config.enabled = true;

to be used when you want to create a configuration manually and not
from a configuration file.
This commit is contained in:
Johan Wikman 2019-11-12 10:13:22 +02:00
parent ff80f2b514
commit e332625b8d

View File

@ -968,6 +968,12 @@ public:
{
}
This& operator=(const value_type& value)
{
m_value = value;
return static_cast<This&>(*this);
}
This& operator=(const ConcreteType<This, ParamType>& rhs)
{
// Only the value is copied, the parameter and the configuration
@ -1140,6 +1146,8 @@ inline bool operator>=(const typename ParamType::value_type& lhs,
class Number : public ConcreteType<Number, ParamNumber>
{
protected:
using ConcreteType<Number, ParamNumber>::operator =;
Number(Configuration* pConfiguration, const ParamNumber* pParam)
: ConcreteType(pConfiguration, pParam)
{
@ -1152,6 +1160,8 @@ protected:
class Count : public Number
{
public:
using Number::operator =;
Count(Configuration* pConfiguration, const ParamCount* pParam)
: Number(pConfiguration, pParam)
{
@ -1164,6 +1174,8 @@ public:
class Integer : public Number
{
public:
using Number::operator =;
Integer(Configuration* pConfiguration, const ParamInteger* pParam)
: Number(pConfiguration, pParam)
{
@ -1176,6 +1188,8 @@ public:
class BitMask : public Count
{
public:
using Count::operator =;
BitMask(Configuration* pConfiguration, const ParamCount* pParam)
: Count(pConfiguration, pParam)
{
@ -1193,6 +1207,8 @@ public:
class Bool : public ConcreteType<Bool, ParamBool>
{
public:
using ConcreteType<Bool, ParamBool>::operator =;
Bool(Configuration* pConfiguration, const ParamBool* pParam)
: ConcreteType<Bool, ParamBool>(pConfiguration, pParam)
{
@ -1211,6 +1227,8 @@ template<class T>
class Duration : public ConcreteType<Duration<T>, ParamDuration<T>>
{
public:
using ConcreteType<Duration<T>, ParamDuration<T>>::operator =;
Duration(Configuration* pConfiguration, const ParamDuration<T>* pParam)
: ConcreteType<Duration<T>, ParamDuration<T>>(pConfiguration, pParam)
{
@ -1243,6 +1261,8 @@ template<class T>
class Enum : public ConcreteType<Enum<T>, ParamEnum<T>>
{
public:
using ConcreteType<Enum<T>, ParamEnum<T>>::operator =;
Enum(Configuration* pConfiguration, const ParamEnum<T>* pParam)
: ConcreteType<Enum<T>, ParamEnum<T>>(pConfiguration, pParam)
{
@ -1255,6 +1275,8 @@ public:
class Path : public ConcreteType<Path, ParamPath>
{
public:
using ConcreteType<Path, ParamPath>::operator =;
Path(Configuration* pConfiguration, const ParamPath* pParam)
: ConcreteType<Path, ParamPath>(pConfiguration, pParam)
{
@ -1277,6 +1299,8 @@ public:
class Size : public ConcreteType<Size, ParamSize>
{
public:
using ConcreteType<Size, ParamSize>::operator =;
Size(Configuration* pConfiguration, const ParamSize* pParam)
: ConcreteType(pConfiguration, pParam)
{
@ -1294,6 +1318,8 @@ inline Size::value_type operator/(const Size& lhs, Size::value_type rhs)
class Server : public ConcreteType<Server, ParamServer>
{
public:
using ConcreteType<Server, ParamServer>::operator =;
Server(Configuration* pConfiguration, const ParamServer* pParam)
: ConcreteType<Server, ParamServer>(pConfiguration, pParam)
{
@ -1306,6 +1332,8 @@ public:
class String : public ConcreteType<String, ParamString>
{
public:
using ConcreteType<String, ParamString>::operator =;
String(Configuration* pConfiguration, const ParamString* pParam)
: ConcreteType<String, ParamString>(pConfiguration, pParam)
{