#include // bool #include // fprintf() #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", num_floats, set->shape.num_ints); // print rows for (size_t i = 0; i < set->num_rows; i++) { if (num_floats > 0) { const float * const vals = km_set_get_row(set, i); // print floats for (size_t j = 0; j < num_floats; j++) { fprintf(fh, "%s%f", (j > 0) ? " ": "", vals[j]); } } // print ints if (set->shape.num_ints > 0) { 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 = (num_floats > 0) || (j > 0); fprintf(fh, "%s%d", need_space ? " ": "", vals[j]); } } // end row fprintf(fh, "\n"); } // return success return true; }