| |
| #include "cs_config.h" |
| #include <unistd.h> |
| #include <string.h> |
| #include "util/neo_misc.h" |
| #include "util/neo_hdf.h" |
| #include "util/neo_rand.h" |
| |
| int TestCompare(const void* pa, const void* pb) |
| { |
| HDF **a = (HDF **)pa; |
| HDF **b = (HDF **)pb; |
| float aVal,bVal; |
| |
| aVal = atof(hdf_get_value(*a,"val","0")); |
| bVal = atof(hdf_get_value(*b,"val","0")); |
| |
| printf("TestCompare aVal=%f [%s] bVal=%f [%s]\n",aVal,hdf_get_value(*a,"name","?"),bVal,hdf_get_value(*b,"name","?")); |
| |
| if (aVal<bVal) return -1; |
| if (aVal==bVal) return 0; |
| return 1; |
| } |
| |
| void TestSort(HDF* hdf) |
| { |
| int i; |
| float value; |
| |
| for (i=0;i<15;i++) |
| { |
| value = rand()/(RAND_MAX+1.0); |
| |
| hdf_set_valuef(hdf, "test.%d", "%d", i, i); |
| hdf_set_valuef(hdf, "test.%d.name", "item #%d", i, i); |
| hdf_set_valuef(hdf, "test.%d.val", "%f", i, value ); |
| } |
| |
| hdf_dump(hdf,NULL); |
| |
| hdf_sort_obj(hdf_get_obj(hdf, "test"), TestCompare); |
| |
| hdf_dump(hdf,NULL); |
| |
| } |
| |
| |
| int main(int argc, char *argv[]) |
| { |
| NEOERR *err; |
| HDF *hdf; |
| double tstart = 0; |
| |
| err = hdf_init(&hdf); |
| if (err != STATUS_OK) |
| { |
| nerr_log_error(err); |
| return -1; |
| } |
| |
| tstart = ne_timef(); |
| TestSort(hdf); |
| ne_warn("sort took %5.5fs", ne_timef() - tstart); |
| |
| hdf_dump(hdf, NULL); |
| |
| hdf_destroy(&hdf); |
| |
| return 0; |
| } |