X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fcase.c;fp=src%2Fdata%2Fcase.c;h=d36f66a6ae46385a44ab5a2a9024678a0bf6f674;hb=06a010087d0a5ad4d8a95a2ad5172d5046aa7bb4;hp=9d459ac078d4cddc81e22b9132808e2a23965227;hpb=9fec5bb8185313eda6234ce052342ffac776908e;p=pspp diff --git a/src/data/case.c b/src/data/case.c index 9d459ac078..d36f66a6ae 100644 --- a/src/data/case.c +++ b/src/data/case.c @@ -454,8 +454,29 @@ case_save (const struct ccase *c, struct pxd *pxd) return pxd_builder_commit (&b); } -struct ccase *case_load (struct pxd_object *, const struct pxd *); +struct ccase * +case_load (struct pxd_object *object, const struct pxd *pxd) +{ + struct caseproto *proto; + struct pxd_parser p; + struct ccase *c; + size_t i; + + pxd_parser_init (&p, object, pxd); + + proto = caseproto_load (pxd_parser_get_link (&p), pxd); + c = case_create (proto); + for (i = 0; i < caseproto_get_n_widths (proto); i++) + pxd_parser_get_value (&p, case_data_rw_idx (c, i), + caseproto_get_width (proto, i)); + + caseproto_unref (proto); + + pxd_parser_destroy (&p); + + return c; +} /* Internal helper function for case_unshare. */ struct ccase *