lexer: Reimplement for better testability and internationalization.
[pspp-builds.git] / src / language / expressions / private.h
index 6173b4f481029de9e36006c470eca47bcb88a035..062d6f765185be6de3145397e4c30e7ae212394c 100644 (file)
@@ -1,33 +1,31 @@
-/* PSPP - computes sample statistics.
-   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+/* PSPP - a program for statistical analysis.
+   Copyright (C) 1997-9, 2000, 2011 Free Software Foundation, Inc.
 
-   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. */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
-#ifndef EXPRESSIONS_PRIVATE_H 
+#ifndef EXPRESSIONS_PRIVATE_H
 #define EXPRESSIONS_PRIVATE_H
 
 #include <assert.h>
 #include <stddef.h>
-#include <data/format.h>
-#include <libpspp/str.h>
 
-#include "public.h"
-#include "operations.h"
+#include "data/format.h"
+#include "language/expressions/operations.h"
+#include "language/expressions/public.h"
+#include "libpspp/str.h"
 
-enum operation_flags 
+enum operation_flags
   {
     /* Most operations produce a missing output value if any
        input value is missing.  Setting this bit indicates that
@@ -46,7 +44,7 @@ enum operation_flags
        to be non-missing.  The operation must have an array
        operand and the array must contain `double's.  Both
        OPF_ABSORB_MISS and OPF_ARRAY_OPERAND must also be set. */
-    OPF_MIN_VALID = 002,     
+    OPF_MIN_VALID = 002,
 
     /* If set, operation is non-optimizable in general.  Unless
        combined with OPF_ABSORB_MISS, missing input values are
@@ -82,10 +80,10 @@ struct operation
 
 extern const struct operation operations[];
 
-/* Tree structured expressions. */ 
+/* Tree structured expressions. */
 
 /* Atoms. */
-struct number_node 
+struct number_node
   {
     operation_type type;   /* OP_number. */
     double n;
@@ -100,7 +98,7 @@ struct string_node
 struct variable_node
   {
     operation_type type;   /* OP_variable. */
-    struct variable *v;
+    const struct variable *v;
   };
 
 struct integer_node
@@ -143,12 +141,12 @@ union any_node
     struct composite_node composite;
   };
 
-union operation_data 
+union operation_data
   {
     operation_type operation;
     double number;
     struct substring string;
-    struct variable *variable;
+    const struct variable *variable;
     const struct vector *vector;
     struct fmt_spec *format;
     int integer;
@@ -189,12 +187,9 @@ union any_node *expr_allocate_number (struct expression *e, double);
 union any_node *expr_allocate_boolean (struct expression *e, double);
 union any_node *expr_allocate_integer (struct expression *e, int);
 union any_node *expr_allocate_pos_int (struct expression *e, int);
-union any_node *expr_allocate_string_buffer (struct expression *e,
-                                             const char *string, size_t length);
-union any_node *expr_allocate_string (struct expression *e,
-                                      struct substring);
+union any_node *expr_allocate_string (struct expression *e, struct substring);
 union any_node *expr_allocate_variable (struct expression *e,
-                                        struct variable *);
+                                        const struct variable *);
 union any_node *expr_allocate_format (struct expression *e,
                                  const struct fmt_spec *);
 union any_node *expr_allocate_vector (struct expression *e,