Example #1
0
END_TEST

START_TEST(test_dynamic_type)
{
    qeocore_type_t *structure = NULL, *sequence = NULL, *string = NULL, *primitive = NULL;
    qeocore_member_id_t id;

    /* init */
    stub_init();
    /* test */
    fail_unless(NULL != (structure = qeocore_type_struct_new("a_dynamic_struct")));
    fail_unless(NULL != (string = qeocore_type_string_new(0)));
    fail_unless(NULL != (primitive = qeocore_type_primitive_new(QEOCORE_TYPECODE_INT32)));
    fail_unless(NULL != (sequence = qeocore_type_sequence_new(primitive)));
    qeocore_type_free(primitive);
    id = QEOCORE_MEMBER_ID_DEFAULT;
    fail_unless(QEO_OK == qeocore_type_struct_add(structure, string, "a_string", &id, QEOCORE_FLAG_KEY));
    qeocore_type_free(string);
    id = QEOCORE_MEMBER_ID_DEFAULT;
    fail_unless(QEO_OK == qeocore_type_struct_add(structure, sequence, "a_sequence", &id, QEOCORE_FLAG_NONE));
    qeocore_type_free(sequence);
    /* clean up */
    qeocore_type_free(structure);
    stub_fini();
}
Example #2
0
static qeocore_type_t *type_unnest_register(qeo_factory_t *factory)
{
    qeocore_type_t *outer = NULL;
    qeocore_type_t *member = NULL;
    // the outer struct
    assert(NULL != (outer = qeocore_type_struct_new("org.qeo.test.NestedTests")));
    assert(NULL != (member = qeocore_type_primitive_new(QEOCORE_TYPECODE_INT32)));
    assert(QEO_OK == qeocore_type_struct_add(outer, member, "outer_int32", &_outer_int32_id, QEOCORE_FLAG_KEY));
    qeocore_type_free(member);
    assert(NULL != (member = qeocore_type_primitive_new(QEOCORE_TYPECODE_INT8)));
    assert(QEO_OK == qeocore_type_struct_add(outer, member, "outer_int8", &_outer_int8_id, QEOCORE_FLAG_NONE));
    qeocore_type_free(member);
    assert(NULL != (member = qeocore_type_string_new(0)));
    assert(QEO_OK == qeocore_type_struct_add(outer, member, "outer_string", &_outer_string_id, QEOCORE_FLAG_NONE));
    qeocore_type_free(member);
    assert(NULL != (member = qeocore_type_primitive_new(QEOCORE_TYPECODE_INT16)));
    assert(QEO_OK == qeocore_type_struct_add(outer, member, "outer_int16", &_outer_int16_id, QEOCORE_FLAG_NONE));
    qeocore_type_free(member);
    assert(NULL != (member = qeocore_type_primitive_new(QEOCORE_TYPECODE_INT64)));
    assert(QEO_OK == qeocore_type_struct_add(outer, member, "outer_int64", &_outer_int64_id, QEOCORE_FLAG_NONE));
    qeocore_type_free(member);

    assert(QEO_OK == qeocore_type_register(factory, outer, "org.qeo.test.QDMTestDynType"));
    return outer;
}
Example #3
0
static qeocore_type_t *type_register(qeo_factory_t *factory)
{
    qeocore_type_t *bigdata = NULL;
    qeocore_type_t *primitive = NULL;
    qeocore_type_t *sequence = NULL;

    assert(NULL != (bigdata = qeocore_type_struct_new("org.qeo.test.bigdata")));
    assert(NULL != (primitive = qeocore_type_primitive_new(QEOCORE_TYPECODE_INT32)));
    assert(QEO_OK == qeocore_type_struct_add(bigdata, primitive, "size", &_size_id, QEOCORE_FLAG_KEY));
    qeocore_type_free(primitive);
    assert(NULL != (primitive = qeocore_type_primitive_new(QEOCORE_TYPECODE_INT8)));
    assert(NULL != (sequence = qeocore_type_sequence_new(primitive)));
    assert(QEO_OK == qeocore_type_struct_add(bigdata, sequence, "buf", &_buf_id, QEOCORE_FLAG_NONE));
    qeocore_type_free(sequence);
    qeocore_type_free(primitive);
    assert(QEO_OK == qeocore_type_register(factory, bigdata, "org.qeo.test.bigdata"));
    return bigdata;
}
Example #4
0
static qeo_retcode_t object_add_member(const qeo_factory_t *factory, qeocore_type_t *type, const char *member_name, json_t *member)
{
    qeo_retcode_t       result        = QEO_EFAIL;
    qeocore_type_t      *qeoType      = NULL;
    qeocore_member_id_t qeo_member_id = QEOCORE_MEMBER_ID_DEFAULT;
    json_t              *member_key   = json_object_get(member, KEY_KEY); // optional  => BOOLEAN
    json_t              *member_id    = json_object_get(member, KEY_ID);  // optional  => INTxx

    assert(factory != NULL);

    if (((NULL != member_key) && !json_is_boolean(member_key)) ||
        ((NULL != member_id) && !json_is_integer(member_id)) ||
        (NULL == member_name)) {
        // syntax error
        return QEO_EINVAL;
    }

    qeo_log_d("Processing %s", member_name);
    qeoType = build_member_type(factory, member);
    if (NULL == qeoType) {
        qeo_log_e("Could not build member_type");
        return result;
    }

    bool is_key = (member_key && json_is_true(member_key));
    do {
        result = qeocore_type_struct_add(type,                            // container
                qeoType,                         // new member to add
                member_name,                     // name of member
                &qeo_member_id,                  // member id
                is_key ? QEOCORE_FLAG_KEY : 0);  // flag
        if (QEO_OK != result) {
            qeo_log_e("qeocore_type_struct_add failed for member %s", member_name);
            break;
        }

        qeocore_type_free(qeoType);

        // Modify the json member to add/update the qeo member id
        json_object_set_new(member, KEY_ID, json_integer(qeo_member_id));
    } while (0);


    return result;
}