Sat Dec 27 16:16:49 2003 Ben Pfaff <blp@gnu.org>
[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 <stddef.h>
24 #include "format.h"
25
26 /* Flags. */
27 enum
28   {
29     DI_IGNORE_ERROR = 01,       /* Don't report errors to the user. */
30   };
31
32 /* Information about parsing one data field. */
33 struct data_in
34   {
35     const unsigned char *s;     /* Source start. */
36     const unsigned char *e;     /* Source end. */
37
38     union value *v;             /* Destination. */
39
40     int flags;                  /* Zero or more of DI_*. */
41     int f1, f2;                 /* Columns the field was taken from. */
42     struct fmt_spec format;     /* Format specification to use. */
43   };
44
45 int data_in (struct data_in *);
46
47 void data_in_finite_line (struct data_in *di, const char *line, size_t len,
48                           int fc, int lc);
49
50 #if __GNUC__ >= 2
51 extern inline void
52 data_in_finite_line (struct data_in *di, const char *line, size_t len,
53                      int fc, int lc)
54 {
55   di->s = line + ((size_t) fc <= len ? fc - 1 : len);
56   di->e = line + ((size_t) lc <= len ? lc : len);
57 }
58 #endif /* GNU C */
59
60 #endif /* data-in.h */