Amalgamated t-test.h and oneway.h into a single group_proc.h file
[pspp-builds.git] / src / group.c
1 /* PSPP - computes sample statistics.
2    Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
3    Written by John Darrington <john@darrington.wattle.id.au>
4
5    This program is free software; you can redistribute it and/or
6    modify it under the terms of the GNU General Public License as
7    published by the Free Software Foundation; either version 2 of the
8    License, or (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful, but
11    WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18    02111-1307, USA. */
19
20 #include "hash.h"
21 #include "group.h"
22 #include <string.h>
23
24
25 /* Return -1 if the id of a is less than b; +1 if greater than and 
26    0 if equal */
27 int 
28 compare_group(const struct group_statistics *a, 
29                  const struct group_statistics *b, 
30                  int width)
31 {
32   int id_cmp = compare_values(&a->id, &b->id, width);
33
34   if (id_cmp == 0 ) 
35     {
36       int c;
37       c= memcmp(&a->criterion,&b->criterion,sizeof(enum comparison));
38       return c;
39     }
40   else
41     return id_cmp;
42 }
43
44
45 unsigned 
46 hash_group(const struct group_statistics *g, int width)
47 {
48   unsigned id_hash;
49
50   if ( 0 == width ) 
51     id_hash = hsh_hash_double (g->id.f);
52   else
53     id_hash = hsh_hash_bytes (g->id.s, width);
54
55   return id_hash;
56 }
57
58
59 void  
60 free_group(struct group_statistics *v, void *aux)
61 {
62   free(v);
63 }