void tc_print_tuple(struct tnt_tuple *tu) { struct tnt_iter ifl; tnt_iter(&ifl, tu); printf("["); while (tnt_next(&ifl)) { if (TNT_IFIELD_IDX(&ifl) != 0) printf(", "); char *data = TNT_IFIELD_DATA(&ifl); uint32_t size = TNT_IFIELD_SIZE(&ifl); if (!isprint(data[0]) && (size == 4 || size == 8)) { if (size == 4) { uint32_t i = *((uint32_t*)data); printf("%"PRIu32, i); } else { uint64_t i = *((uint64_t*)data); printf("%"PRIu64, i); } } else { printf("'%-.*s'", size, data); } } if (ifl.status == TNT_ITER_FAIL) printf("<parsing error>"); printf("]\n"); tnt_iter_free(&ifl); }
void print_tuple(struct tnt_tuple *tuple) { bool is_first = true; printf("("); struct tnt_iter ifl; tnt_iter(&ifl, tuple); while (tnt_next(&ifl)) { char *data = TNT_IFIELD_DATA(&ifl); uint32_t size = TNT_IFIELD_SIZE(&ifl); if (!is_first) { printf(", "); } is_first = false; switch(size) { case 1: printf("%"PRIi8" (0x%02"PRIx8")", *(int8_t *)data, *(int8_t *)data); break; case 2: printf("%"PRIi16" (0x%04"PRIx16")", *(int16_t *)data, *(int16_t *)data); break; case 4: printf("%"PRIi32" (0x%08"PRIx32")", *(int32_t *)data, *(int32_t *)data); break; case 8: printf("%"PRIi64" (0x%016"PRIx64")", *(int64_t *)data, *(int64_t *)data); break; default: printf("'%.*s'", size, data); break; } } fail_if(ifl.status == TNT_ITER_FAIL); tnt_iter_free(&ifl); printf(")\n"); }