Adds conversion operators to CompOption::Value so we can just write option->value (), rather than e.g. option->value (). s()
Assuming that such a change would be commited, I am not sure if the CompAction* is correct. I added this while testing the changes with the move plugin, as this was the only way I could get it to work - apart from the 'old' way - otherwise it would complain about invalid conversion from int or invalid conversion from CompValue*, depending on how I changed that part in move. Joel. ------ >From ba9be143d61644c8db0b6161f4c3f8db6510d96c Mon Sep 17 00:00:00 2001 From: Joel Bosveld <[email protected]> Date: Tue, 24 Feb 2009 22:43:50 +0900 Subject: [PATCH] Add conversion operators to CompOption::Value --- include/core/option.h | 11 +++++++++ src/option.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 0 deletions(-) diff --git a/include/core/option.h b/include/core/option.h index 0ee362e..b9f47c5 100644 --- a/include/core/option.h +++ b/include/core/option.h @@ -98,6 +98,17 @@ class CompOption { bool operator!= (const Value& val); Value & operator= (const Value &val); + operator bool (); + operator int (); + operator float(); + operator unsigned short * (); + operator CompString (); + operator CompMatch & (); + operator CompAction & (); + operator CompAction * (); + operator Type (); + operator Vector & (); + private: PrivateValue *priv; }; diff --git a/src/option.cpp b/src/option.cpp index 66b76cb..4705746 100644 --- a/src/option.cpp +++ b/src/option.cpp @@ -250,6 +250,64 @@ CompOption::Value::list () return priv->list; } +CompOption::Value::operator bool () +{ + if (priv->type != CompOption::TypeBool) + return false; + return priv->value.b; +} + +CompOption::Value::operator int () +{ + if (priv->type != CompOption::TypeInt) + return 0; + return priv->value.i; +} + +CompOption::Value::operator float() +{ + if (priv->type != CompOption::TypeFloat) + return 0.0; + return priv->value.f; +} + +CompOption::Value::operator unsigned short * () +{ + if (priv->type != CompOption::TypeColor) + return reinterpret_cast<unsigned short *> (&defaultColor); + return priv->value.c; +} + +CompOption::Value::operator CompString () +{ + return priv->string; +} + +CompOption::Value::operator CompMatch & () +{ + return priv->match; +} + +CompOption::Value::operator CompAction & () +{ + return priv->action; +} + +CompOption::Value::operator CompAction * () +{ + return &priv->action; +} + +CompOption::Value::operator Type () +{ + return priv->listType; +} + +CompOption::Value::operator Vector & () +{ + return priv->list; +} + bool CompOption::Value::operator== (const CompOption::Value &val) { -- 1.6.0.6
_______________________________________________ Dev mailing list [email protected] http://lists.compiz-fusion.org/mailman/listinfo/dev
