checkin of 0.3.0
[pspp-builds.git] / src / data-in.h
1 /* PSPP - computes sample statistics.
2    Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
3    Written by Ben Pfaff <blp@gnu.org>.
4
5    This program is free software; you can redistribute it and/or
6    modify it under the terms of the GNU General Public License as
7    published by the Free Software Foundation; either version 2 of the
8    License, or (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful, but
11    WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18    02111-1307, USA. */
19
20 #if !data_in_h
21 #define data_in_h 1
22
23 #include "format.h"
24
25 /* Flags. */
26 enum
27   {
28     DI_IGNORE_ERROR = 01,       /* Don't report errors to the user. */
29   };
30
31 /* Information about parsing one data field. */
32 struct data_in
33   {
34     const unsigned char *s;     /* Source start. */
35     const unsigned char *e;     /* Source end. */
36
37     union value *v;             /* Destination. */
38
39     int flags;                  /* Zero or more of DI_*. */
40     int f1, f2;                 /* Columns the field was taken from. */
41     struct fmt_spec format;     /* Format specification to use. */
42   };
43
44 int data_in (struct data_in *);
45
46 void data_in_finite_line (struct data_in *di, const char *line, size_t len,
47                           int fc, int lc);
48
49 #if __GNUC__ >= 2
50 extern inline void
51 data_in_finite_line (struct data_in *di, const char *line, size_t len,
52                      int fc, int lc)
53 {
54   di->s = line + ((size_t) fc <= len ? fc - 1 : len);
55   di->e = line + ((size_t) lc <= len ? lc : len);
56 }
57 #endif /* GNU C */
58
59 #endif /* data-in.h */