From 231ebe7e6d5c8c8eba47560793b5fa53c013b87f Mon Sep 17 00:00:00 2001 From: John Darrington Date: Tue, 21 Jul 2009 15:43:08 +0200 Subject: [PATCH] Add perl functions to get the format of a variable --- perl-module/PSPP.xs | 31 +++++++++++++++++++++++++++++++ perl-module/lib/PSPP.pm | 10 ++++++++++ 2 files changed, 41 insertions(+) diff --git a/perl-module/PSPP.xs b/perl-module/PSPP.xs index b3ac4cdc..36300cc8 100644 --- a/perl-module/PSPP.xs +++ b/perl-module/PSPP.xs @@ -373,6 +373,37 @@ clear_value_labels (var) CODE: var_clear_value_labels (var); +SV * +get_write_format (var) + struct variable *var +CODE: + HV *fmthash = (HV *) sv_2mortal ((SV *) newHV()); + const struct fmt_spec *fmt = var_get_write_format (var); + + hv_store (fmthash, "fmt", 3, newSVnv (fmt->type), 0); + hv_store (fmthash, "decimals", 8, newSVnv (fmt->d), 0); + hv_store (fmthash, "width", 5, newSVnv (fmt->w), 0); + + RETVAL = newRV ((SV *) fmthash); + OUTPUT: +RETVAL + +SV * +get_print_format (var) + struct variable *var +CODE: + HV *fmthash = (HV *) sv_2mortal ((SV *) newHV()); + const struct fmt_spec *fmt = var_get_print_format (var); + + hv_store (fmthash, "fmt", 3, newSVnv (fmt->type), 0); + hv_store (fmthash, "decimals", 8, newSVnv (fmt->d), 0); + hv_store (fmthash, "width", 5, newSVnv (fmt->w), 0); + + RETVAL = newRV ((SV *) fmthash); + OUTPUT: +RETVAL + + void pxs_set_write_format (var, fmt) struct variable *var diff --git a/perl-module/lib/PSPP.pm b/perl-module/lib/PSPP.pm index b84c311e..e5599908 100644 --- a/perl-module/lib/PSPP.pm +++ b/perl-module/lib/PSPP.pm @@ -282,6 +282,16 @@ sub set_print_format =pod + +=head3 get_write_format () + +Returns a reference to a hash containing the write format for the variable. + + +=head3 get_print_format () + +Returns a reference to a hash containing the print format for the variable. + =head3 set_output_format (%fmt) Sets the write and print formats to C. This is the same as -- 2.30.2