annotate src/DLD-FUNCTIONS/__gnuplot_raw__.l @ 7017:a1dbe9d80eee

[project @ 2007-10-12 21:27:11 by jwe]
author jwe
date Fri, 12 Oct 2007 21:27:37 +0000
parents 93c65f2a5668
children 373c39904877
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1 /*
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
2
7017
a1dbe9d80eee [project @ 2007-10-12 21:27:11 by jwe]
jwe
parents: 7016
diff changeset
3 Copyright (C) 2004, 2005, 2006, 2007 John W. Eaton and Teemu Ikonen
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
4
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
6
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6556
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6556
diff changeset
10 option) any later version.
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
11
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
15 for more details.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
16
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6556
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6556
diff changeset
19 <http://www.gnu.org/licenses/>.
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
20
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
21 */
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
22
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
23 %option prefix="gpt"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
24 %option noyywrap
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
25
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
26 %{
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
27 // PKG_ADD: mark_as_rawcommand ("__gnuplot_plot__");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
28 // PKG_ADD: mark_as_rawcommand ("__gnuplot_splot__");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
29 // PKG_ADD: mark_as_rawcommand ("__gnuplot_replot__");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
30
5796
20f4bd627a74 [project @ 2006-05-09 02:04:54 by jwe]
jwe
parents: 5794
diff changeset
31 // PKG_ADD: mark_as_command ("__gnuplot_set__");
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
32 // PKG_ADD: mark_as_command ("__gnuplot_show__");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
33
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
34 // PKG_ADD: atexit ("closeplot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
35
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
36 #ifdef HAVE_CONFIG_H
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
37 #include <config.h>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
38 #endif
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
39
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
40 #include <map>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
41 #include <string>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
42 #include <fstream>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
43 #include <iostream>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
44 #include <sstream>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
45
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
46 #ifdef HAVE_UNISTD_H
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
47 #ifdef HAVE_SYS_TYPES_H
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
48 #include <sys/types.h>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
49 #endif
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
50 #include <unistd.h>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
51 #endif
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
52
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
53 #include "file-ops.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
54 #include "oct-env.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
55
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
56 #include "defun-dld.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
57 #include "file-io.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
58 #include "gripes.h"
5958
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
59 #include "ls-oct-ascii.h"
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
60 #include "parse.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
61 #include "procstream.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
62 #include "sighandlers.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
63 #include "utils.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
64 #include "variables.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
65
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
66 enum _toktype
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
67 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
68 START_PAREN = 1,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
69 END_PAREN,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
70 START_BRACE,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
71 END_BRACE,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
72 START_BRACKET,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
73 END_BRACKET,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
74 COLON,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
75 SEMICOLON,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
76 COMMA,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
77 QUOTE,
5958
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
78 DOLLAR,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
79 IDENT,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
80 NUMBER,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
81 BINOP,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
82 UNOP,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
83 STRING,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
84 OTHER,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
85 TITLE,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
86 USING,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
87 WITH,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
88 AXES,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
89 CLEAR
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
90 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
91
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
92 typedef bool (*pred) (const int);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
93
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
94 class
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
95 gpt_parse_error
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
96 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
97 public:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
98 gpt_parse_error (void) : msg () { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
99 gpt_parse_error (std::string errmsg) : msg (errmsg) { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
100
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
101 std::string msg;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
102 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
103
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
104 static bool gpt_quote_is_transpose;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
105 static bool gpt_allow_plotkw;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
106 static int gpt_parens;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
107 static int gpt_brackets;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
108 static int gpt_braces;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
109
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
110 static bool can_be_plotkw (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
111
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
112 static int is_plot_keyword (const std::string& s);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
113
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
114 static int handle_string (char delim);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
115 static std::string strbuf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
116
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
117 %}
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
118
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
119 D [0-9]
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
120 S [ \t]
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
121 IDENT ([_a-zA-Z@][_a-zA-Z0-9]*)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
122 EXPON ([DdEe][+-]?{D}+)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
123 NUMBER (({D}+\.?{D}*{EXPON}?)|(\.{D}+{EXPON}?)|(0[xX][0-9a-fA-F]+))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
124 NOT ((\~)|(\!))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
125 /* NOT is not strictly a binary operator, but is close enough for us. */
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
126 BINOP (({NOT})|(\.?([\*/\\^+-]|\*\*)=?)|([<=~!>&|]=)|([=&|<>]{1,2})|(<<=)|(>>=)|(\.))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
127 /* single quote (') transpose operator is handled separately. */
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
128 UNOP ((\+\+)|(\-\-)|(\.'))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
129
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
130 %%
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
131
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
132 "(" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
133 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
134 gpt_parens++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
135 return START_PAREN;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
136 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
137
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
138 ")" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
139 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
140 gpt_parens--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
141 return END_PAREN;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
142 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
143
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
144 "{" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
145 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
146 gpt_braces++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
147 return START_BRACE;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
148 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
149
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
150 "}" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
151 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
152 gpt_braces--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
153 return END_BRACE;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
154 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
155
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
156 "[" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
157 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
158 gpt_brackets++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
159 return START_BRACKET;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
160 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
161
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
162 "]" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
163 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
164 gpt_brackets--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
165 return END_BRACKET;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
166 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
167
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
168 ":" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
169 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
170 return COLON;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
171 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
172
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
173 ";" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
174 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
175 return SEMICOLON;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
176 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
177
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
178 "," {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
179 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
180 return COMMA;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
181 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
182
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
183 "'" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
184 if (gpt_quote_is_transpose)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
185 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
186 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
187 return QUOTE;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
188 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
189 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
190 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
191 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
192 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
193 return handle_string ('\'');
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
194 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
195 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
196
5958
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
197 "$" {
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
198 gpt_quote_is_transpose = false;
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
199 return DOLLAR;
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
200 }
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
201
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
202 "\"" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
203 return handle_string ('"');
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
204 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
205
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
206 {IDENT} {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
207 int itok = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
208 if (can_be_plotkw () && (itok = is_plot_keyword (yytext)))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
209 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
210 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
211 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
212 return itok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
213 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
214 else if (std::string (yytext) == "function")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
215 throw gpt_parse_error ("function keyword not allowed in plot commands");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
216 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
217 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
218 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
219 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
220 return IDENT;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
221 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
222 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
223
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
224 {D}+/\.[\*/\\^'] | /* ' */
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
225 {NUMBER} {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
226 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
227 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
228 return NUMBER;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
229 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
230
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
231 {BINOP} {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
232 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
233 gpt_allow_plotkw = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
234 return BINOP;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
235 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
236
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
237 {UNOP} {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
238 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
239 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
240 return UNOP;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
241 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
242
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
243 {S} { /* Ignore spaces and tabs outside of character strings. */ }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
244
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
245 . {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
246 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
247 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
248 warning ("unknown token = \"%s\" in plot command", yytext);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
249 return OTHER;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
250 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
251
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
252 %%
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
253
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
254 // ------------------------------------------------------------
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
255 // Interface to external gnuplot process(es), including gnuplot
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
256 // command parser.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
257 // ------------------------------------------------------------
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
258
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
259 // The name of the shell command to execute to start gnuplot.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
260 static std::string Vgnuplot_binary = GNUPLOT_BINARY;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
261
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
262 // Append -title "Figure NN" to the gnuplot command?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
263 static bool Vgnuplot_use_title_option = octave_env::have_x11_display ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
264
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
265 // Gnuplot command strings that we use.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
266 static std::string Vgnuplot_command_plot = "pl";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
267 static std::string Vgnuplot_command_replot = "rep";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
268 static std::string Vgnuplot_command_splot = "sp";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
269 static std::string Vgnuplot_command_using = "u";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
270 static std::string Vgnuplot_command_with = "w";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
271 static std::string Vgnuplot_command_axes = "ax";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
272 static std::string Vgnuplot_command_title = "t";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
273 static std::string Vgnuplot_command_end = "\n";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
274
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
275 // Check if the parser state is such that a plot keyword can occur.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
276
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
277 static bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
278 can_be_plotkw (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
279 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
280 return (gpt_allow_plotkw
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
281 && (gpt_braces == 0)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
282 && (gpt_brackets == 0)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
283 && (gpt_parens == 0));
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
284 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
285
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
286 // Check to see if a character string matches any one of the plot
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
287 // option keywords. Don't match abbreviations for clear, since that's
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
288 // not a gnuplot keyword (users will probably only expect to be able
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
289 // to abbreviate actual gnuplot keywords).
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
290
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
291 static int
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
292 is_plot_keyword (const std::string& s)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
293 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
294 if (almost_match ("title", s, 1))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
295 return TITLE;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
296 else if (almost_match ("using", s, 1))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
297 return USING;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
298 else if (almost_match ("with", s, 1))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
299 return WITH;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
300 else if (almost_match ("axes", s, 2) || almost_match ("axis", s, 2))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
301 return AXES;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
302 else if ("clear" == s)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
303 return CLEAR;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
304 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
305 return 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
306 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
307
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
308 // This is used to handle character strings. Kludge alert.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
309
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
310 static int
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
311 handle_string (char delim)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
312 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
313 int c;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
314 bool escape_pending = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
315
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
316 strbuf = std::string (1, delim);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
317
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
318 while ((c = yyinput ()) != EOF)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
319 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
320 if (c == '\\')
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
321 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
322 if (escape_pending)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
323 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
324 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
325 escape_pending = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
326 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
327 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
328 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
329 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
330 escape_pending = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
331 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
332 continue;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
333 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
334 else if (c == '\n')
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
335 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
336 error ("unterminated string constant");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
337 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
338 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
339 else if (c == delim)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
340 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
341 if (escape_pending)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
342 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
343 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
344 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
345 c = yyinput ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
346
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
347 if (c == delim)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
348 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
349 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
350 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
351 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
352 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
353 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
354 yyunput (c, yytext);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
355 strbuf += static_cast<char> (delim);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
356 return STRING;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
357 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
358 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
359 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
360 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
361 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
362
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
363 escape_pending = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
364 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
365
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
366 throw gpt_parse_error ("unterminated string");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
367
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
368 return 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
369 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
370
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
371 // (Probably not necessesary, but current Matlab style plot functions
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
372 // break without this (they emit too short gnuplot commands))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
373
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
374 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
375 plot_style_token (const std::string& s)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
376 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
377 std::string retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
378
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
379 // FIXME -- specify minimum match length for these.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
380 static const char *plot_styles[] =
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
381 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
382 "boxes",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
383 "boxerrorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
384 "boxxyerrorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
385 "candlesticks",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
386 "dots",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
387 "errorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
388 "financebars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
389 "fsteps",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
390 "histeps",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
391 "impulses",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
392 "lines",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
393 "linespoints",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
394 "points",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
395 "steps",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
396 "vector",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
397 "xerrorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
398 "xyerrorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
399 "yerrorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
400 0,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
401 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
402
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
403 const char * const *tmp = plot_styles;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
404 while (*tmp)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
405 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
406 if (almost_match (*tmp, s.c_str ()))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
407 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
408 retval = *tmp;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
409 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
410 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
411
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
412 tmp++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
413 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
414
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
415 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
416 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
417
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
418 // Some predicates on tokens
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
419
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
420 // Return true for ":".
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
421
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
422 static bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
423 colonp (const int tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
424 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
425 return (tok == COLON);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
426 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
427
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
428 // Return TRUE for "]".
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
429
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
430 static bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
431 endbracketp (const int tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
432 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
433 return (tok == END_BRACKET);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
434 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
435
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
436 // Return TRUE for plot token, comma or end of input.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
437
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
438 static bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
439 plottok_or_end_p (const int tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
440 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
441 return (tok == TITLE
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
442 || tok == USING
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
443 || tok == WITH
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
444 || tok == AXES
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
445 || tok == CLEAR
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
446 || tok == COMMA
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
447 || tok == 0);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
448 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
449
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
450 // Equivalent to (colonp (tok) || plottok_or_end_p (tok)).
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
451
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
452 static bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
453 colon_plottok_or_end_p (const int tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
454 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
455 return (tok == COLON || plottok_or_end_p (tok));
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
456 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
457
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
458 // read until test is true and delimiters are balanced, or end of input.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
459 // Return the last token in lasttok
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
460
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
461 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
462 read_until (pred test, int& lasttok) throw (gpt_parse_error)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
463 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
464 int tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
465
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
466 // We have to maintain balanced delimiters per subexpression too.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
467 int brackets = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
468 int parens = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
469 int braces = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
470 std::string s;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
471
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
472 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
473
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
474 while (tok && ! (test (tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
475 && brackets == 0
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
476 && parens == 0
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
477 && braces == 0))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
478 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
479 switch (tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
480 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
481 case START_BRACKET:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
482 brackets++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
483 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
484
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
485 case END_BRACKET:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
486 brackets--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
487 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
488
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
489 case START_PAREN:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
490 parens++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
491 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
492
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
493 case END_PAREN:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
494 parens--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
495 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
496
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
497 case START_BRACE:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
498 braces++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
499 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
500
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
501 case END_BRACE:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
502 braces--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
503 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
504
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
505 default:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
506 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
507 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
508
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
509 s += (tok == STRING ? strbuf : std::string (yytext)) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
510
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
511 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
512 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
513
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
514 // Throw error only if we've reached the end token and the test
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
515 // doesn't accept it.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
516
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
517 if (! test (tok) && ! tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
518 throw gpt_parse_error ("unexpected end of input");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
519
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
520 lasttok = tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
521
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
522 return s;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
523 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
524
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
525 // Eval the two expressions giving limits of range and print it.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
526
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
527 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
528 printrange (std::string starts, std::string ends)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
529 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
530 octave_value startv, endv;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
531 int status;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
532 std::string s;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
533 std::ostringstream range_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
534
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
535 range_buf << "[";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
536
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
537 if (! starts.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
538 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
539 startv = eval_string (starts, true, status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
540 if (! startv.is_real_scalar ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
541 throw gpt_parse_error ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
542 startv.print_raw (range_buf);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
543 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
544
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
545 range_buf << ":";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
546
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
547 if (! ends.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
548 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
549 endv = eval_string (ends, true, status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
550 if (! endv.is_real_scalar ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
551 throw gpt_parse_error ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
552 endv.print_raw (range_buf);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
553 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
554
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
555 range_buf << "]";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
556
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
557 s = range_buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
558
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
559 return s;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
560 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
561
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
562 // Handle plot parameters.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
563
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
564 // Parse, evaluate and print colon separated expressions in the using
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
565 // plot parameter. The use of trailing format string is not supported.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
566
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
567 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
568 handle_using (int& lasttok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
569 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
570 int tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
571 std::string expr_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
572 std::string retstr = Vgnuplot_command_using + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
573 bool out = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
574
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
575 octave_value tmp_data;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
576 int status;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
577 while (! out)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
578 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
579 expr_str = read_until (colon_plottok_or_end_p, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
580
5958
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
581 if (! expr_str.empty () && expr_str[0] == '(')
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
582 retstr += expr_str;
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
583 else
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
584 {
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
585 tmp_data = eval_string (expr_str, true, status);
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
586 if (status != 0 || ! tmp_data.is_real_scalar ())
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
587 throw gpt_parse_error ();
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
588
5958
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
589 std::ostringstream tmp_buf;
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
590 tmp_data.print_raw (tmp_buf);
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
591 retstr += tmp_buf.str ();
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
592 }
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
593
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
594 if (tok == COLON)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
595 retstr += ":";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
596 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
597 out = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
598 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
599
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
600 lasttok = tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
601
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
602 return retstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
603 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
604
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
605 // Presently just passes the linewidth, pointtype etc. tokens as they are.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
606
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
607 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
608 handle_style (int& lasttok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
609 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
610 std::string retstr = Vgnuplot_command_with + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
611 std::string style;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
612
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
613 lasttok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
614
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
615 if (lasttok != IDENT)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
616 throw gpt_parse_error ("expected plot style token");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
617
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
618 style = std::string (yytext);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
619 style = plot_style_token (style);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
620
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
621 if (! style.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
622 retstr += style;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
623 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
624 retstr += std::string (yytext);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
625
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
626 // FIXME -- should evaluate the remaining tokens, but this
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
627 // needs changes in the parser.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
628 retstr += " " + read_until (plottok_or_end_p, lasttok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
629
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
630 return retstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
631 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
632
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
633 // Axes has only one qualifier keyword, which is not evaluated.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
634
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
635 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
636 handle_axes (int& lasttok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
637 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
638 return Vgnuplot_command_axes + " " + read_until (plottok_or_end_p, lasttok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
639 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
640
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
641 static void
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
642 write_data (std::ostream& os, const octave_value& val,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
643 int ndim = 2, bool parametric = false,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
644 const std::string& name = std::string ())
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
645 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
646 switch (ndim)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
647 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
648 case 2:
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
649 save_ascii_data_for_plotting (os, val, name);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
650 break;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
651
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
652 case 3:
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
653 save_three_d (os, val, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
654 break;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
655
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
656 default:
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
657 gripe_2_or_3_dim_plot ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
658 break;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
659 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
660 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
661
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
662 static void
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
663 write_inline_data (std::ostream& os, const octave_value& val,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
664 int ndim = 2, bool parametric = false)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
665 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
666 write_data (os, val, ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
667 os << "e" << std::endl;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
668 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
669
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
670 static std::string
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
671 save_in_tmp_file (const octave_value& val, int ndim = 2,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
672 bool parametric = false)
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
673 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
674 std::string name = file_ops::tempnam ("", "oct-");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
675
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
676 if (! name.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
677 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
678 std::ofstream file (name.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
679
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
680 if (file)
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
681 write_data (file, val, ndim, parametric, name);
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
682 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
683 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
684 error ("couldn't open temporary output file `%s'", name.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
685 name.resize (0);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
686 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
687 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
688
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
689 return name;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
690 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
691
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
692 DEFUN_DLD (__gnuplot_save_data__, args, ,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
693 "-*- texinfo -*-\n\
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
694 @deftypefn {Loadable Function} {} __gnuplot_save_data__ (@var{data}, @var{ndim}, @var{parametric})\n\
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
695 @end deftypefn")
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
696 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
697 octave_value retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
698
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
699 int nargin = args.length ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
700
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
701 if (nargin > 0 && nargin < 4)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
702 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
703 int ndim = 2;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
704 bool parametric = false;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
705
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
706 if (nargin > 1)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
707 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
708 ndim = args(1).int_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
709
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
710 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
711 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
712 if (nargin > 2)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
713 parametric = args(2).bool_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
714 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
715 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
716
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
717 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
718 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
719 std::string file = save_in_tmp_file (args(0), ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
720
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
721 mark_for_deletion (file);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
722
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
723 retval = file;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
724 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
725 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
726 else
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
727 print_usage ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
728
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
729 return retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
730 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
731
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
732 static int
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
733 get_current_figure (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
734 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
735 int retval = 1;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
736
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
737 octave_value cf = get_global_value ("__current_figure__", true);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
738
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
739 if (cf.is_defined ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
740 retval = cf.int_value ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
741 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
742 set_global_value ("__current_figure__", retval);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
743
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
744 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
745 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
746
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
747 class
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
748 gnuplot
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
749 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
750 protected:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
751
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
752 gnuplot (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
753 : plot_line_count (0), parametric_plot (false),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
754 use_title_option (Vgnuplot_use_title_option),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
755 gnuplot_exe (Vgnuplot_binary),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
756 gnuplot_terminal_type (), plot_stream () { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
757
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
758 public:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
759
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
760 ~gnuplot (void) { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
761
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
762 static bool have_instance (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
763
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
764 static bool ensure_instance (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
765
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
766 static bool ensure_plot_stream (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
767
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
768 static void open (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
769
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
770 static void close (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
771
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
772 static void close_all (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
773
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
774 static bool plot_stream_event_handler (pid_t pid, int status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
775
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
776 static void send (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
777 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
778 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
779 instance->do_send (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
780 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
781
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
782 static void send_raw (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
783 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
784 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
785 instance->do_send_raw (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
786 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
787
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
788 static void send_inline_data (const octave_value& val, int ndim,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
789 bool parametric)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
790 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
791 if (ensure_plot_stream ())
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
792 instance->do_send_inline_data (val, ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
793 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
794
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
795 static void clear (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
796 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
797 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
798 instance->do_clear ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
799 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
800
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
801 static void set (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
802 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
803 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
804 instance->do_set (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
805 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
806
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
807 static void show (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
808 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
809 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
810 instance->do_show (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
811 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
812
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
813 static void set_gnuplot_exe (const std::string& exe)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
814 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
815 if (ensure_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
816 instance->do_set_gnuplot_exe (exe);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
817 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
818
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
819 static void set_gnuplot_use_title_option (bool opt)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
820 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
821 if (ensure_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
822 instance->do_set_gnuplot_use_title_option (opt);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
823 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
824
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
825 // FIXME -- should only remove tmp files associated with
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
826 // gnuplot?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
827 static void cleanup_tmp_files (void) { ::cleanup_tmp_files (); }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
828
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
829 static void plot (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
830 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
831 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
832 instance->do_plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
833 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
834
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
835 private:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
836
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
837 static gnuplot *instance;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
838
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
839 static std::map<int, gnuplot *> instance_map;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
840
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
841 // The number of lines we've plotted so far.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
842 int plot_line_count;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
843
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
844 // Is this a parametric plot? Makes a difference for 3D plotting.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
845 bool parametric_plot;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
846
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
847 // Should we append '-title "TITLE"' to the gnuplot command?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
848 bool use_title_option;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
849
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
850 // The executable program to run.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
851 std::string gnuplot_exe;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
852
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
853 // The gnuplot terminal type.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
854 std::string gnuplot_terminal_type;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
855
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
856 // Pipe to gnuplot.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
857 oprocstream *plot_stream;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
858
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
859 pid_t pid (void) const;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
860
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
861 static gnuplot *lookup_by_pid (pid_t pid);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
862
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
863 void do_open (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
864
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
865 void do_close (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
866
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
867 void delete_plot_stream (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
868
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
869 void reset_plot_stream (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
870
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
871 void do_send (const std::string& cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
872
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
873 void do_send_raw (const std::string& cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
874
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
875 void do_send_inline_data (const octave_value& val, int ndim,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
876 bool parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
877
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
878 void do_clear (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
879
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
880 void do_set (const string_vector& argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
881
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
882 void do_show (const string_vector& argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
883
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
884 void do_set_gnuplot_exe (const std::string& exe) { gnuplot_exe = exe; }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
885
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
886 void do_set_gnuplot_use_title_option (bool opt) { use_title_option = opt; }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
887
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
888 void do_plot (const string_vector& argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
889
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
890 std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
891 makeplot (std::string caller, std::string args) throw (gpt_parse_error);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
892
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
893 std::string handle_title (int& lasttok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
894 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
895
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
896 gnuplot *gnuplot::instance = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
897
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
898 std::map<int, gnuplot *> gnuplot::instance_map;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
899
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
900 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
901 gnuplot::have_instance (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
902 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
903 int current_figure = get_current_figure ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
904
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
905 if (instance_map.find (current_figure) != instance_map.end ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
906 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
907 instance = instance_map[current_figure];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
908 return true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
909 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
910 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
911 return false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
912 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
913
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
914 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
915 gnuplot::ensure_instance (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
916 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
917 if (! have_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
918 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
919 instance = new gnuplot ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
920
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
921 if (! instance)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
922 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
923 ::error ("unable to create gnuplot object!");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
924
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
925 return false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
926 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
927 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
928 instance_map[get_current_figure ()] = instance;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
929 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
930
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
931 return true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
932 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
933
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
934 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
935 gnuplot::ensure_plot_stream (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
936 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
937 if (ensure_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
938 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
939 instance->do_open ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
940
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
941 if (error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
942 return false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
943 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
944
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
945 return true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
946 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
947
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
948 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
949 gnuplot::close (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
950 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
951 if (have_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
952 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
953 instance->do_close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
954
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
955 instance_map.erase (get_current_figure ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
956 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
957 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
958
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
959 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
960 gnuplot::close_all (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
961 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
962 for (std::map<int, gnuplot *>::const_iterator p = instance_map.begin ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
963 p != instance_map.end ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
964 p++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
965 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
966 gnuplot *elt = p->second;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
967
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
968 elt->do_close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
969 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
970 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
971
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
972 pid_t
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
973 gnuplot::pid (void) const
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
974 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
975 return plot_stream ? plot_stream->pid () : -1;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
976 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
977
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
978 gnuplot *
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
979 gnuplot::lookup_by_pid (pid_t pid)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
980 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
981 gnuplot *retval = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
982
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
983 for (std::map<int, gnuplot *>::const_iterator p = instance_map.begin ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
984 p != instance_map.end ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
985 p++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
986 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
987 gnuplot *elt = p->second;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
988
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
989 if (elt && elt->pid () == pid)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
990 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
991 retval = elt;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
992 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
993 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
994 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
995
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
996 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
997 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
998
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
999 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1000 gnuplot::do_open (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1001 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1002 static bool initialized = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1003
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1004 if (plot_stream && ! *plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1005 do_close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1006
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1007 if (! plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1008 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1009 initialized = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1010
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1011 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1012
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1013 std::string cmd;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1014
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1015 if (gnuplot_exe.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1016 cmd = "gnuplot";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1017 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1018 cmd = "\"" + gnuplot_exe + "\"";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1019
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1020 // FIXME -- I'm not sure this is the right thing to do,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1021 // but without it, C-c at the octave prompt will kill gnuplot...
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1022
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1023 #if defined (HAVE_POSIX_SIGNALS)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1024 sigset_t nset, oset;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1025 sigemptyset (&nset);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1026 sigaddset (&nset, SIGINT);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1027 sigprocmask (SIG_BLOCK, &nset, &oset);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1028 #else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1029 volatile octave_interrupt_handler old_interrupt_handler
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1030 = octave_ignore_interrupts ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1031 #endif
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1032
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1033 if (use_title_option)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1034 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1035 std::ostringstream buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1036
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1037 buf << cmd << " -title \"Figure " << get_current_figure () << "\"";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1038
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1039 cmd = buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1040 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1041
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1042 plot_stream = new oprocstream (cmd.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1043
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1044 if (plot_stream && *plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1045 octave_child_list::insert (plot_stream->pid (),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1046 plot_stream_event_handler);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1047 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1048 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1049 delete_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1050
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1051 error ("plot: unable to open pipe to `%s'", cmd.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1052 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1053
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1054 #if defined (HAVE_POSIX_SIGNALS)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1055 sigprocmask (SIG_SETMASK, &oset, 0);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1056 #else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1057 octave_set_interrupt_handler (old_interrupt_handler);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1058 #endif
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1059 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1060
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1061 if (! error_state && plot_stream && *plot_stream && ! initialized)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1062 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1063 initialized = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1064
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1065 do_send_raw ("set style data lines\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1066
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1067 if (! gnuplot_terminal_type.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1068 do_send_raw ("set term " + gnuplot_terminal_type
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1069 + Vgnuplot_command_end + "\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1070 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1071 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1072
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1073 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1074 gnuplot::delete_plot_stream (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1075 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1076 do_send_raw ("\nquit\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1077
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1078 delete plot_stream;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1079 plot_stream = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1080 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1081
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1082 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1083 gnuplot::reset_plot_stream (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1084 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1085 delete_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1086
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1087 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1088 parametric_plot = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1089 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1090
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1091 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1092 gnuplot::do_close (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1093 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1094 if (plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1095 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1096 octave_child_list::remove (plot_stream->pid ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1097
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1098 delete_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1099 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1100
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1101 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1102 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1103
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1104 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1105 gnuplot::plot_stream_event_handler (pid_t pid, int status)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1106 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1107 bool retval = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1108
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1109 if (pid > 0)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1110 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1111 if (WIFEXITED (status) || WIFSIGNALLED (status))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1112 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1113 gnuplot *plotter = gnuplot::lookup_by_pid (pid);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1114
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1115 // We should only print a warning or request removal of the
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1116 // process from the child list if the process died
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1117 // unexpectedly. If do_close is responsible for
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1118 // gnuplot's death, then plotter will be 0 here and we don't
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1119 // need to do anything.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1120
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1121 if (plotter)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1122 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1123 plotter->reset_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1124
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1125 warning ("connection to external plotter (pid = %d) lost --", pid);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1126 // Request removal of this PID from the list of child
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1127 // processes.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1128
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1129 retval = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1130 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1131 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1132 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1133
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1134 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1135 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1136
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1137 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1138 gnuplot::do_send (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1139 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1140 int replot_len = Vgnuplot_command_replot.length ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1141
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1142 bool is_replot = (Vgnuplot_command_replot == cmd.substr (0, replot_len));
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1143
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1144 if (! (plot_line_count == 0 && is_replot))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1145 do_send_raw (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1146 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1147
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1148 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1149 gnuplot::do_send_raw (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1150 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1151 if (plot_stream && *plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1152 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1153 *plot_stream << cmd;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1154
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1155 plot_stream->flush ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1156 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1157 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1158
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1159 void
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1160 gnuplot::do_send_inline_data (const octave_value& val, int ndim,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1161 bool parametric)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1162 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1163 if (plot_stream && *plot_stream)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1164 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1165 write_inline_data (*plot_stream, val, ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1166
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1167 plot_stream->flush ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1168 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1169 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1170
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1171 void
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1172 gnuplot::do_clear (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1173 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1174 do_send_raw ("clear\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1175
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1176 // FIXME -- instead of just clearing these things, it would
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1177 // be nice if we could reset things to a user-specified default
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1178 // state.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1179
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1180 do_send_raw ("set title\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1181 do_send_raw ("set xlabel\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1182 do_send_raw ("set ylabel\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1183 do_send_raw ("set nogrid\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1184 do_send_raw ("set nolabel\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1185
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1186 // This makes a simple `replot' not work after a `clearplot' command
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1187 // has been issued.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1188
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1189 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1190 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1191
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1192 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1193 gnuplot::do_set (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1194 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1195 int argc = argv.length ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1196
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1197 std::ostringstream plot_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1198
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1199 if (argc > 1)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1200 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1201 if (almost_match ("parametric", argv[1], 3))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1202 parametric_plot = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1203 else if (almost_match ("noparametric", argv[1], 5))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1204 parametric_plot = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1205 else if (almost_match ("term", argv[1], 1))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1206 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1207 gnuplot_terminal_type = "";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1208 std::ostringstream buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1209 int i;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1210 for (i = 2; i < argc-1; i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1211 buf << argv[i] << " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1212 if (i < argc)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1213 buf << argv[i];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1214 buf << Vgnuplot_command_end;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1215 gnuplot_terminal_type = buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1216 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1217 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1218
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1219 int i;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1220 for (i = 0; i < argc-1; i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1221 plot_buf << argv[i] << " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1222
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1223 if (i < argc)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1224 plot_buf << argv[i];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1225
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1226 plot_buf << Vgnuplot_command_end;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1227
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1228 do_send_raw (plot_buf.str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1229 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1230
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1231 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1232 gnuplot::do_show (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1233 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1234 int argc = argv.length ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1235
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1236 std::ostringstream plot_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1237
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1238 int i;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1239 for (i = 0; i < argc-1; i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1240 plot_buf << argv[i] << " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1241 if (i < argc)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1242 plot_buf << argv[i];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1243
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1244 plot_buf << Vgnuplot_command_end;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1245
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1246 do_send (plot_buf.str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1247 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1248
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1249 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1250 gnuplot::do_plot (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1251 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1252 std::string s;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1253
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1254 for (int i = 1; i < argv.length (); i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1255 s += argv[i] + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1256
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1257 try
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1258 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1259 std::string cmd = makeplot (argv[0], s);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1260
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1261 do_send (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1262 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1263 catch (gpt_parse_error& e)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1264 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1265 if (e.msg.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1266 error ("could not parse plot command");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1267 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1268 error (e.msg.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1269 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1270 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1271
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1272 // Parse and evaluate parameter string and pass it to gnuplot pipe.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1273
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1274 std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1275 gnuplot::makeplot (std::string caller, std::string args)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1276 throw (gpt_parse_error)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1277 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1278 std::string retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1279
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1280 YY_BUFFER_STATE bstate;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1281
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1282 bstate = yy_scan_string (args.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1283 yy_switch_to_buffer (bstate);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1284 std::string outstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1285 int ndim = 2;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1286
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1287 if (caller == "replot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1288 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1289 ndim = 1;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1290 outstr += Vgnuplot_command_replot + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1291 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1292 else if (caller == "plot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1293 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1294 ndim = 2;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1295 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1296 outstr += Vgnuplot_command_plot + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1297 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1298 else if (caller == "splot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1299 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1300 ndim = 3;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1301 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1302 outstr += Vgnuplot_command_splot + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1303 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1304 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1305 throw gpt_parse_error ("unknown plot command");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1306
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1307 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1308 gpt_allow_plotkw = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1309 gpt_parens = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1310 gpt_braces = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1311 gpt_brackets = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1312
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1313 int tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1314 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1315 if (plottok_or_end_p (tok) && caller != "replot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1316 throw gpt_parse_error ("must have something to plot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1317
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1318 while (tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1319 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1320 bool title_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1321 bool using_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1322 bool style_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1323 bool axes_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1324
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1325 if (tok == START_BRACKET)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1326 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1327 if (caller == "replot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1328 throw gpt_parse_error ("can't specify new plot ranges with `replot' or while hold is on");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1329
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1330 std::string xrange_start_str = read_until (colonp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1331 std::string xrange_end_str = read_until (endbracketp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1332 outstr += printrange (xrange_start_str, xrange_end_str) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1333 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1334 if (tok == START_BRACKET)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1335 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1336 std::string yrange_start_str = read_until (colonp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1337 std::string yrange_end_str = read_until (endbracketp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1338 outstr += printrange (yrange_start_str, yrange_end_str) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1339 tok = gptlex ();
6548
ecc8d30fa288 [project @ 2007-04-20 05:31:41 by jwe]
jwe
parents: 6180
diff changeset
1340 if (tok == START_BRACKET && caller == "splot")
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1341 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1342 std::string zrange_start_str = read_until (colonp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1343 std::string zrange_end_str = read_until (endbracketp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1344 outstr += printrange (zrange_start_str, zrange_end_str) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1345 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1346 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1347 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1348 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1349
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1350 if (plottok_or_end_p (tok))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1351 return std::string ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1352 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1353 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1354 std::string file;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1355 plot_line_count++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1356
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1357 std::string plot_expr_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1358 plot_expr_str += std::string (yytext) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1359 plot_expr_str += read_until (plottok_or_end_p, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1360
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1361 int status = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1362 octave_value tmp_data = eval_string (plot_expr_str,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1363 true, status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1364
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1365 if (status != 0 || ! tmp_data.is_defined ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1366 throw gpt_parse_error ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1367
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1368 std::ostringstream tmp_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1369 tmp_data.print_raw (tmp_buf);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1370
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1371 if (tmp_data.is_string ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1372 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1373 file = file_ops::tilde_expand (tmp_data.string_value ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1374 // FIXME -- perhaps should check if the file exists?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1375 outstr += file + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1376 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1377 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1378 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1379 switch (ndim)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1380 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1381 case 2:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1382 file = save_in_tmp_file (tmp_data, ndim);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1383 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1384
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1385 case 3:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1386 file = save_in_tmp_file (tmp_data, ndim,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1387 parametric_plot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1388 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1389
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1390 default:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1391 gripe_2_or_3_dim_plot ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1392 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1393 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1394
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1395 if (file.length () > 0)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1396 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1397 mark_for_deletion (file);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1398 outstr += "'" + file + "' ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1399 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1400 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1401 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1402
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1403 std::string title_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1404 std::string using_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1405 std::string style_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1406 std::string axes_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1407
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1408 bool out = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1409 while (tok && ! out)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1410 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1411 switch (tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1412 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1413 case COMMA:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1414 out = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1415 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1416
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1417 case TITLE:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1418 if (! title_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1419 title_str += handle_title (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1420 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1421 throw gpt_parse_error ("only one title option may be specified");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1422 title_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1423 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1424
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1425 case USING:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1426 if (! using_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1427 using_str += handle_using (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1428 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1429 throw gpt_parse_error ("only one using option may be specified");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1430 using_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1431 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1432
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1433 case WITH:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1434 if (! style_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1435 style_str += handle_style (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1436 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1437 throw gpt_parse_error ("only one style option may be specified");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1438 style_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1439 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1440
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1441 case AXES:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1442 if (! axes_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1443 axes_str += handle_axes (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1444 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1445 throw gpt_parse_error ("only one axes option may be specified");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1446 axes_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1447 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1448
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1449 default:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1450 tok = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1451 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1452 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1453 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1454
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1455 if (! title_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1456 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1457 std::ostringstream tmp_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1458 tmp_buf << Vgnuplot_command_title << " \"line "
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1459 << plot_line_count << "\" ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1460 title_str = tmp_buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1461 title_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1462 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1463
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1464 // Plot parameters have to be output in this order.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1465 if (using_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1466 outstr += using_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1467
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1468 if (axes_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1469 outstr += axes_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1470
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1471 if (title_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1472 outstr += title_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1473
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1474 if (style_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1475 outstr += style_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1476
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1477 if (out)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1478 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1479 // Saw comma on while loop.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1480 outstr += ", ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1481 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1482 gpt_allow_plotkw = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1483 gpt_parens = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1484 gpt_braces = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1485 gpt_brackets = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1486 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1487 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1488 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1489
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1490 outstr += Vgnuplot_command_end;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1491
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1492 return outstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1493 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1494
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1495 // Title has one string expression which is evaluated and printed to the
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1496 // gnuplot command string.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1497
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1498 std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1499 gnuplot::handle_title (int& lasttok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1500 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1501 int tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1502 std::string retstr = Vgnuplot_command_title + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1503 std::string title_expr_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1504
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1505 title_expr_str += read_until (plottok_or_end_p, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1506
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1507 int status;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1508 octave_value tmp_data = eval_string (title_expr_str, true, status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1509
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1510 if (status != 0 || ! tmp_data.is_defined ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1511 throw gpt_parse_error ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1512
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1513 std::ostringstream tmp_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1514 if (tmp_data.is_string ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1515 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1516 tmp_buf << '"';
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1517 tmp_data.print_raw (tmp_buf);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1518 tmp_buf << '"';
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1519 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1520 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1521 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1522 warning ("line title must be a string");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1523 tmp_buf << '"' << "line " << plot_line_count << '"';
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1524 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1525
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1526 retstr += tmp_buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1527
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1528 lasttok = tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1529
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1530 return retstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1531 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1532
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1533 // The static instance of this class is here so that
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1534 // gnuplot::close_all will be called when the .oct file is unloaded.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1535
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1536 class
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1537 gnuplot_X
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1538 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1539 public:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1540 gnuplot_X (void) { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1541 ~gnuplot_X (void) { gnuplot::close_all (); }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1542 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1543
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1544 static gnuplot_X X;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1545
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1546 // -----------------------
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1547 // User-callable functions
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1548 // -----------------------
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1549
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1550 DEFUN_DLD (gnuplot_binary, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1551 "-*- texinfo -*-\n\
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1552 @deftypefn {Loadable Function} {@var{val} =} gnuplot_binary ()\n\
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1553 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_binary (@var{new_val})\n\
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1554 Query or set the name of the program invoked by the plot command.\n\
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1555 The default value @code{\"gnuplot\"}. @xref{Installation}.\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1556 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1557 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1558 octave_value retval = SET_INTERNAL_VARIABLE (gnuplot_binary);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1559
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1560 if (! error_state && args.length () == 1)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1561 gnuplot::set_gnuplot_exe (Vgnuplot_binary);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1562
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1563 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1564 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1565
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1566 DEFUN_DLD (gnuplot_command_plot, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1567 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1568 @deftypefn {Loadable Function} {@var{val} = } gnuplot_command_plot ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1569 @deftypefnx {Loadable Function} {@var{old_val} = } gnuplot_command_plot (@var{new_val})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1570 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1571 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1572 return SET_INTERNAL_VARIABLE (gnuplot_command_plot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1573 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1574
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1575 DEFUN_DLD (gnuplot_command_replot, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1576 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1577 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_replot ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1578 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_replot (@var{new_val})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1579 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1580 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1581 return SET_INTERNAL_VARIABLE (gnuplot_command_replot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1582 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1583
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1584 DEFUN_DLD (gnuplot_command_splot, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1585 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1586 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_splot ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1587 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_splot (@var{new_val})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1588 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1589 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1590 return SET_INTERNAL_VARIABLE (gnuplot_command_splot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1591 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1592
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1593 DEFUN_DLD (gnuplot_command_using, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1594 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1595 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_using ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1596 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_using (@var{new_val})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1597 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1598 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1599 return SET_INTERNAL_VARIABLE (gnuplot_command_using);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1600 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1601
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1602 DEFUN_DLD (gnuplot_command_with, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1603 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1604 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_with ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1605 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_with (@var{new_val})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1606 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1607 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1608 return SET_INTERNAL_VARIABLE (gnuplot_command_with);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1609 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1610
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1611 DEFUN_DLD (gnuplot_command_axes, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1612 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1613 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_axes ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1614 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_axes (@var{new_val})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1615 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1616 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1617 return SET_INTERNAL_VARIABLE (gnuplot_command_axes);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1618 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1619
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1620 DEFUN_DLD (gnuplot_command_title, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1621 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1622 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_title ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1623 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_title (@var{new_val})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1624 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1625 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1626 return SET_INTERNAL_VARIABLE (gnuplot_command_title);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1627 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1628
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1629 DEFUN_DLD (gnuplot_command_end, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1630 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1631 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_end ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1632 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_end (@var{new_val})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1633 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1634 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1635 return SET_INTERNAL_VARIABLE (gnuplot_command_end);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1636 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1637
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1638 DEFUN_DLD (gnuplot_use_title_option, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1639 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1640 @deftypefn {Loadable Function} {@var{val} =} gnuplot_use_title_option ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1641 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_use_title_option (@var{new_val})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1642 If enabled, append @samp{-title \"Figure NN\"} to the gnuplot command.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1643 By default, this feature is enabled if the @code{DISPLAY} environment\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1644 variable is set when Octave starts.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1645 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1646 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1647 return SET_INTERNAL_VARIABLE (gnuplot_use_title_option);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1648 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1649
6030
004037def470 [project @ 2006-10-04 14:54:46 by jwe]
jwe
parents: 6029
diff changeset
1650 DEFUN_DLD (__clear_plot_window__, , ,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1651 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1652 @deftypefn {Loadable Function} {} clearplot\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1653 @deftypefnx {Loadable Function} {} clg\n\
6030
004037def470 [project @ 2006-10-04 14:54:46 by jwe]
jwe
parents: 6029
diff changeset
1654 Clear the plot window and any titles or axis labels.\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1655 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1656 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1657 gnuplot::clear ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1658
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1659 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1660 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1661
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1662 DEFUN_DLD (closeplot, , ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1663 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1664 @deftypefn {Loadable Function} {} closeplot\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1665 Close stream to the @code{gnuplot} subprocess. If you are using X11,\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1666 this will close the plot window.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1667 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1668 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1669 gnuplot::close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1670
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1671 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1672 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1673
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1674 DEFUN_DLD (purge_tmp_files, , ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1675 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1676 @deftypefn {Loadable Function} {} purge_tmp_files\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1677 Delete the temporary files created by the plotting commands.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1678 \n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1679 Octave creates temporary data files for @code{gnuplot} and then sends\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1680 commands to @code{gnuplot} through a pipe. Octave will delete the\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1681 temporary files on exit, but if you are doing a lot of plotting you may\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1682 want to clean up in the middle of a session.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1683 \n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1684 A future version of Octave will eliminate the need to use temporary\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1685 files to hold the plot data.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1686 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1687 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1688 gnuplot::cleanup_tmp_files ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1689
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1690 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1691 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1692
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1693 DEFUN_DLD (__gnuplot_raw__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1694 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1695 @deftypefn {Loadable Function} {} __gnuplot_raw__ (@var{string})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1696 Send @var{string} directly to gnuplot subprocess.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1697 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1698 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1699 if (args.length () == 1 && args(0).is_string ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1700 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1701 std::string cmd = args(0).string_value ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1702
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1703 gnuplot::send_raw (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1704 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1705 else
5823
080c08b192d8 [project @ 2006-05-19 05:32:17 by jwe]
jwe
parents: 5796
diff changeset
1706 print_usage ();
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1707
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1708 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1709 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1710
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1711 DEFUN_DLD (__gnuplot_send_inline_data__, args, ,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1712 "-*- texinfo -*-\n\
6180
133e7a4a5565 [project @ 2006-11-17 21:09:34 by jwe]
jwe
parents: 6171
diff changeset
1713 @deftypefn {Loadable Function} {} __gnuplot_send_inline_data__ (@var{data}, @var{ndim}, @var{parametric})\n\
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1714 Send @var{val} to gnuplot subprocess as inline data.\n\
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1715 @end deftypefn")
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1716 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1717 octave_value retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1718
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1719 int nargin = args.length ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1720
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1721 if (nargin > 0 && nargin < 4)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1722 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1723 int ndim = 2;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1724 bool parametric = false;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1725
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1726 if (nargin > 1)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1727 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1728 ndim = args(1).int_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1729
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1730 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1731 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1732 if (nargin > 2)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1733 parametric = args(2).bool_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1734 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1735 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1736
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1737 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1738 gnuplot::send_inline_data (args(0), ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1739 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1740 else
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1741 print_usage ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1742
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1743 return retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1744 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1745
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1746 DEFUN_DLD (__gnuplot_set__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1747 "-*- texinfo -*-\n\
5832
5e41e06f6a78 [project @ 2006-05-26 21:41:32 by jwe]
jwe
parents: 5823
diff changeset
1748 @deffn {Loadable Function} __gnuplot_set__ options\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1749 Set plotting options for gnuplot\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1750 @end deffn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1751 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1752 string_vector argv = args.make_argv ("set");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1753
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1754 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1755 gnuplot::set (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1756
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1757 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1758 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1759
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1760 DEFUN_DLD (__gnuplot_show__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1761 "-*- texinfo -*-\n\
5832
5e41e06f6a78 [project @ 2006-05-26 21:41:32 by jwe]
jwe
parents: 5823
diff changeset
1762 @deffn {Loadable Function} __gnuplot_show__ options\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1763 Show plotting options.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1764 @end deffn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1765 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1766 string_vector argv = args.make_argv ("show");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1767
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1768 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1769 gnuplot::show (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1770
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1771 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1772 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1773
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1774 DEFUN_DLD (__gnuplot_plot__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1775 "Plot with gnuplot.\n")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1776 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1777 string_vector argv = args.make_argv ("plot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1778
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1779 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1780 gnuplot::plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1781
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1782 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1783 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1784
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1785 DEFUN_DLD (__gnuplot_splot__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1786 "Plot with gnuplot.\n")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1787 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1788 string_vector argv = args.make_argv ("splot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1789
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1790 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1791 gnuplot::plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1792
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1793 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1794 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1795
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1796 DEFUN_DLD (__gnuplot_replot__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1797 "Plot with gnuplot.\n")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1798 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1799 string_vector argv = args.make_argv ("replot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1800
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1801 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1802 gnuplot::plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1803
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1804 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1805 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1806
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1807 /*
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1808 ;;; Local Variables: ***
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1809 ;;; mode: C++ ***
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1810 ;;; End: ***
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1811 */