X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fpage-setup-item.c;h=7be1c2c43b66eeb36ec018f3aea12ff8938b588b;hb=ab6a6170a426bbae24d65f7aedaa0c38913ca44c;hp=c9cecb0daac315ee6d9948b294ff8b6a5501d25f;hpb=a1b7813a6993b8a8822914a83982a52e98c2afe5;p=pspp diff --git a/src/output/page-setup-item.c b/src/output/page-setup-item.c index c9cecb0daa..7be1c2c43b 100644 --- a/src/output/page-setup-item.c +++ b/src/output/page-setup-item.c @@ -25,6 +25,15 @@ #include "gl/xalloc.h" +bool +page_paragraph_equals (const struct page_paragraph *a, + const struct page_paragraph *b) +{ + return (!a || !b ? a == b + : !a->markup || !b->markup ? a->markup == b->markup + : !strcmp (a->markup, b->markup) && a->halign == b->halign); +} + void page_heading_copy (struct page_heading *dst, const struct page_heading *src) { @@ -48,6 +57,23 @@ page_heading_uninit (struct page_heading *ph) free (ph->paragraphs); } +bool +page_heading_equals (const struct page_heading *a, + const struct page_heading *b) +{ + if (!a || !b) + return a == b; + + if (a->n != b->n) + return false; + + for (size_t i = 0; i < a->n; i++) + if (!page_paragraph_equals (&a->paragraphs[i], &b->paragraphs[i])) + return false; + + return true; +} + struct page_setup * page_setup_clone (const struct page_setup *old) { @@ -76,8 +102,10 @@ struct page_setup_item * page_setup_item_create (const struct page_setup *ps) { struct page_setup_item *item = xmalloc (sizeof *item); - output_item_init (&item->output_item, &page_setup_item_class); - item->page_setup = page_setup_clone (ps); + *item = (struct page_setup_item) { + .output_item = OUTPUT_ITEM_INITIALIZER (&page_setup_item_class), + .page_setup = page_setup_clone (ps), + }; return item; } @@ -89,6 +117,13 @@ page_setup_item_submit (struct page_setup_item *item) output_submit (&item->output_item); } +static const char * +page_setup_item_get_label (const struct output_item *output_item UNUSED) +{ + /* Not marked for translation: user should never see it. */ + return "Page Setup"; +} + static void page_setup_item_destroy (struct output_item *output_item) { @@ -99,5 +134,6 @@ page_setup_item_destroy (struct output_item *output_item) const struct output_item_class page_setup_item_class = { + page_setup_item_get_label, page_setup_item_destroy, };