Neo4j-Client
view release on metacpan or search on metacpan
build/lib/src/render_results.c view on Meta::CPAN
return 0;
}
for (unsigned int i = 0; i < nfields; ++i)
{
const char *s = neo4j_fieldname(results, i);
size_t l = (s == NULL)? 0 : strlen(s);
if (l > UINT_MAX-3)
{
l = UINT_MAX-3;
}
l += 3;
if (widths[i] < l)
{
widths[i] = l;
}
}
for (unsigned int depth = 0; depth < config->render_inspect_rows - 1;
++depth)
{
neo4j_result_t *result = neo4j_peek(results, depth);
if (result == NULL)
{
break;
}
for (unsigned int i = 0; i < nfields; ++i)
{
neo4j_value_t value = neo4j_result_field(result, i);
size_t l = 0;
if (neo4j_type(value) == NEO4J_STRING &&
!(config->render_flags & NEO4J_RENDER_QUOTE_STRINGS))
{
l = neo4j_string_length(value);
}
else
{
l = value_tostring(&value, NULL, 0, config->render_flags);
}
if (l > UINT_MAX-3)
{
l = UINT_MAX-3;
}
l += 3;
if (widths[i] < l)
{
widths[i] = l;
}
}
}
return 0;
}
ssize_t obtain_fieldname(void *data, unsigned int n, const char **s,
bool *duplicate)
{
struct obtain_fieldname_cb_data *cdata =
(struct obtain_fieldname_cb_data *)data;
*s = neo4j_fieldname(cdata->results, n);
*duplicate = false;
return (*s != NULL)? strlen(*s) : 0;
}
ssize_t obtain_result_field(void *data, unsigned int n, const char **s,
bool *duplicate)
{
struct obtain_result_field_cb_data *cdata =
(struct obtain_result_field_cb_data *)data;
neo4j_value_t value = neo4j_result_field(cdata->result, n);
if (neo4j_type(value) == NEO4J_STRING &&
!(cdata->flags & NEO4J_RENDER_QUOTE_STRINGS))
{
*s = neo4j_ustring_value(value);
*duplicate = false;
return neo4j_string_length(value);
}
*duplicate = true;
return render_field_value(value, s, cdata->buffer, cdata->bufcap,
cdata->flags);
}
ssize_t render_field_value(neo4j_value_t value, const char **s,
char **buf, size_t *bufcap, uint_fast32_t flags)
{
size_t length;
do
{
length = value_tostring(&value, *buf, *bufcap, flags);
if (length < *bufcap)
{
break;
}
size_t newcap = length + 80;
char *newbuf = realloc(*buf, newcap);
if (newbuf == NULL)
{
return -1;
}
*bufcap = newcap;
*buf = newbuf;
} while (true);
*s = *buf;
return length;
}
size_t value_tostring(neo4j_value_t *value, char *buf, size_t n,
uint_fast32_t flags)
{
if (!(flags & NEO4J_RENDER_SHOW_NULLS) && neo4j_is_null(*value))
{
if (n > 0)
{
assert(buf != NULL);
buf[0] = '\0';
}
return 0;
}
return neo4j_ntostring(*value, buf, n);
}
int neo4j_render_csv(FILE *stream, neo4j_result_stream_t *results,
uint_fast32_t flags)
{
neo4j_config_t *config = neo4j_new_config();
config->render_flags |= flags;
int err = neo4j_render_results_csv(config, stream, results);
neo4j_config_free(config);
return err;
}
// deprecated
int neo4j_render_ccsv(const neo4j_config_t *config, FILE *stream,
neo4j_result_stream_t *results)
( run in 0.551 second using v1.01-cache-2.11-cpan-7fcb06a456a )