Exemple #1
0
void Variant::xmlWrite(QDomDocument& doc, QDomNode& node) const
{
  QDomElement elem = createEmptyElement(doc, typeName(type()));
  if (isBuiltIn())
    VariantBase::xmlWrite(doc, elem);
  else
    variantData()->xmlWrite(doc, elem);
}
Exemple #2
0
int main(int, char *[])
{
    Data data;
    data.setString("Hello World");
    data.setValue(42);

    QTemporaryFile file;
    if (!file.open()) {
        qDebug() << "Temp file opening failed.";
        return EXIT_FAILURE;
    }

    QDataStream stream(&file);
    // If a custom type is searilzed using QVariant,
    // serialization operators need to be provided
#ifdef USE_VARIANT
    qRegisterMetaTypeStreamOperators<Data>("Data");
    QVariant variantData(QVariant::fromValue(data));
    stream << variantData;
#else
    stream << data;
#endif

    file.reset();

    // Serialize from the file
    Data dataFromFile;
#ifdef USE_VARIANT
    QVariant variantFromFile;
    stream >> variantFromFile;
    dataFromFile.setString(variantFromFile.value<Data>().string());
    dataFromFile.setValue(variantFromFile.value<Data>().value());
#else
    stream >> dataFromFile;
#endif
    qDebug() << dataFromFile.string();
    qDebug() << dataFromFile.value();

    file.close();

    return EXIT_SUCCESS;
}
Exemple #3
0
Variant::operator QString() const
{
  if (is(nString))
    return *static_cast<const VString*>(variantData());
  return QString();
}
Exemple #4
0
Variant::operator double() const
{
  if (is(nLongReal))
    return *static_cast<const LongReal*>(variantData());
  return 0;
}
Exemple #5
0
Variant::operator cfloatnum() const
{
  if (is(nLongReal))
    return *static_cast<const LongReal*>(variantData());
  return LongReal::NaN();
}
Exemple #6
0
void Variant::teardown()
{
  if (!isBuiltIn())
    variantData()->release();
}
Exemple #7
0
VariantType Variant::type() const
{
  if (isBuiltIn())
    return VariantBase::type();
  return variantData()->type();
}