#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;
}