Add perl functions to get the format of a variable
authorJohn Darrington <john@darrington.wattle.id.au>
Tue, 21 Jul 2009 13:43:08 +0000 (15:43 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Tue, 21 Jul 2009 13:43:08 +0000 (15:43 +0200)
perl-module/PSPP.xs
perl-module/lib/PSPP.pm

index b3ac4cdc31e84670194ede7d254315ab48deea23..36300cc806daa17d022c71d49473108f0834b5f2 100644 (file)
@@ -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
index b84c311e21db8526e595208884925b62515149b9..e5599908b683f7b6e6bde716fbfa9f74d3460338 100644 (file)
@@ -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<fmt>.  This is the same as