annotate src/DLD-FUNCTIONS/__gnuplot_raw__.l @ 7138:f70121606be5

[project @ 2007-11-09 02:06:54 by jwe]
author jwe
date Fri, 09 Nov 2007 02:06:55 +0000
parents 373c39904877
children 9dd8e2c98bd2
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
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
692 #define WARN_OBSOLETE(nm) \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
693 do \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
694 { \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
695 static warned = false; \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
696 \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
697 if (! warned) \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
698 { \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
699 warning (nm ## ": this function is obsolete and will be removed from a future version of Octave"); \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
700 \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
701 warned = true; \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
702 } \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
703 } \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
704 while (0)
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
705
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
706 DEFUN_DLD (__gnuplot_save_data__, args, ,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
707 "-*- texinfo -*-\n\
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
708 @deftypefn {Loadable Function} {} __gnuplot_save_data__ (@var{data}, @var{ndim}, @var{parametric})\n\
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
709 @strong{This function is obsolete and will be removed from a future version\n\
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
710 of Octave.}\n\
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
711 @end deftypefn")
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
712 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
713 WARN_OBSOLETE ("__gnuplot_save_data__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
714
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
715 octave_value retval;
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 int nargin = args.length ();
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 if (nargin > 0 && nargin < 4)
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 int ndim = 2;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
722 bool parametric = false;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
723
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
724 if (nargin > 1)
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 ndim = args(1).int_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
727
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
728 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
729 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
730 if (nargin > 2)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
731 parametric = args(2).bool_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
732 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
733 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
734
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
735 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
736 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
737 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
738
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
739 mark_for_deletion (file);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
740
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
741 retval = file;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
742 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
743 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
744 else
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
745 print_usage ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
746
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
747 return retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
748 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
749
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
750 static int
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
751 get_current_figure (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
752 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
753 int retval = 1;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
754
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
755 octave_value cf = get_global_value ("__current_figure__", true);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
756
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
757 if (cf.is_defined ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
758 retval = cf.int_value ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
759 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
760 set_global_value ("__current_figure__", retval);
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 return retval;
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
765 class
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
766 gnuplot
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 protected:
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 gnuplot (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
771 : plot_line_count (0), parametric_plot (false),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
772 use_title_option (Vgnuplot_use_title_option),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
773 gnuplot_exe (Vgnuplot_binary),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
774 gnuplot_terminal_type (), plot_stream () { }
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 public:
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 ~gnuplot (void) { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
779
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
780 static bool have_instance (void);
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 bool ensure_instance (void);
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 static bool ensure_plot_stream (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
785
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
786 static void open (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
787
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
788 static void close (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
789
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
790 static void close_all (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
791
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
792 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
793
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
794 static void send (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
795 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
796 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
797 instance->do_send (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
798 }
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 static void send_raw (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
801 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
802 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
803 instance->do_send_raw (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
804 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
805
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
806 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
807 bool parametric)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
808 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
809 if (ensure_plot_stream ())
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
810 instance->do_send_inline_data (val, ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
811 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
812
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
813 static void clear (void)
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_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
816 instance->do_clear ();
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 (const string_vector& argv)
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_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
822 instance->do_set (argv);
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 static void show (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
826 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
827 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
828 instance->do_show (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
829 }
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 static void set_gnuplot_exe (const std::string& exe)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
832 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
833 if (ensure_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
834 instance->do_set_gnuplot_exe (exe);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
835 }
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 void set_gnuplot_use_title_option (bool opt)
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 if (ensure_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
840 instance->do_set_gnuplot_use_title_option (opt);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
841 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
842
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
843 // FIXME -- should only remove tmp files associated with
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
844 // gnuplot?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
845 static void cleanup_tmp_files (void) { ::cleanup_tmp_files (); }
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 static void plot (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
848 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
849 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
850 instance->do_plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
851 }
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 private:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
854
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
855 static gnuplot *instance;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
856
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
857 static std::map<int, gnuplot *> instance_map;
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 // The number of lines we've plotted so far.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
860 int plot_line_count;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
861
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
862 // 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
863 bool parametric_plot;
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 // Should we append '-title "TITLE"' to the gnuplot command?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
866 bool use_title_option;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
867
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
868 // The executable program to run.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
869 std::string gnuplot_exe;
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 // The gnuplot terminal type.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
872 std::string gnuplot_terminal_type;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
873
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
874 // Pipe to gnuplot.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
875 oprocstream *plot_stream;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
876
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
877 pid_t pid (void) const;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
878
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
879 static gnuplot *lookup_by_pid (pid_t pid);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
880
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
881 void do_open (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
882
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
883 void do_close (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
884
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
885 void delete_plot_stream (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
886
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
887 void reset_plot_stream (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
888
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
889 void do_send (const std::string& cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
890
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
891 void do_send_raw (const std::string& cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
892
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
893 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
894 bool parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
895
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
896 void do_clear (void);
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 void do_set (const string_vector& argv);
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 void do_show (const string_vector& argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
901
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
902 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
903
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
904 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
905
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
906 void do_plot (const string_vector& argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
907
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
908 std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
909 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
910
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
911 std::string handle_title (int& lasttok);
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 gnuplot *gnuplot::instance = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
915
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
916 std::map<int, gnuplot *> gnuplot::instance_map;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
917
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
918 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
919 gnuplot::have_instance (void)
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 int current_figure = get_current_figure ();
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 if (instance_map.find (current_figure) != instance_map.end ())
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 instance = instance_map[current_figure];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
926 return true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
927 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
928 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
929 return false;
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
932 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
933 gnuplot::ensure_instance (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
934 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
935 if (! have_instance ())
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 instance = new gnuplot ();
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 if (! instance)
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 ::error ("unable to create gnuplot object!");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
942
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
943 return false;
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 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
946 instance_map[get_current_figure ()] = instance;
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
949 return true;
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
952 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
953 gnuplot::ensure_plot_stream (void)
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 if (ensure_instance ())
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 instance->do_open ();
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 if (error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
960 return false;
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
963 return true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
964 }
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 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
967 gnuplot::close (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
968 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
969 if (have_instance ())
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 instance->do_close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
972
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
973 instance_map.erase (get_current_figure ());
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 }
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 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
978 gnuplot::close_all (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
979 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
980 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
981 p != instance_map.end ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
982 p++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
983 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
984 gnuplot *elt = p->second;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
985
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
986 elt->do_close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
987 }
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
990 pid_t
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
991 gnuplot::pid (void) const
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
992 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
993 return plot_stream ? plot_stream->pid () : -1;
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 gnuplot *
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
997 gnuplot::lookup_by_pid (pid_t pid)
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 gnuplot *retval = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1000
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1001 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
1002 p != instance_map.end ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1003 p++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1004 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1005 gnuplot *elt = p->second;
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 (elt && elt->pid () == pid)
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 retval = elt;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1010 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1011 }
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1014 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1015 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1016
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1017 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1018 gnuplot::do_open (void)
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 static bool initialized = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1021
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1022 if (plot_stream && ! *plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1023 do_close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1024
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1025 if (! plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1026 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1027 initialized = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1028
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1029 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1030
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1031 std::string cmd;
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 (gnuplot_exe.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1034 cmd = "gnuplot";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1035 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1036 cmd = "\"" + gnuplot_exe + "\"";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1037
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1038 // 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
1039 // 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
1040
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1041 #if defined (HAVE_POSIX_SIGNALS)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1042 sigset_t nset, oset;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1043 sigemptyset (&nset);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1044 sigaddset (&nset, SIGINT);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1045 sigprocmask (SIG_BLOCK, &nset, &oset);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1046 #else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1047 volatile octave_interrupt_handler old_interrupt_handler
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1048 = octave_ignore_interrupts ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1049 #endif
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 if (use_title_option)
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 std::ostringstream buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1054
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1055 buf << cmd << " -title \"Figure " << get_current_figure () << "\"";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1056
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1057 cmd = buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1058 }
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 plot_stream = new oprocstream (cmd.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1061
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1062 if (plot_stream && *plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1063 octave_child_list::insert (plot_stream->pid (),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1064 plot_stream_event_handler);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1065 else
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 delete_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1068
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1069 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
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 #if defined (HAVE_POSIX_SIGNALS)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1073 sigprocmask (SIG_SETMASK, &oset, 0);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1074 #else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1075 octave_set_interrupt_handler (old_interrupt_handler);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1076 #endif
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1079 if (! error_state && plot_stream && *plot_stream && ! initialized)
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 initialized = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1082
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1083 do_send_raw ("set style data lines\n");
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 if (! gnuplot_terminal_type.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1086 do_send_raw ("set term " + gnuplot_terminal_type
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1087 + Vgnuplot_command_end + "\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1088 }
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::delete_plot_stream (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 do_send_raw ("\nquit\n");
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 delete plot_stream;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1097 plot_stream = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1098 }
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 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1101 gnuplot::reset_plot_stream (void)
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 delete_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1104
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1105 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1106 parametric_plot = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1107 }
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 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1110 gnuplot::do_close (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1111 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1112 if (plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1113 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1114 octave_child_list::remove (plot_stream->pid ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1115
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1116 delete_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1117 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1118
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1119 plot_line_count = 0;
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1122 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1123 gnuplot::plot_stream_event_handler (pid_t pid, int status)
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 bool retval = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1126
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1127 if (pid > 0)
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 if (WIFEXITED (status) || WIFSIGNALLED (status))
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 gnuplot *plotter = gnuplot::lookup_by_pid (pid);
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 // 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
1134 // process from the child list if the process died
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1135 // unexpectedly. If do_close is responsible for
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1136 // 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
1137 // need to do anything.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1138
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1139 if (plotter)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1140 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1141 plotter->reset_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1142
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1143 warning ("connection to external plotter (pid = %d) lost --", pid);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1144 // Request removal of this PID from the list of child
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1145 // processes.
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 retval = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1148 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1149 }
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1152 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1153 }
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 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1156 gnuplot::do_send (const std::string& cmd)
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 int replot_len = Vgnuplot_command_replot.length ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1159
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1160 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
1161
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1162 if (! (plot_line_count == 0 && is_replot))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1163 do_send_raw (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1164 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1165
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1166 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1167 gnuplot::do_send_raw (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1168 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1169 if (plot_stream && *plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1170 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1171 *plot_stream << cmd;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1172
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1173 plot_stream->flush ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1174 }
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1177 void
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1178 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
1179 bool parametric)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1180 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1181 if (plot_stream && *plot_stream)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1182 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1183 write_inline_data (*plot_stream, val, ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1184
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1185 plot_stream->flush ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1186 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1187 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1188
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1189 void
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1190 gnuplot::do_clear (void)
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 do_send_raw ("clear\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1193
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1194 // FIXME -- instead of just clearing these things, it would
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1195 // 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
1196 // state.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1197
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1198 do_send_raw ("set title\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1199 do_send_raw ("set xlabel\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1200 do_send_raw ("set ylabel\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1201 do_send_raw ("set nogrid\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1202 do_send_raw ("set nolabel\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1203
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1204 // 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
1205 // has been issued.
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 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1208 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1209
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1210 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1211 gnuplot::do_set (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1212 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1213 int argc = argv.length ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1214
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1215 std::ostringstream plot_buf;
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 if (argc > 1)
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 if (almost_match ("parametric", argv[1], 3))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1220 parametric_plot = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1221 else if (almost_match ("noparametric", argv[1], 5))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1222 parametric_plot = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1223 else if (almost_match ("term", argv[1], 1))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1224 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1225 gnuplot_terminal_type = "";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1226 std::ostringstream buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1227 int i;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1228 for (i = 2; i < argc-1; i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1229 buf << argv[i] << " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1230 if (i < argc)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1231 buf << argv[i];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1232 buf << Vgnuplot_command_end;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1233 gnuplot_terminal_type = buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1234 }
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1237 int i;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1238 for (i = 0; i < argc-1; i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1239 plot_buf << argv[i] << " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1240
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_raw (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_show (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 int argc = argv.length ();
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 std::ostringstream plot_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1255
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1256 int i;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1257 for (i = 0; i < argc-1; i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1258 plot_buf << argv[i] << " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1259 if (i < argc)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1260 plot_buf << argv[i];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1261
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1262 plot_buf << Vgnuplot_command_end;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1263
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1264 do_send (plot_buf.str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1265 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1266
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1267 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1268 gnuplot::do_plot (const string_vector& argv)
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 std::string s;
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 for (int i = 1; i < argv.length (); i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1273 s += argv[i] + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1274
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1275 try
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1276 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1277 std::string cmd = makeplot (argv[0], s);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1278
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1279 do_send (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1280 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1281 catch (gpt_parse_error& e)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1282 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1283 if (e.msg.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1284 error ("could not parse plot command");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1285 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1286 error (e.msg.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1287 }
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1290 // 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
1291
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1292 std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1293 gnuplot::makeplot (std::string caller, std::string args)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1294 throw (gpt_parse_error)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1295 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1296 std::string retval;
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 YY_BUFFER_STATE bstate;
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 bstate = yy_scan_string (args.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1301 yy_switch_to_buffer (bstate);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1302 std::string outstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1303 int ndim = 2;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1304
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1305 if (caller == "replot")
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 ndim = 1;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1308 outstr += Vgnuplot_command_replot + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1309 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1310 else if (caller == "plot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1311 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1312 ndim = 2;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1313 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1314 outstr += Vgnuplot_command_plot + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1315 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1316 else if (caller == "splot")
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 ndim = 3;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1319 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1320 outstr += Vgnuplot_command_splot + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1321 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1322 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1323 throw gpt_parse_error ("unknown plot command");
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 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1326 gpt_allow_plotkw = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1327 gpt_parens = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1328 gpt_braces = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1329 gpt_brackets = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1330
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1331 int tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1332 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1333 if (plottok_or_end_p (tok) && caller != "replot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1334 throw gpt_parse_error ("must have something to plot");
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 while (tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1337 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1338 bool title_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1339 bool using_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1340 bool style_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1341 bool axes_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1342
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1343 if (tok == START_BRACKET)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1344 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1345 if (caller == "replot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1346 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
1347
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1348 std::string xrange_start_str = read_until (colonp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1349 std::string xrange_end_str = read_until (endbracketp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1350 outstr += printrange (xrange_start_str, xrange_end_str) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1351 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1352 if (tok == START_BRACKET)
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 yrange_start_str = read_until (colonp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1355 std::string yrange_end_str = read_until (endbracketp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1356 outstr += printrange (yrange_start_str, yrange_end_str) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1357 tok = gptlex ();
6548
ecc8d30fa288 [project @ 2007-04-20 05:31:41 by jwe]
jwe
parents: 6180
diff changeset
1358 if (tok == START_BRACKET && caller == "splot")
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1359 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1360 std::string zrange_start_str = read_until (colonp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1361 std::string zrange_end_str = read_until (endbracketp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1362 outstr += printrange (zrange_start_str, zrange_end_str) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1363 tok = gptlex ();
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 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1366 }
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 if (plottok_or_end_p (tok))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1369 return std::string ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1370 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1371 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1372 std::string file;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1373 plot_line_count++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1374
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1375 std::string plot_expr_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1376 plot_expr_str += std::string (yytext) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1377 plot_expr_str += read_until (plottok_or_end_p, tok);
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 int status = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1380 octave_value tmp_data = eval_string (plot_expr_str,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1381 true, status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1382
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1383 if (status != 0 || ! tmp_data.is_defined ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1384 throw gpt_parse_error ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1385
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1386 std::ostringstream tmp_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1387 tmp_data.print_raw (tmp_buf);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1388
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1389 if (tmp_data.is_string ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1390 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1391 file = file_ops::tilde_expand (tmp_data.string_value ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1392 // FIXME -- perhaps should check if the file exists?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1393 outstr += file + " ";
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 else
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 switch (ndim)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1398 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1399 case 2:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1400 file = save_in_tmp_file (tmp_data, ndim);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1401 break;
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 case 3:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1404 file = save_in_tmp_file (tmp_data, ndim,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1405 parametric_plot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1406 break;
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 default:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1409 gripe_2_or_3_dim_plot ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1410 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1411 }
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 if (file.length () > 0)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1414 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1415 mark_for_deletion (file);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1416 outstr += "'" + file + "' ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1417 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1418 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1419 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1420
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1421 std::string title_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1422 std::string using_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1423 std::string style_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1424 std::string axes_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1425
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1426 bool out = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1427 while (tok && ! out)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1428 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1429 switch (tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1430 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1431 case COMMA:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1432 out = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1433 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1434
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1435 case TITLE:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1436 if (! title_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1437 title_str += handle_title (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1438 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1439 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
1440 title_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1441 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1442
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1443 case USING:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1444 if (! using_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1445 using_str += handle_using (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1446 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1447 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
1448 using_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1449 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1450
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1451 case WITH:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1452 if (! style_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1453 style_str += handle_style (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1454 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1455 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
1456 style_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1457 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1458
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1459 case AXES:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1460 if (! axes_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1461 axes_str += handle_axes (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1462 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1463 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
1464 axes_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1465 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1466
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1467 default:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1468 tok = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1469 break;
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 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1472
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1473 if (! title_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1474 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1475 std::ostringstream tmp_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1476 tmp_buf << Vgnuplot_command_title << " \"line "
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1477 << plot_line_count << "\" ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1478 title_str = tmp_buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1479 title_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1480 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1481
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1482 // Plot parameters have to be output in this order.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1483 if (using_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1484 outstr += using_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1485
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1486 if (axes_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1487 outstr += axes_str;
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 if (title_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1490 outstr += title_str;
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 if (style_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1493 outstr += style_str;
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 if (out)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1496 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1497 // Saw comma on while loop.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1498 outstr += ", ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1499 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1500 gpt_allow_plotkw = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1501 gpt_parens = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1502 gpt_braces = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1503 gpt_brackets = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1504 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1505 }
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1508 outstr += Vgnuplot_command_end;
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 return outstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1511 }
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 // 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
1514 // gnuplot command 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 std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1517 gnuplot::handle_title (int& lasttok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1518 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1519 int tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1520 std::string retstr = Vgnuplot_command_title + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1521 std::string title_expr_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1522
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1523 title_expr_str += read_until (plottok_or_end_p, tok);
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 int status;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1526 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
1527
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1528 if (status != 0 || ! tmp_data.is_defined ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1529 throw gpt_parse_error ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1530
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1531 std::ostringstream tmp_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1532 if (tmp_data.is_string ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1533 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1534 tmp_buf << '"';
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1535 tmp_data.print_raw (tmp_buf);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1536 tmp_buf << '"';
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1537 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1538 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1539 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1540 warning ("line title must be a string");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1541 tmp_buf << '"' << "line " << plot_line_count << '"';
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 retstr += tmp_buf.str ();
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 lasttok = tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1547
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1548 return retstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1549 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1550
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1551 // The static instance of this class is here so that
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1552 // 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
1553
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1554 class
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1555 gnuplot_X
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1556 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1557 public:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1558 gnuplot_X (void) { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1559 ~gnuplot_X (void) { gnuplot::close_all (); }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1560 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1561
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1562 static gnuplot_X X;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1563
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 // User-callable functions
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1566 // -----------------------
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1567
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1568 DEFUN_DLD (gnuplot_binary, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1569 "-*- texinfo -*-\n\
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1570 @deftypefn {Loadable Function} {@var{val} =} gnuplot_binary ()\n\
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1571 @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
1572 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
1573 The default value @code{\"gnuplot\"}. @xref{Installation}.\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1574 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1575 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1576 octave_value retval = SET_INTERNAL_VARIABLE (gnuplot_binary);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1577
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1578 if (! error_state && args.length () == 1)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1579 gnuplot::set_gnuplot_exe (Vgnuplot_binary);
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 retval;
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_plot, 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_plot ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1587 @deftypefnx {Loadable Function} {@var{old_val} = } gnuplot_command_plot (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1588 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1589 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1590 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1591 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1592 WARN_OBSOLETE ("gnuplot_command_plot");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1593
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1594 return SET_INTERNAL_VARIABLE (gnuplot_command_plot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1595 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1596
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1597 DEFUN_DLD (gnuplot_command_replot, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1598 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1599 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_replot ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1600 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_replot (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1601 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1602 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1603 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1604 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1605 WARN_OBSOLETE ("gnuplot_command_replot");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1606
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1607 return SET_INTERNAL_VARIABLE (gnuplot_command_replot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1608 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1609
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1610 DEFUN_DLD (gnuplot_command_splot, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1611 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1612 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_splot ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1613 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_splot (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1614 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1615 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1616 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1617 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1618 WARN_OBSOLETE ("gnuplot_command_splot");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1619
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1620 return SET_INTERNAL_VARIABLE (gnuplot_command_splot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1621 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1622
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1623 DEFUN_DLD (gnuplot_command_using, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1624 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1625 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_using ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1626 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_using (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1627 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1628 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1629 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1630 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1631 WARN_OBSOLETE ("gnuplot_command_using");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1632
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1633 return SET_INTERNAL_VARIABLE (gnuplot_command_using);
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
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1636 DEFUN_DLD (gnuplot_command_with, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1637 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1638 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_with ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1639 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_with (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1640 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1641 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1642 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1643 WARN_OBSOLETE ("gnuplot_command_with");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1644
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1645 return SET_INTERNAL_VARIABLE (gnuplot_command_with);
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
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1648 DEFUN_DLD (gnuplot_command_axes, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1649 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1650 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_axes ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1651 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_axes (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1652 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1653 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1654 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1655 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1656 WARN_OBSOLETE ("gnuplot_command_axes");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1657
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1658 return SET_INTERNAL_VARIABLE (gnuplot_command_axes);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1659 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1660
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1661 DEFUN_DLD (gnuplot_command_title, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1662 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1663 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_title ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1664 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_title (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1665 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1666 of Octave.}\n\
5790
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 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1669 WARN_OBSOLETE ("gnuplot_command_title");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1670
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1671 return SET_INTERNAL_VARIABLE (gnuplot_command_title);
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
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1674 DEFUN_DLD (gnuplot_command_end, args, nargout,
5790
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} {@var{val} =} gnuplot_command_end ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1677 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_end (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1678 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1679 of Octave.}\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1680 \n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1681 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1682 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1683 WARN_OBSOLETE ("gnuplot_command_end");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1684
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1685 return SET_INTERNAL_VARIABLE (gnuplot_command_end);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1686 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1687
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1688 DEFUN_DLD (gnuplot_use_title_option, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1689 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1690 @deftypefn {Loadable Function} {@var{val} =} gnuplot_use_title_option ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1691 @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
1692 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
1693 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
1694 variable is set when Octave starts.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1695 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1696 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1697 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1698 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1699 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1700 WARN_OBSOLETE ("gnuplot_command_use_title_option");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1701
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1702 return SET_INTERNAL_VARIABLE (gnuplot_use_title_option);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1703 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1704
6030
004037def470 [project @ 2006-10-04 14:54:46 by jwe]
jwe
parents: 6029
diff changeset
1705 DEFUN_DLD (__clear_plot_window__, , ,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1706 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1707 @deftypefn {Loadable Function} {} clearplot\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1708 @deftypefnx {Loadable Function} {} clg\n\
6030
004037def470 [project @ 2006-10-04 14:54:46 by jwe]
jwe
parents: 6029
diff changeset
1709 Clear the plot window and any titles or axis labels.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1710 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1711 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1712 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1713 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1714 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1715 WARN_OBSOLETE ("__clear_plot_window__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1716
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1717 gnuplot::clear ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1718
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1719 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1720 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1721
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1722 DEFUN_DLD (closeplot, , ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1723 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1724 @deftypefn {Loadable Function} {} closeplot\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1725 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1726 of Octave.}\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1727 \n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1728 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
1729 this will close the plot window.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1730 @seealso{close}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1731 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1732 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1733 WARN_OBSOLETE ("closeplot");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1734
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1735 gnuplot::close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1736
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1737 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1738 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1739
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1740 DEFUN_DLD (purge_tmp_files, , ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1741 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1742 @deftypefn {Loadable Function} {} purge_tmp_files\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1743 Delete the temporary files created by the plotting commands.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1744 \n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1745 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
1746 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
1747 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
1748 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
1749 \n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1750 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1751 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1752 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1753 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1754 WARN_OBSOLETE ("purge_tmp_files");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1755
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1756 gnuplot::cleanup_tmp_files ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1757
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1758 return octave_value_list ();
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
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1761 DEFUN_DLD (__gnuplot_raw__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1762 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1763 @deftypefn {Loadable Function} {} __gnuplot_raw__ (@var{string})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1764 Send @var{string} directly to gnuplot subprocess.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1765 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1766 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1767 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1768 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1769 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1770 WARN_OBSOLETE ("__gnuplot_raw__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1771
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1772 if (args.length () == 1 && args(0).is_string ())
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 std::string cmd = args(0).string_value ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1775
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1776 gnuplot::send_raw (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1777 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1778 else
5823
080c08b192d8 [project @ 2006-05-19 05:32:17 by jwe]
jwe
parents: 5796
diff changeset
1779 print_usage ();
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1780
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1781 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1782 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1783
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1784 DEFUN_DLD (__gnuplot_send_inline_data__, args, ,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1785 "-*- texinfo -*-\n\
6180
133e7a4a5565 [project @ 2006-11-17 21:09:34 by jwe]
jwe
parents: 6171
diff changeset
1786 @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
1787 Send @var{val} to gnuplot subprocess as inline data.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1788 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1789 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1790 of Octave.}\n\
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1791 @end deftypefn")
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1792 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1793 WARN_OBSOLETE ("__gnuplot_send_inline_data__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1794
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1795 octave_value retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1796
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1797 int nargin = args.length ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1798
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1799 if (nargin > 0 && nargin < 4)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1800 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1801 int ndim = 2;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1802 bool parametric = false;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1803
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1804 if (nargin > 1)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1805 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1806 ndim = args(1).int_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1807
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1808 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1809 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1810 if (nargin > 2)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1811 parametric = args(2).bool_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1812 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1813 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1814
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1815 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1816 gnuplot::send_inline_data (args(0), ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1817 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1818 else
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1819 print_usage ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1820
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1821 return retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1822 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1823
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1824 DEFUN_DLD (__gnuplot_set__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1825 "-*- texinfo -*-\n\
5832
5e41e06f6a78 [project @ 2006-05-26 21:41:32 by jwe]
jwe
parents: 5823
diff changeset
1826 @deffn {Loadable Function} __gnuplot_set__ options\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1827 Set plotting options for gnuplot\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1828 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1829 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1830 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1831 @end deffn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1832 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1833 WARN_OBSOLETE ("__gnuplot_set__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1834
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1835 string_vector argv = args.make_argv ("set");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1836
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1837 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1838 gnuplot::set (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1839
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1840 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1841 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1842
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1843 DEFUN_DLD (__gnuplot_show__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1844 "-*- texinfo -*-\n\
5832
5e41e06f6a78 [project @ 2006-05-26 21:41:32 by jwe]
jwe
parents: 5823
diff changeset
1845 @deffn {Loadable Function} __gnuplot_show__ options\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1846 Show plotting options.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1847 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1848 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1849 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1850 @end deffn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1851 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1852 WARN_OBSOLETE ("__gnuplot_show__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1853
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1854 string_vector argv = args.make_argv ("show");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1855
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1856 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1857 gnuplot::show (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1858
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1859 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1860 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1861
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1862 DEFUN_DLD (__gnuplot_plot__, args, ,
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1863 "-*- texinfo -*-\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1864 Plot with gnuplot.\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1865 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1866 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1867 of Octave.}")
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1868 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1869 WARN_OBSOLETE ("__gnuplot_plot__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1870
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1871 string_vector argv = args.make_argv ("plot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1872
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1873 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1874 gnuplot::plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1875
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1876 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1877 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1878
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1879 DEFUN_DLD (__gnuplot_splot__, args, ,
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1880 "-*- texinfo -*-\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1881 Plot with gnuplot.\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1882 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1883 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1884 of Octave.}")
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1885 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1886 WARN_OBSOLETE ("__gnuplot_splot__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1887
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1888 string_vector argv = args.make_argv ("splot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1889
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1890 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1891 gnuplot::plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1892
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1893 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1894 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1895
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1896 DEFUN_DLD (__gnuplot_replot__, args, ,
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1897 "-*- texinfo -*-\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1898 Plot with gnuplot.\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1899 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1900 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1901 of Octave.}")
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1902 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1903 WARN_OBSOLETE ("__gnuplot_replot__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1904
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1905 string_vector argv = args.make_argv ("replot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1906
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1907 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1908 gnuplot::plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1909
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1910 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1911 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1912
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1913 /*
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1914 ;;; Local Variables: ***
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1915 ;;; mode: C++ ***
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1916 ;;; End: ***
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1917 */