Exemple #1
0
int main() {
    BaseA ba;
    BaseB bb;
    DerivA da;
    DerivB db;

    Any any;
    assert(!any.isSet());

    any.set(ba);
    assert(any.isSet());
    assert(any.get<BaseA>() == &ba);
    assert(any.get<BaseB>() == NULL);
    assert(any.get<DerivA>() == NULL);
    assert(any.get<DerivB>() == NULL);

    any.clear();
    assert(!any.isSet());
    assert(any.get<BaseA>() == NULL);
    assert(any.get<BaseB>() == NULL);
    assert(any.get<DerivA>() == NULL);
    assert(any.get<DerivB>() == NULL);

    any = bb;
    assert(any.isSet());
    assert(any.get<BaseA>() == NULL);
    assert(any.get<BaseB>() == &bb);
    assert(any.get<DerivA>() == NULL);
    assert(any.get<DerivB>() == NULL);

    any = da;
    assert(any.isSet());
    assert(any.get<BaseA>() == NULL);
    assert(any.get<BaseB>() == NULL);
    assert(any.get<DerivA>() == &da);
    assert(any.get<DerivB>() == NULL);

    any = db;
    assert(any.isSet());
    assert(any.get<BaseA>() == NULL);
    assert(any.get<BaseB>() == NULL);
    assert(any.get<DerivA>() == NULL);
    assert(any.get<DerivB>() == &db);

    Any any2 = any;
    assert(any.isSet());
    assert(any.get<BaseA>() == NULL);
    assert(any.get<BaseB>() == NULL);
    assert(any.get<DerivA>() == NULL);
    assert(any.get<DerivB>() == &db);

    Any any3(any2);
    assert(any.isSet());
    assert(any.get<BaseA>() == NULL);
    assert(any.get<BaseB>() == NULL);
    assert(any.get<DerivA>() == NULL);
    assert(any.get<DerivB>() == &db);

    return 0;
}
Exemple #2
0
Any VisibleEntity::toAny() const {
    Any a = Entity::toAny();
    a.setName("VisibleEntity");
    a.set("visible", m_visible);

    // Model and pose must already have been set, so no need to change anything
    return a;
}
Exemple #3
0
Any VisibleEntity::toAny(const bool forceAll) const {
    Any a = Entity::toAny(forceAll);
    a.setName("VisibleEntity");

    AnyTableReader oldValues(a);
    bool visible;
    if (forceAll || (oldValues.getIfPresent("visible", visible) && visible != m_visible)) {
        a.set("visible", m_visible);
    }

    // Model and pose must already have been set, so no need to change anything
    return a;
}
Exemple #4
0
static void testRefCount2() {

    // Explicit allocation so that we can control destruction
    Any* a = new Any(Any::TABLE);

    // Put something complex the table, so that we have chains of dependencies
    a->set("x", Any(Any::TABLE));

    Any* b = new Any();
    // Create alias
    *b = *a;

    // a->m_data->referenceCount.m_value should now be 2
    
    delete b;
    b = NULL;

    // Reference count should now be 1

    delete a;
    a = NULL;

    // Reference count should now be zero (and the object deallocated)
}