Corrected typos in the perl documentation
[pspp-builds.git] / perl-module / lib / PSPP.pm
index 783ae25669982a695f1318d3e13b1eac533e8d1a..b84c311e21db8526e595208884925b62515149b9 100644 (file)
@@ -2,11 +2,9 @@ use 5.008008;
 use strict;
 use warnings;
 
-our $VERSION = '0.7.0';
-
 =head1 NAME
 
-PSPP - Perl extension to PSPP
+PSPP-Perl - Perl extension to PSPP
 
 =head1 SYNOPSIS
 
@@ -14,17 +12,21 @@ PSPP - Perl extension to PSPP
 
 =head1 DESCRIPTION
 
-PSPP:: provides an interface to the libraries used by pspp to create
-system files.  
+PSPP-Perl provides an interface to the libraries used by pspp to read and
+write system files.  
 
 =head1 EXPORT
 
 None by default.
 
 =cut
+BEGIN {
+       $PSPP::VERSION='0.7.2';
+       require XSLoader;
+       XSLoader::load('PSPP', $PSPP::VERSION);
+}
 
-require XSLoader;
-XSLoader::load('PSPP', $VERSION);
+PSPP::onBoot($PSPP::VERSION);
 
 =pod
 
@@ -41,8 +43,9 @@ use POSIX ;
 
 use constant { SYSMIS => -(POSIX::DBL_MAX), 
               PERL_EPOCH => 12219379200 # Number of seconds between 
+                   # 14th October 1582
+                  # and 
                   # 1st January 1970 
-                  # and 14th October 1582
               };
 
 
@@ -77,11 +80,61 @@ Sets the weighting variable to C<var>.
 sub new
 {
     my $class = shift;
-    my $self = _dict_new ();
+    my $self = pxs_dict_new ();
     bless ($self, $class);
     return $self;
 }
 
+=pod
+
+=head3 get_var_cnt ()
+
+Returns the number of variables in the dictionary.
+
+=head3 get_var ($idx)
+
+Returns the C<idx>th variable from the dictionary.
+Returns undef if C<idx> is greater than or equal to the number
+of variables in the dictionary.
+
+=cut
+
+sub get_var
+{
+    my $dict = shift;
+    my $idx = shift;
+    my $var = pxs_get_variable ($dict, $idx);
+
+    if ( ref $var ) 
+    {
+       bless ($var, "PSPP::Var");
+    }
+    return $var;
+}
+
+=pod
+
+=head3 get_var_by_name ($name)
+
+Returns the variable from the dictionary whose name is C<name>.
+If there is no such variable, a null reference will be returned.
+
+=cut
+
+sub get_var_by_name
+{
+    my $dict = shift;
+    my $name = shift;
+    my $var = pxs_get_var_by_name ($dict, $name);
+
+    if ( ref $var ) 
+    {
+       bless ($var, "PSPP::Var");
+    }
+    return $var;
+}
+
+
 package PSPP::Fmt;
 
 =pod
@@ -161,7 +214,7 @@ sub new
     my $dict = shift;
     my $name = shift;
     my %format = @_;
-    my $self = _dict_create_var ($dict, $name, \%format);
+    my $self = pxs_dict_create_var ($dict, $name, \%format);
     if ( ref $self ) 
     {
        bless ($self, $class);
@@ -196,7 +249,7 @@ An integer denoting the number of decimal places for the format.
 
 =item width
 
-An integer denoting the number of width of the format.
+An integer denoting the width of the format.
 
 =back
 
@@ -208,7 +261,7 @@ sub set_write_format
 {
     my $var = shift;
     my %format = @_;
-    _set_write_format ($var, \%format);
+    pxs_set_write_format ($var, \%format);
 }
 
 =pod
@@ -224,7 +277,7 @@ sub set_print_format
 {
     my $var = shift;
     my %format = @_;
-    _set_print_format ($var, \%format);
+    pxs_set_print_format ($var, \%format);
 }
 
 =pod
@@ -242,7 +295,7 @@ sub set_output_format
 {
     my $var = shift;
     my %format = @_;
-    _set_output_format ($var, \%format);
+    pxs_set_output_format ($var, \%format);
 }
 
 =pod
@@ -308,8 +361,26 @@ sub set_value_labels
 Sets the missing values for the variable.  
 No more than three missing values may be specified.
 
-=cut
+=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.
+
+=head3 get_label ()
+
+Returns the label of the variable or undef if there is no label.
+
+=head3 get_value_labels ()
+
+Returns a reference to a hash containing the value labels for the variable.
+The hash is keyed by data values which correpond to the labels.
+
+=cut
 
 package PSPP::Sysfile;
 
@@ -347,7 +418,7 @@ sub new
     my $dict = shift;
     my $opts = shift;
 
-    my $self  = _create_sysfile ($filename, $dict, $opts);
+    my $self  = pxs_create_sysfile ($filename, $dict, $opts);
 
     if ( ref $self ) 
     {
@@ -368,7 +439,88 @@ The system file will be automatically closed when it goes out of scope.
 
 =cut
 
+package PSPP::Reader;
+
+=pod
+
+=head2 PSPP::Reader
+
+=cut
+
+sub open
+{
+    my $class = shift;
+    my $filename = shift;
+
+    my $self  = pxs_open_sysfile ($filename);
+
+    if ( ref $self ) 
+    {
+       bless ($self, $class);
+    }
+    return $self;
+}
+
+=pod
+
+=head3 open ($filename)
+
+Opens a system file for reading.
+
+Open is used to read data from an existing system file. 
+It creates and returns a PSPP::Reader object which can be used to read 
+data and dictionary information from C<filename>.
+
+=cut
 
+sub get_dict
+{
+    my $reader = shift;
+
+    my $dict = pxs_get_dict ($reader);
+
+    bless ($dict, "PSPP::Dict");
+
+    return $dict;
+}
+
+=pod
+
+=head3 get_dict ()
+
+Returns the dictionary associated with the reader.
+
+=head3 get_next_case ()
+
+Retrieves the next case from the reader.
+This method returns an array of scalars, each of which are the values of 
+the data in the system file.
+The first call to C<get_next_case> after C<open> has been called retrieves
+the first case in the system file.  Each subsequent call retrieves the next
+case.  If there are no more cases to be read, the function returns an empty
+list.
+
+If the case contains system missing values, these values are set to the 
+empty string.
+
+=head2 Miscellaneous subroutines
+
+The following subroutines provide (hopefully) useful information about the 
+values retrieved from a reader.
+
+=head3 PSPP::format_value ($value, $variable)
+
+Returns a scalar containing a string representing C<value> formatted according 
+to the print format of C<variable>.
+In the most common ussage,  C<value> should be a value of C<variable>.
+
+
+=head3 PSPP::value_is_missing ($value, $variable)
+
+Returns non-zero if C<value> is either system missing, or if it matches the 
+user missing criteria for C<variable>.
+
+=cut
 
 1;
 __END__
@@ -380,21 +532,19 @@ John Darrington, E<lt>john@darrington.wattle.id.auE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (C) 2007 by Free Software Foundation
+Copyright (C) 2007, 2008, 2009 by Free Software Foundation
 
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
 
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA.
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 =cut