예제 #1
0
파일: value.c 프로젝트: rfloresx/corto
corto_string corto_value_str(corto_value* v, corto_uint32 maxLength) {
    corto_string_ser_t serData;
    corto_walk_opt s;

    serData.buffer = CORTO_BUFFER_INIT;
    serData.buffer.max = maxLength;
    serData.compactNotation = TRUE;
    serData.prefixType = FALSE;
    serData.enableColors = FALSE;

    s = corto_string_ser(CORTO_LOCAL, CORTO_NOT, CORTO_WALK_TRACE_NEVER);
    corto_walk_value(&s, v, &serData);
    corto_string result = corto_buffer_str(&serData.buffer);
    corto_walk_deinit(&s, &serData);
    return result;
}
예제 #2
0
static corto_int16 corto_ser_any(corto_walk_opt* s, corto_value *info, void *userData) {
    corto_any *this = corto_value_ptrof(info);
    corto_compare_ser_t *data = userData, privateData;
    corto_any *value = (void*)((corto_word)corto_value_ptrof(&data->value) + ((corto_word)this - (corto_word)data->base));

    corto_value v = corto_value_value(this->value, this->type);
    privateData.value = corto_value_value(value->value, value->type);

    /* Set base of privateData. Because we're reusing the serializer, the
     * construct callback won't be called again */
    privateData.base = this->value;

    corto_walk_value(s, &v, &privateData);

    data->result = privateData.result;

    return data->result != CORTO_EQ;
}
예제 #3
0
파일: fmt.c 프로젝트: cortoproject/corto
static
void* corto_fmt_str_fromValue(
    corto_fmt_opt *opt,
    corto_value *v)
{
    corto_string_ser_t serData;
    corto_walk_opt s = corto_string_ser(
        CORTO_LOCAL|CORTO_READONLY|CORTO_PRIVATE, CORTO_NOT, CORTO_WALK_TRACE_NEVER);

    serData.buffer = UT_STRBUF_INIT;
    serData.buffer.max = 0;
    serData.compactNotation = TRUE;
    serData.prefixType = FALSE;
    serData.enableColors = FALSE;

    corto_walk_value(&s, v, &serData);
    corto_string result = ut_strbuf_get(&serData.buffer);
    corto_walk_deinit(&s, &serData);

    return result;
}