X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Ftable-paste.c;h=c1054d1369baf1e5c05915edd8221004206c8ec9;hb=000f6ce901178858530c3877d66976973b6a434c;hp=102b51404d3da130d29f3176404eb94317964e53;hpb=d0b91eae59319ab2756d0d43b9cb15eb9cd3c234;p=pspp diff --git a/src/output/table-paste.c b/src/output/table-paste.c index 102b51404d..c1054d1369 100644 --- a/src/output/table-paste.c +++ b/src/output/table-paste.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2011, 2014 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,9 +16,9 @@ #include -#include -#include -#include +#include "libpspp/assertion.h" +#include "libpspp/tower.h" +#include "output/table-provider.h" #include "gl/minmax.h" #include "gl/xalloc.h" @@ -47,14 +47,14 @@ static const struct table_class table_paste_class; static struct table_paste * table_paste_cast (const struct table *table) { - assert (table->class == &table_paste_class); + assert (table->klass == &table_paste_class); return UP_CAST (table, struct table_paste, table); } static bool is_table_paste (const struct table *table, int orientation) { - return (table->class == &table_paste_class + return (table->klass == &table_paste_class && table_paste_cast (table)->orientation == orientation); } @@ -148,18 +148,20 @@ table_paste (struct table *a, struct table *b, enum table_axis orientation) if (b == NULL) return a; + assert (a->n[!orientation] == b->n[!orientation]); + /* Handle tables that know how to paste themselves. */ if (!table_is_shared (a) && !table_is_shared (b) && a != b) { - if (a->class->paste != NULL) + if (a->klass->paste != NULL) { - struct table *new = a->class->paste (a, b, orientation); + struct table *new = a->klass->paste (a, b, orientation); if (new != NULL) return new; } - if (b->class->paste != NULL && a->class != b->class) + if (b->klass->paste != NULL && a->klass != b->klass) { - struct table *new = b->class->paste (a, b, orientation); + struct table *new = b->klass->paste (a, b, orientation); if (new != NULL) return new; } @@ -182,11 +184,11 @@ table_hpaste (struct table *left, struct table *right) return table_paste (left, right, TABLE_HORZ); } -/* Shorthand for table_paste (left, right, TABLE_VERT). */ +/* Shorthand for table_paste (top, bottom, TABLE_VERT). */ struct table * -table_vpaste (struct table *left, struct table *right) +table_vpaste (struct table *top, struct table *bottom) { - return table_paste (left, right, TABLE_VERT); + return table_paste (top, bottom, TABLE_VERT); } static void