void fromValue(ValuePtr value, int* type, double* scalar, ValueRangePtr** ranges, int* rangeLen, StdStringPtr** strings, int* stringsLen, char** text, int* textLen) { Value_Type t = value->type(); *type = (int) t; if (t == Value_Type_SCALAR) { *scalar = value->mutable_scalar()->value(); } else if (t == Value_Type_RANGES) { *rangeLen = value->mutable_ranges()->range_size(); *ranges = value->mutable_ranges()->mutable_range()->mutable_data(); } else if (t == Value_Type_SET) { *stringsLen = value->set().item_size(); *strings = value->mutable_set()->mutable_item()->mutable_data(); } else if (t == Value_Type_TEXT) { std::string* txt = value->mutable_text()->mutable_value(); *text = (char*) txt->data(); *textLen = txt->size(); } }