lib
variant.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "variant.h"
00021 #include "list.h"
00022
00023 #include <klocale.h>
00024
00025 using namespace Kross::Api;
00026
00027 Variant::Variant(const QVariant& value)
00028 : Value<Variant, QVariant>(value)
00029 {
00030 }
00031
00032 Variant::~Variant()
00033 {
00034 }
00035
00036 const QString Variant::getClassName() const
00037 {
00038 return "Kross::Api::Variant";
00039 }
00040
00041 const QString Variant::toString()
00042 {
00043 return getValue().toString();
00044 }
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 const QVariant& Variant::toVariant(Object::Ptr object)
00076 {
00077 return Object::fromObject<Variant>( object.data() )->getValue();
00078 }
00079
00080 const QString Variant::toString(Object::Ptr object)
00081 {
00082 const QVariant& variant = toVariant(object);
00083 if(! variant.canCast(QVariant::String))
00084 throw Exception::Ptr( new Exception(i18n("Kross::Api::Variant::String expected, but got %1.").arg(variant.typeName()).latin1()) );
00085 return variant.toString();
00086 }
00087
00088 int Variant::toInt(Object::Ptr object)
00089 {
00090 const QVariant& variant = toVariant(object);
00091 if(! variant.canCast(QVariant::Int))
00092 throw Exception::Ptr( new Exception(i18n("Kross::Api::Variant::Int expected, but got %1.").arg(variant.typeName()).latin1()) );
00093 return variant.toInt();
00094 }
00095
00096 uint Variant::toUInt(Object::Ptr object)
00097 {
00098 const QVariant& variant = toVariant(object);
00099 if(! variant.canCast(QVariant::UInt))
00100 throw Exception::Ptr( new Exception(i18n("Kross::Api::Variant::UInt expected, but got %1.").arg(variant.typeName()).latin1()) );
00101 return variant.toUInt();
00102 }
00103
00104 double Variant::toDouble(Object::Ptr object)
00105 {
00106 const QVariant& variant = toVariant(object);
00107 if(! variant.canCast(QVariant::Double))
00108 throw Exception::Ptr( new Exception(i18n("Kross::Api::Variant::Double expected, but got %1.").arg(variant.typeName()).latin1()) );
00109 return variant.toDouble();
00110 }
00111
00112 Q_LLONG Variant::toLLONG(Object::Ptr object)
00113 {
00114 const QVariant& variant = toVariant(object);
00115 if(! variant.canCast(QVariant::LongLong))
00116 throw Exception::Ptr( new Exception(i18n("Kross::Api::Variant::LLONG expected, but got %1.").arg(variant.typeName()).latin1()) );
00117 return variant.toLongLong();
00118 }
00119
00120 Q_ULLONG Variant::toULLONG(Object::Ptr object)
00121 {
00122 const QVariant& variant = toVariant(object);
00123 if(! variant.canCast(QVariant::ULongLong))
00124 throw Exception::Ptr( new Exception(i18n("Kross::Api::Variant::ULLONG expected, but got %1.").arg(variant.typeName()).latin1()) );
00125 return variant.toULongLong();
00126 }
00127
00128 bool Variant::toBool(Object::Ptr object)
00129 {
00130 const QVariant& variant = toVariant(object);
00131 if(! variant.canCast(QVariant::Bool))
00132 throw Exception::Ptr( new Exception(i18n("Kross::Api::Variant::Bool expected, but got %1.").arg(variant.typeName()).latin1()) );
00133 return variant.toBool();
00134 }
00135
00136 QStringList Variant::toStringList(Object::Ptr object)
00137 {
00138 List* list = dynamic_cast< List* >( object.data() );
00139 if(list) {
00140 QStringList l;
00141 QValueList<Object::Ptr> valuelist = list->getValue();
00142 QValueList<Object::Ptr>::Iterator it(valuelist.begin()), end(valuelist.end());
00143 for(; it != end; ++it)
00144 l.append( toString(*it) );
00145 return l;
00146 }
00147 const QVariant& variant = toVariant(object);
00148 if(! variant.canCast(QVariant::StringList))
00149 throw Exception::Ptr( new Exception(QString("Kross::Api::Variant::StringList expected, but got '%1'.").arg(variant.typeName()).latin1()) );
00150 return variant.toStringList();
00151 }
00152
00153 QValueList<QVariant> Variant::toList(Object::Ptr object)
00154 {
00155 List* list = dynamic_cast< List* >( object.data() );
00156 if(list) {
00157 QValueList<QVariant> l;
00158 QValueList<Object::Ptr> valuelist = list->getValue();
00159 QValueList<Object::Ptr>::Iterator it(valuelist.begin()), end(valuelist.end());
00160 for(; it != end; ++it)
00161 l.append( toVariant(*it) );
00162 return l;
00163 }
00164 const QVariant& variant = toVariant(object);
00165 if(! variant.canCast(QVariant::List))
00166 throw Exception::Ptr( new Exception(i18n("Kross::Api::Variant::List expected, but got '%1'.").arg(variant.typeName()).latin1()) );
00167 return variant.toList();
00168 }
|