Reform string library.
[pspp-builds.git] / src / language / expressions / private.h
index 85b82587f5f895e4f0d8bb4eed29d1cb61b67ce5..3fa108d5a4bd93007772d47500ab76ce7a9beea5 100644 (file)
@@ -22,8 +22,8 @@
 
 #include <assert.h>
 #include <stddef.h>
-#include "format.h"
-#include "str.h"
+#include <data/format.h>
+#include <libpspp/str.h>
 
 #include "public.h"
 #include "operations.h"
@@ -58,7 +58,11 @@ enum operation_flags
     OPF_UNIMPLEMENTED = 020,
 
     /* If set, this operation is a PSPP extension. */
-    OPF_EXTENSION = 040
+    OPF_EXTENSION = 040,
+
+    /* If set, this operation may not occur after TEMPORARY.
+       (Currently this applies only to LAG.) */
+    OPF_PERM_ONLY = 0100
   };
 
 #define EXPR_ARG_MAX 4
@@ -88,7 +92,7 @@ struct number_node
 struct string_node
   {
     operation_type type;   /* OP_string. */
-    struct fixed_string s;
+    struct substring s;
   };
 
 struct variable_node
@@ -141,7 +145,7 @@ union operation_data
   {
     operation_type operation;
     double number;
-    struct fixed_string string;
+    struct substring string;
     struct variable *variable;
     const struct vector *vector;
     struct fmt_spec *format;
@@ -160,7 +164,7 @@ struct expression
     size_t op_cnt, op_cap;      /* Number of ops, amount of allocated space. */
 
     double *number_stack;       /* Evaluation stack: numerics, Booleans. */
-    struct fixed_string *string_stack; /* Evaluation stack: strings. */
+    struct substring *string_stack; /* Evaluation stack: strings. */
     struct pool *eval_pool;     /* Pool for evaluation temporaries. */
   };
 
@@ -186,7 +190,7 @@ 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 fixed_string);
+                                      struct substring);
 union any_node *expr_allocate_variable (struct expression *e,
                                         struct variable *);
 union any_node *expr_allocate_format (struct expression *e,