X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgroup.c;h=25459edaae91c6ffc6253f5aff13c8c3df4fd6bb;hb=92fb12eb06716d14c05b781f5d9dcde956d77c30;hp=fb86295ba34748adf423db756d43e251ac797a38;hpb=e976a0fa28771a625ba29b86cc5883838d0f1c70;p=pspp diff --git a/src/group.c b/src/group.c index fb86295ba3..25459edaae 100644 --- a/src/group.c +++ b/src/group.c @@ -14,12 +14,18 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ +#include +#include +#include "alloc.h" #include "hash.h" #include "group.h" -#include +#include "group_proc.h" +#include "str.h" +#include "var.h" +#include "misc.h" /* Return -1 if the id of a is less than b; +1 if greater than and @@ -29,35 +35,34 @@ compare_group(const struct group_statistics *a, const struct group_statistics *b, int width) { - int id_cmp = compare_values(&a->id, &b->id, width); - - if (id_cmp == 0 ) - { - int c; - c= memcmp(&a->criterion,&b->criterion,sizeof(enum comparison)); - return c; - } - else - return id_cmp; + return compare_values(&a->id, &b->id, width); } + unsigned hash_group(const struct group_statistics *g, int width) { unsigned id_hash; - if ( 0 == width ) - id_hash = hsh_hash_double (g->id.f); - else - id_hash = hsh_hash_bytes (g->id.s, width); + id_hash = hash_value(&g->id, width); return id_hash; } void -free_group(struct group_statistics *v, void *aux) +free_group(struct group_statistics *v, void *aux UNUSED) { free(v); } + + +struct group_proc * +group_proc_get (struct variable *v) +{ + /* This is not ideal, obviously. */ + if (v->aux == NULL) + var_attach_aux (v, xmalloc (sizeof (struct group_proc)), var_dtor_free); + return v->aux; +}