diff options
Diffstat (limited to 'src/km-set-print.c')
| -rw-r--r-- | src/km-set-print.c | 33 | 
1 files changed, 29 insertions, 4 deletions
| diff --git a/src/km-set-print.c b/src/km-set-print.c index aa93f96..de394b5 100644 --- a/src/km-set-print.c +++ b/src/km-set-print.c @@ -3,21 +3,46 @@  #include "util.h"  #include "km.h" +static bool +km_set_print_bounds( +  const float * const bounds, +  const size_t num_floats, +  FILE * const fh +) { +  if (bounds) { +    fprintf(fh, "2 0\n"); +    for (size_t i = 0; i < num_floats; i++) { +      fprintf(fh, "%f %f\n", bounds[i], bounds[num_floats + i]); +    } +  } + +  // return success +  return true; +} +  bool  km_set_print(    const km_set_t * const set, +  const float * const bounds,    FILE * const fh  ) { +  const size_t num_floats = set->shape.num_floats; + +  if (!km_set_print_bounds(bounds, num_floats, fh)) { +    // return failure +    return false; +  } +    // print shape -  fprintf(fh, "%zu %zu\n", set->shape.num_floats, set->shape.num_ints); +  fprintf(fh, "%zu %zu\n", num_floats, set->shape.num_ints);    // print rows    for (size_t i = 0; i < set->num_rows; i++) { -    if (set->shape.num_floats > 0) { +    if (num_floats > 0) {        const float * const vals = km_set_get_row(set, i);        // print floats -      for (size_t j = 0; j < set->shape.num_floats; j++) { +      for (size_t j = 0; j < num_floats; j++) {          fprintf(fh, "%s%f", (j > 0) ? " ": "", vals[j]);        }      } @@ -27,7 +52,7 @@ km_set_print(        const int * const vals = km_set_get_row_ints(set, i);        for (size_t j = 0; j < set->shape.num_ints; j++) { -        const bool need_space = (set->shape.num_floats > 0) || (j > 0); +        const bool need_space = (num_floats > 0) || (j > 0);          fprintf(fh, "%s%d",  need_space ? " ": "", vals[j]);        }      } | 
