X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcontrol%2Fcontrol-stack.c;h=b6a405485eba40c6c563954db775a1a1f1fe73fc;hb=691a034d7f2139076fa012739dffd40ef5db4a9b;hp=9f1502c2b188f60886919c29beb75426c1cbf478;hpb=dcf9b154cbcaa35c3d8459a201b77eec8bcb30bd;p=pspp
diff --git a/src/language/control/control-stack.c b/src/language/control/control-stack.c
index 9f1502c2b1..b6a405485e 100644
--- a/src/language/control/control-stack.c
+++ b/src/language/control/control-stack.c
@@ -1,26 +1,49 @@
+/*
+PSPP - a program for statistical analysis.
+Copyright (C) 2017 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 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.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
#include
-#include "control-stack.h"
+
+#include "language/control/control-stack.h"
+
#include
#include
-#include "message.h"
-#include "xalloc.h"
+
+#include "libpspp/compiler.h"
+#include "libpspp/message.h"
+
+#include "gl/xalloc.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
struct ctl_struct
{
- struct ctl_class *class; /* Class of control structure. */
+ const struct ctl_class *class; /* Class of control structure. */
struct ctl_struct *down; /* Points toward the bottom of ctl_stack. */
void *private; /* Private data. */
};
-struct ctl_struct *ctl_stack;
+static struct ctl_struct *ctl_stack;
void
-ctl_stack_clear (void)
+ctl_stack_clear (void)
{
- while (ctl_stack != NULL)
+ while (ctl_stack != NULL)
{
struct ctl_struct *top = ctl_stack;
msg (SE, _("%s without %s."),
@@ -30,7 +53,7 @@ ctl_stack_clear (void)
}
void
-ctl_stack_push (struct ctl_class *class, void *private)
+ctl_stack_push (const struct ctl_class *class, void *private)
{
struct ctl_struct *ctl;
@@ -43,27 +66,27 @@ ctl_stack_push (struct ctl_class *class, void *private)
}
void *
-ctl_stack_top (struct ctl_class *class)
+ctl_stack_top (const struct ctl_class *class)
{
struct ctl_struct *top = ctl_stack;
if (top != NULL && top->class == class)
return top->private;
- else
+ else
{
if (ctl_stack_search (class) != NULL)
msg (SE, _("This command must appear inside %s...%s, "
"without intermediate %s...%s."),
class->start_name, class->end_name,
top->class->start_name, top->class->end_name);
- return NULL;
+ return NULL;
}
}
void *
-ctl_stack_search (struct ctl_class *class)
+ctl_stack_search (const struct ctl_class *class)
{
struct ctl_struct *ctl;
-
+
for (ctl = ctl_stack; ctl != NULL; ctl = ctl->down)
if (ctl->class == class)
return ctl->private;
@@ -74,10 +97,10 @@ ctl_stack_search (struct ctl_class *class)
}
void
-ctl_stack_pop (void *private UNUSED)
+ctl_stack_pop (void *private)
{
struct ctl_struct *top = ctl_stack;
-
+
assert (top != NULL);
assert (top->private == private);
@@ -87,7 +110,7 @@ ctl_stack_pop (void *private UNUSED)
}
bool
-ctl_stack_is_empty (void)
+ctl_stack_is_empty (void)
{
return ctl_stack == NULL;
}