[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pspp-cvs] pspp/src/language syntax-string-source.c syntax...
From: |
John Darrington |
Subject: |
[Pspp-cvs] pspp/src/language syntax-string-source.c syntax... |
Date: |
Sat, 20 Jan 2007 07:09:13 +0000 |
CVSROOT: /sources/pspp
Module name: pspp
Changes by: John Darrington <jmd> 07/01/20 07:09:13
Added files:
src/language : syntax-string-source.c syntax-string-source.h
Log message:
Added syntax-string-source.[ch]
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/syntax-string-source.c?cvsroot=pspp&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/syntax-string-source.h?cvsroot=pspp&rev=1.1
Patches:
Index: syntax-string-source.c
===================================================================
RCS file: syntax-string-source.c
diff -N syntax-string-source.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ syntax-string-source.c 20 Jan 2007 07:09:13 -0000 1.1
@@ -0,0 +1,125 @@
+/*
+ PSPPIRE --- A Graphical User Interface for PSPP
+ Copyright (C) 2007 Free Software Foundation
+
+ 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 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. */
+
+
+#include <libpspp/getl.h>
+#include <libpspp/alloc.h>
+#include <libpspp/compiler.h>
+#include <libpspp/str.h>
+
+#include <stdlib.h>
+
+#include "syntax-string-source.h"
+
+struct syntax_string_source
+ {
+ struct getl_interface parent;
+ struct string buffer;
+ size_t posn;
+ };
+
+
+static bool
+always_false (const struct getl_interface *i UNUSED)
+{
+ return false;
+}
+
+/* Returns the name of the source */
+static const char *
+name (const struct getl_interface *i UNUSED)
+{
+ return NULL;
+}
+
+
+/* Returns the location within the source */
+static int
+location (const struct getl_interface *i UNUSED)
+{
+ return -1;
+}
+
+
+static void
+close (struct getl_interface *i )
+{
+ struct syntax_string_source *sss = (struct syntax_string_source *) i;
+
+ ds_destroy (&sss->buffer);
+
+ free (sss);
+}
+
+
+
+static bool
+read_single_line (struct getl_interface *i,
+ struct string *line,
+ enum getl_syntax *syntax_rules UNUSED)
+{
+ struct syntax_string_source *sss = (struct syntax_string_source *) i;
+
+ size_t next;
+
+ if ( sss->posn == -1)
+ return false;
+
+ next = ss_find_char (ds_substr (&sss->buffer,
+ sss->posn, -1), '\n');
+
+ ds_assign_substring (line,
+ ds_substr (&sss->buffer,
+ sss->posn,
+ next)
+ );
+
+ if ( next != -1 )
+ sss->posn += next + 1; /* + 1 to skip newline */
+ else
+ sss->posn = -1; /* End of file encountered */
+
+ return true;
+}
+
+struct getl_interface *
+create_syntax_string_source (const char *format, ...)
+{
+ va_list args;
+
+ struct syntax_string_source *sss = xzalloc (sizeof *sss);
+
+ sss->posn = 0;
+
+ ds_init_empty (&sss->buffer);
+
+ va_start (args, format);
+ ds_put_vformat (&sss->buffer, format, args);
+ va_end (args);
+
+ sss->parent.interactive = always_false;
+ sss->parent.close = close;
+ sss->parent.read = read_single_line;
+
+ sss->parent.name = name;
+ sss->parent.location = location;
+
+
+ return (struct getl_interface *) sss;
+}
Index: syntax-string-source.h
===================================================================
RCS file: syntax-string-source.h
diff -N syntax-string-source.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ syntax-string-source.h 20 Jan 2007 07:09:13 -0000 1.1
@@ -0,0 +1,29 @@
+/*
+ PSPPIRE --- A Graphical User Interface for PSPP
+ Copyright (C) 2007 Free Software Foundation
+
+ 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 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. */
+
+#ifndef SYNTAX_STRING_SOURCE_H
+#define SYNTAX_STRING_SOURCE_H
+
+struct getl_interface;
+
+struct getl_interface *
+create_syntax_string_source (const char *fmt, ...);
+
+
+#endif
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pspp-cvs] pspp/src/language syntax-string-source.c syntax...,
John Darrington <=