1 
2 #include "cs_config.h"
3 #include <unistd.h>
4 #include <string.h>
5 #include "util/neo_misc.h"
6 #include "util/neo_hdf.h"
7 #include "util/neo_rand.h"
8 
TestCompare(const void * pa,const void * pb)9 int TestCompare(const void* pa, const void* pb)
10 {
11   HDF **a = (HDF **)pa;
12   HDF **b = (HDF **)pb;
13   float aVal,bVal;
14 
15   aVal = atof(hdf_get_value(*a,"val","0"));
16   bVal = atof(hdf_get_value(*b,"val","0"));
17 
18   printf("TestCompare aVal=%f [%s]  bVal=%f [%s]\n",aVal,hdf_get_value(*a,"name","?"),bVal,hdf_get_value(*b,"name","?"));
19 
20   if (aVal<bVal) return -1;
21   if (aVal==bVal) return 0;
22   return 1;
23 }
24 
TestSort(HDF * hdf)25 void TestSort(HDF* hdf)
26 {
27   int i;
28   float value;
29 
30   for (i=0;i<15;i++)
31   {
32     value = rand()/(RAND_MAX+1.0);
33 
34     hdf_set_valuef(hdf, "test.%d", "%d", i, i);
35     hdf_set_valuef(hdf, "test.%d.name", "item #%d", i, i);
36     hdf_set_valuef(hdf, "test.%d.val", "%f", i, value );
37   }
38 
39   hdf_dump(hdf,NULL);
40 
41   hdf_sort_obj(hdf_get_obj(hdf, "test"), TestCompare);
42 
43   hdf_dump(hdf,NULL);
44 
45 }
46 
47 
main(int argc,char * argv[])48 int main(int argc, char *argv[])
49 {
50   NEOERR *err;
51   HDF *hdf;
52   double tstart = 0;
53 
54   err = hdf_init(&hdf);
55   if (err != STATUS_OK)
56   {
57     nerr_log_error(err);
58     return -1;
59   }
60 
61   tstart = ne_timef();
62   TestSort(hdf);
63   ne_warn("sort took %5.5fs", ne_timef() - tstart);
64 
65   hdf_dump(hdf, NULL);
66 
67   hdf_destroy(&hdf);
68 
69   return 0;
70 }
71