#include <gl/xalloc.h>
#include <data/dictionary.h>
#include <data/case.h>
+#include <data/casereader.h>
#include <data/variable.h>
+#include <data/attributes.h>
#include <data/file-handle-def.h>
#include <data/sys-file-writer.h>
#include <data/sys-file-reader.h>
RETVAL = ret;
OUTPUT:
RETVAL
-
+
int
value_is_missing (val, var)
XSRETURN_IV (1);
+SV *
+get_attributes (var)
+ struct variable *var
+CODE:
+ HV *attrhash = (HV *) sv_2mortal ((SV *) newHV());
+
+ struct attrset *as = var_get_attributes (var);
+
+ if ( as )
+ {
+ struct attrset_iterator iter;
+ struct attribute *attr;
+
+ for (attr = attrset_first (as, &iter);
+ attr;
+ attr = attrset_next (as, &iter))
+ {
+ int i;
+ const char *name = attribute_get_name (attr);
+
+ AV *values = newAV ();
+
+ for (i = 0 ; i < attribute_get_n_values (attr); ++i )
+ {
+ const char *value = attribute_get_value (attr, i);
+ av_push (values, newSVpv (value, 0));
+ }
+
+ hv_store (attrhash, name, strlen (name),
+ newRV_noinc ((SV*) values), 0);
+ }
+ }
+
+ RETVAL = newRV ((SV *) attrhash);
+ OUTPUT:
+RETVAL
+
const char *
get_name (var)
Sets the missing values for the variable.
No more than three missing values may be specified.
+=head3 get_attributes()
+
+Returns a reference to a hash of the custom variable attributes.
+Each value of the hash is a reference to an array containing the
+attribute values.
+
=head3 get_name ()
Returns the name of the variable.
# change 'tests => 1' to 'tests => last_test_to_print';
-use Test::More tests => 31;
+use Test::More tests => 32;
use Text::Diff;
use File::Temp qw/ tempfile tempdir /;
BEGIN { use_ok('PSPP') };
/string '1111' 'ones' '2222' 'twos' '3333' 'threes'
/numeric 1 'Unity' 2 'Duality' 3 'Thripality'.
+variable attribute
+ variables = numeric
+ attribute=colour[1]('blue') colour[2]('pink') colour[3]('violet')
+ attribute=size('large') nationality('foreign').
+
+
save outfile='$filename'.
SYNTAX
$val = @$c[2];
ok ( PSPP::value_is_missing ($val, $numericvar), "Missing Value Positive Num");
}
+
+
+#Test reading of custom attributes
+{
+ my $tempdir = tempdir( CLEANUP => 1 );
+
+ generate_sav_file ("$tempdir/in.sav", "$tempdir");
+
+ my $sf = PSPP::Reader->open ("$tempdir/in.sav");
+
+ my $dict = $sf->get_dict ();
+
+ my $var = $dict->get_var_by_name ("numeric");
+
+ my $attr = $var->get_attributes ();
+
+ open (MYFILE, ">$tempdir/out.txt");
+
+ foreach $k (keys %$attr)
+ {
+ my $ll = $attr->{$k};
+ print MYFILE "$k =>";
+ print MYFILE map "$_\n", join ', ', @$ll;
+ }
+
+ close (MYFILE);
+
+ ok (compare ("$tempdir/out.txt", <<EOF), "Custom Attributes");
+colour =>blue, pink, violet
+nationality =>foreign
+size =>large
+EOF
+
+}