decode_spvlb_color_string (const char *s, uint8_t def,
struct cell_color *colorp)
{
- int r, g, b;
+ unsigned int r, g, b;
if (!*s)
r = g = b = def;
else if (sscanf (s, "#%2x%2x%2x", &r, &g, &b) != 3)
{
*outp = NULL;
- struct pivot_value *out = xzalloc (sizeof *out);
+ struct pivot_value *out = XZALLOC (struct pivot_value);
const struct spvlb_value_mod *vm;
char *error;
{
if (vm->n_subscripts)
{
- out->n_subscripts = vm->n_subscripts;
- out->subscripts = xnmalloc (vm->n_subscripts,
- sizeof *out->subscripts);
+ struct pivot_value_ex *ex = pivot_value_ex_rw (out);
+ ex->n_subscripts = vm->n_subscripts;
+ ex->subscripts = xnmalloc (vm->n_subscripts, sizeof *ex->subscripts);
for (size_t i = 0; i < vm->n_subscripts; i++)
- out->subscripts[i] = to_utf8 (vm->subscripts[i], encoding);
+ ex->subscripts[i] = to_utf8 (vm->subscripts[i], encoding);
}
if (vm->n_refs)
{
- out->footnote_indexes = xnmalloc (vm->n_refs,
- sizeof *out->footnote_indexes);
+ struct pivot_value_ex *ex = pivot_value_ex_rw (out);
+ ex->footnote_indexes = xnmalloc (vm->n_refs,
+ sizeof *ex->footnote_indexes);
+
for (size_t i = 0; i < vm->n_refs; i++)
{
uint16_t idx = vm->refs[i];
idx, table->n_footnotes);
}
- out->footnote_indexes[out->n_footnotes++] = idx;
+ ex->footnote_indexes[ex->n_footnotes++] = idx;
}
pivot_value_sort_footnotes (out);
}
if (vm->style_pair)
{
+ struct pivot_value_ex *ex = pivot_value_ex_rw (out);
error = decode_spvlb_font_style (vm->style_pair->font_style,
- encoding, &out->font_style);
+ encoding, &ex->font_style);
if (!error)
error = decode_spvlb_cell_style (vm->style_pair->cell_style,
- &out->cell_style);
+ &ex->cell_style);
if (error)
{
pivot_value_destroy (out);
if (error)
return error;
- struct pivot_category *out = xzalloc (sizeof *out);
+ struct pivot_category *out = XZALLOC (struct pivot_category);
out->name = name;
out->parent = parent;
out->dimension = dimension;
if (error)
return error;
- struct pivot_dimension *out = xzalloc (sizeof *out);
+ struct pivot_dimension *out = XZALLOC (struct pivot_dimension);
out->level = UINT_MAX;
out->top_index = idx;
out->hide_all_labels = in->props->hide_all_labels;
table->current_layer = xnmalloc (axis->n_dimensions,
sizeof *table->current_layer);
+ uint64_t remainder = current_layer;
for (size_t i = 0; i < axis->n_dimensions; i++)
{
const struct pivot_dimension *d = axis->dimensions[i];
if (d->n_leaves)
{
- table->current_layer[i] = current_layer % d->n_leaves;
- current_layer /= d->n_leaves;
+ table->current_layer[i] = remainder % d->n_leaves;
+ remainder /= d->n_leaves;
}
else
table->current_layer[i] = 0;
}
- if (current_layer > 0)
+ if (remainder > 0)
return xasprintf ("out of range layer data index %"PRIu64, current_layer);
+
return NULL;
}
in->header->version);
char *error = NULL;
- struct pivot_table *out = xzalloc (sizeof *out);
+ struct pivot_table *out = XZALLOC (struct pivot_table);
out->ref_cnt = 1;
hmap_init (&out->cells);
out->look = pivot_table_look_new_builtin_default ();
if (epoch >= 1000 && epoch <= 9999)
out->settings.epoch = epoch;
char decimal = in->formats->y0->decimal;
- if (decimal == '.' || decimal == '.')
+ if (decimal == '.' || decimal == ',')
out->settings.decimal = decimal;
else
{