1 /***************************************************************************
2  * exec_1d.cpp is part of Math Graphic Library
3  * Copyright (C) 2007-2016 Alexey Balakin <mathgl.abalakin@gmail.ru>       *
4  *                                                                         *
5  *   This program is free software; you can redistribute it and/or modify  *
6  *   it under the terms of the GNU Lesser General Public License  as       *
7  *   published by the Free Software Foundation; either version 3 of the    *
8  *   License, or (at your option) any later version.                       *
9  *                                                                         *
10  *   This program is distributed in the hope that it will be useful,       *
11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13  *   GNU General Public License for more details.                          *
14  *                                                                         *
15  *   You should have received a copy of the GNU Lesser General Public     *
16  *   License along with this program; if not, write to the                 *
17  *   Free Software Foundation, Inc.,                                       *
18  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19  ***************************************************************************/
20 #ifdef WIN32
21 #include <io.h>
22 #include <direct.h>
23 #else
24 #include <unistd.h>
25 #endif
26 
27 #include "mgl2/base.h"
28 #include "mgl2/parser.h"
29 wchar_t *mgl_str_copy(const char *s);
30 //-----------------------------------------------------------------------------
31 //	1D
32 //-----------------------------------------------------------------------------
mgls_area(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)33 int static mgls_area(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
34 {
35 	int res=0;
36 	if(!strcmp(k,"d"))	gr->Area(*(a[0].d),"",opt);
37 	else if(!strcmp(k,"ds"))	gr->Area(*(a[0].d),a[1].s.s,opt);
38 	else if(!strcmp(k,"dd"))	gr->Area(*(a[0].d),*(a[1].d),"",opt);
39 	else if(!strcmp(k,"dds"))	gr->Area(*(a[0].d),*(a[1].d),a[2].s.s,opt);
40 	else if(!strcmp(k,"ddd"))	gr->Area(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
41 	else if(!strcmp(k,"ddds"))	gr->Area(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
42 	else res = 1;
43 	return res;
44 }
45 //-----------------------------------------------------------------------------
mgls_axial(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)46 int static mgls_axial(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
47 {
48 	int res=0;
49 	if(!strcmp(k,"d"))	gr->Axial(*(a[0].d),"",opt);
50 	else if(!strcmp(k,"ds"))	gr->Axial(*(a[0].d),a[1].s.s,opt);
51 	else if(!strcmp(k,"ddd"))	gr->Axial(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
52 	else if(!strcmp(k,"ddds"))	gr->Axial(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
53 	else res = 1;
54 	return res;
55 }
56 //-----------------------------------------------------------------------------
mgls_bars(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)57 int static mgls_bars(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
58 {
59 	int res=0;
60 	if(!strcmp(k,"d"))	gr->Bars(*(a[0].d), "",opt);
61 	else if(!strcmp(k,"ds"))	gr->Bars(*(a[0].d), a[1].s.s,opt);
62 	else if(!strcmp(k,"dd"))	gr->Bars(*(a[0].d), *(a[1].d), "",opt);
63 	else if(!strcmp(k,"dds"))	gr->Bars(*(a[0].d), *(a[1].d), a[2].s.s,opt);
64 	else if(!strcmp(k,"ddd")) 	gr->Bars(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
65 	else if(!strcmp(k,"ddds"))	gr->Bars(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
66 	else res = 1;
67 	return res;
68 }
69 //-----------------------------------------------------------------------------
mgls_barh(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)70 int static mgls_barh(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
71 {
72 	int res=0;
73 	if(!strcmp(k,"d"))	gr->Barh(*(a[0].d), "",opt);
74 	else if(!strcmp(k,"ds"))	gr->Barh(*(a[0].d), a[1].s.s,opt);
75 	else if(!strcmp(k,"dd"))	gr->Barh(*(a[0].d), *(a[1].d), "",opt);
76 	else if(!strcmp(k,"dds"))	gr->Barh(*(a[0].d), *(a[1].d), a[2].s.s,opt);
77 	else res = 1;
78 	return res;
79 }
80 //-----------------------------------------------------------------------------
mgls_bifurcation(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)81 int static mgls_bifurcation(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
82 {
83 	int res=0;
84 	if(!strcmp(k,"nd"))	gr->Bifurcation(a[0].v,*(a[1].d),"",opt);
85 	else if(!strcmp(k,"nds"))	gr->Bifurcation(a[0].v,*(a[1].d),a[2].s.s,opt);
86 	else if(!strcmp(k,"ns"))	gr->Bifurcation(a[0].v,a[1].s.s,"",opt);
87 	else if(!strcmp(k,"nss"))	gr->Bifurcation(a[0].v,a[1].s.s,a[2].s.s,opt);
88 	else res = 1;
89 	return res;
90 }
91 //-----------------------------------------------------------------------------
mgls_boxplot(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)92 int static mgls_boxplot(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
93 {
94 	int res=0;
95 	if(!strcmp(k,"d"))	gr->BoxPlot(*(a[0].d),"",opt);
96 	else if(!strcmp(k,"ds"))	gr->BoxPlot(*(a[0].d),a[1].s.s,opt);
97 	else if(!strcmp(k,"dd"))	gr->BoxPlot(*(a[0].d),*(a[1].d),"",opt);
98 	else if(!strcmp(k,"dds"))	gr->BoxPlot(*(a[0].d),*(a[1].d),a[2].s.s,opt);
99 	else res = 1;
100 	return res;
101 }
102 //-----------------------------------------------------------------------------
mgls_candle(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)103 int static mgls_candle(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
104 {
105 	int res=0;
106 	if(!strcmp(k,"d"))	gr->Candle(*(a[0].d),"",opt);
107 	else if(!strcmp(k,"ds"))	gr->Candle(*(a[0].d),a[1].s.s,opt);
108 	else if(!strcmp(k,"dd"))	gr->Candle(*(a[0].d),*(a[1].d),"",opt);
109 	else if(!strcmp(k,"dds"))	gr->Candle(*(a[0].d),*(a[1].d),a[2].s.s,opt);
110 	else if(!strcmp(k,"ddd"))	gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
111 	else if(!strcmp(k,"ddds"))	gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
112 	else if(!strcmp(k,"dddd"))	gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
113 	else if(!strcmp(k,"dddds"))	gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
114 	else if(!strcmp(k,"ddddd"))	gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
115 	else if(!strcmp(k,"ddddds"))gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.s,opt);
116 	else res = 1;
117 	return res;
118 }
119 //-----------------------------------------------------------------------------
mgls_chart(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)120 int static mgls_chart(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
121 {
122 	int res=0;
123 	if(!strcmp(k,"d"))	gr->Chart(*(a[0].d), "",opt);
124 	else if(!strcmp(k,"ds"))	gr->Chart(*(a[0].d), a[1].s.s,opt);
125 	else res = 1;
126 	return res;
127 }
128 //-----------------------------------------------------------------------------
mgls_cones(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)129 int static mgls_cones(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
130 {
131 	int res=0;
132 	if(!strcmp(k,"d"))	gr->Cones(*(a[0].d), "",opt);
133 	else if(!strcmp(k,"ds"))	gr->Cones(*(a[0].d), a[1].s.s,opt);
134 	else if(!strcmp(k,"dd"))	gr->Cones(*(a[0].d), *(a[1].d), "",opt);
135 	else if(!strcmp(k,"dds"))	gr->Cones(*(a[0].d), *(a[1].d), a[2].s.s,opt);
136 	else if(!strcmp(k,"ddd")) 	gr->Cones(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
137 	else if(!strcmp(k,"ddds"))	gr->Cones(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
138 	else res = 1;
139 	return res;
140 }
141 //-----------------------------------------------------------------------------
mgls_error(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)142 int static mgls_error(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
143 {
144 	int res=0;
145 	if(!strcmp(k,"dd"))	gr->Error(*(a[0].d),*(a[1].d), "",opt);
146 	else if(!strcmp(k,"dds"))	gr->Error(*(a[0].d),*(a[1].d), a[2].s.s,opt);
147 	else if(!strcmp(k,"ddd"))	gr->Error(*(a[0].d),*(a[1].d),*(a[2].d), "",opt);
148 	else if(!strcmp(k,"ddds"))	gr->Error(*(a[0].d),*(a[1].d),*(a[2].d), a[3].s.s,opt);
149 	else if(!strcmp(k,"dddd"))	gr->Error(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt);
150 	else if(!strcmp(k,"dddds"))	gr->Error(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.s,opt);
151 	else res = 1;
152 	return res;
153 }
154 //-----------------------------------------------------------------------------
mgls_iris(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)155 int static mgls_iris(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
156 {
157 	int res=0;
158 	if(!strcmp(k,"ds"))	gr->Iris(*(a[0].d),a[1].s.w,"",opt);
159 	else if(!strcmp(k,"dss"))	gr->Iris(*(a[0].d),a[1].s.w,a[2].s.s,opt);
160 	else if(!strcmp(k,"dds"))	gr->Iris(*(a[0].d),*(a[1].d),a[2].s.w,"",opt);
161 	else if(!strcmp(k,"ddss"))	gr->Iris(*(a[0].d),*(a[1].d),a[2].s.w,a[3].s.s,opt);
162 	else res = 1;
163 	return res;
164 }
165 //-----------------------------------------------------------------------------
mgls_label(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)166 int static mgls_label(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
167 {
168 	int res=0;
169 	if(!strcmp(k,"ds"))	gr->Label(*(a[0].d), a[1].s.w, "",opt);
170 	else if(!strcmp(k,"dss"))	gr->Label(*(a[0].d), a[1].s.w, a[2].s.s,opt);
171 	else if(!strcmp(k,"dds"))	gr->Label(*(a[0].d), *(a[1].d), a[2].s.w, "",opt);
172 	else if(!strcmp(k,"ddss"))	gr->Label(*(a[0].d), *(a[1].d), a[2].s.w, a[3].s.s,opt);
173 	else if(!strcmp(k,"ddds"))	gr->Label(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.w, "",opt);
174 	else if(!strcmp(k,"dddss"))	gr->Label(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.w, a[4].s.s,opt);
175 	else res = 1;
176 	return res;
177 }
178 //-----------------------------------------------------------------------------
mgls_lamerey(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)179 int static mgls_lamerey(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
180 {
181 	int res=0;
182 	if(!strcmp(k,"nd"))	gr->Lamerey(a[0].v,*(a[1].d),"",opt);
183 	else if(!strcmp(k,"nds"))	gr->Lamerey(a[0].v,*(a[1].d),a[2].s.s,opt);
184 	else if(!strcmp(k,"ns"))	gr->Lamerey(a[0].v,a[1].s.s,"",opt);
185 	else if(!strcmp(k,"nss"))	gr->Lamerey(a[0].v,a[1].s.s,a[2].s.s,opt);
186 	else res = 1;
187 	return res;
188 }
189 //-----------------------------------------------------------------------------
mgls_lines(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)190 int static mgls_lines(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
191 {
192 	int res=0;
193 	if(!strcmp(k,"dd"))	gr->Lines(*(a[0].d),*(a[1].d),"",opt);
194 	else if(!strcmp(k,"dds"))	gr->Lines(*(a[0].d),*(a[1].d),a[2].s.s,opt);
195 	else if(!strcmp(k,"dddd"))	gr->Lines(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
196 	else if(!strcmp(k,"dddds"))	gr->Lines(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
197 	else if(!strcmp(k,"dddddd"))	gr->Lines(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
198 	else if(!strcmp(k,"dddddds"))	gr->Lines(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
199 	else res = 1;
200 	return res;
201 }
202 //-----------------------------------------------------------------------------
mgls_mark(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)203 int static mgls_mark(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
204 {
205 	int res=0;
206 	if(!strcmp(k,"dd"))	gr->Mark(*(a[0].d), *(a[1].d), "",opt);
207 	else if(!strcmp(k,"dds"))	gr->Mark(*(a[0].d), *(a[1].d), a[2].s.s,opt);
208 	else if(!strcmp(k,"ddd")) 	gr->Mark(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
209 	else if(!strcmp(k,"ddds"))	gr->Mark(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
210 	else if(!strcmp(k,"dddd")) 	gr->Mark(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt);
211 	else if(!strcmp(k,"dddds"))	gr->Mark(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.s,opt);
212 	else res = 1;
213 	return res;
214 }
215 //-----------------------------------------------------------------------------
mgls_ohlc(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)216 int static mgls_ohlc(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
217 {
218 	int res=0;
219 	if(!strcmp(k,"dddd"))	gr->OHLC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt);
220 	else if(!strcmp(k,"dddds"))	gr->OHLC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.s,opt);
221 	else if(!strcmp(k,"ddddd"))	gr->OHLC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), "",opt);
222 	else if(!strcmp(k,"ddddds"))	gr->OHLC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), a[5].s.s,opt);
223 	else res = 1;
224 	return res;
225 }
226 //-----------------------------------------------------------------------------
mgls_plot(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)227 int static mgls_plot(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
228 {
229 	int res=0;
230 	if(!strcmp(k,"d"))	gr->Plot(*(a[0].d),"",opt);
231 	else if(!strcmp(k,"ds"))	gr->Plot(*(a[0].d),a[1].s.s,opt);
232 	else if(!strcmp(k,"dd"))	gr->Plot(*(a[0].d),*(a[1].d),"",opt);
233 	else if(!strcmp(k,"dds"))	gr->Plot(*(a[0].d),*(a[1].d),a[2].s.s,opt);
234 	else if(!strcmp(k,"ddd"))	gr->Plot(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
235 	else if(!strcmp(k,"ddds"))	gr->Plot(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
236 	else if(!strcmp(k,"nns"))	gr->Mark(mglPoint(a[0].v,a[1].v,NAN),a[2].s.s);
237 	else if(!strcmp(k,"nnns"))	gr->Mark(mglPoint(a[0].v,a[1].v,a[2].v),a[3].s.s);
238 	else res = 1;
239 	return res;
240 }
241 //-----------------------------------------------------------------------------
mgls_radar(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)242 int static mgls_radar(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
243 {
244 	int res=0;
245 	if(!strcmp(k,"d"))	gr->Radar(*(a[0].d),"",opt);
246 	else if(!strcmp(k,"ds"))	gr->Radar(*(a[0].d),a[1].s.s,opt);
247 	else res = 1;
248 	return res;
249 }
250 //-----------------------------------------------------------------------------
mgls_region(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)251 int static mgls_region(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
252 {
253 	int res=0;
254 	if(!strcmp(k,"dd"))		gr->Region(*(a[0].d),*(a[1].d),"",opt);
255 	else if(!strcmp(k,"dds"))	gr->Region(*(a[0].d),*(a[1].d),a[2].s.s,opt);
256 	else if(!strcmp(k,"ddd"))	gr->Region(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
257 	else if(!strcmp(k,"ddds"))	gr->Region(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
258 	else if(!strcmp(k,"dddd"))	gr->Region(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
259 	else if(!strcmp(k,"dddds"))	gr->Region(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
260 	else if(!strcmp(k,"dddddd"))	gr->Region(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
261 	else if(!strcmp(k,"dddddds"))	gr->Region(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
262 	else res = 1;
263 	return res;
264 }
265 //-----------------------------------------------------------------------------
mgls_stem(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)266 int static mgls_stem(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
267 {
268 	int res=0;
269 	if(!strcmp(k,"d"))	gr->Stem(*(a[0].d),"",opt);
270 	else if(!strcmp(k,"ds"))	gr->Stem(*(a[0].d),a[1].s.s,opt);
271 	else if(!strcmp(k,"dd"))	gr->Stem(*(a[0].d),*(a[1].d),"",opt);
272 	else if(!strcmp(k,"dds"))	gr->Stem(*(a[0].d),*(a[1].d),a[2].s.s,opt);
273 	else if(!strcmp(k,"ddd"))	gr->Stem(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
274 	else if(!strcmp(k,"ddds"))	gr->Stem(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
275 	else res = 1;
276 	return res;
277 }
278 //-----------------------------------------------------------------------------
mgls_step(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)279 int static mgls_step(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
280 {
281 	int res=0;
282 	if(!strcmp(k,"d"))	gr->Step(*(a[0].d),"",opt);
283 	else if(!strcmp(k,"ds"))	gr->Step(*(a[0].d),a[1].s.s,opt);
284 	else if(!strcmp(k,"dd"))	gr->Step(*(a[0].d),*(a[1].d),"",opt);
285 	else if(!strcmp(k,"dds"))	gr->Step(*(a[0].d),*(a[1].d),a[2].s.s,opt);
286 	else if(!strcmp(k,"ddd"))	gr->Step(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
287 	else if(!strcmp(k,"ddds"))	gr->Step(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
288 	else res = 1;
289 	return res;
290 }
291 //-----------------------------------------------------------------------------
mgls_table(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)292 int static mgls_table(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
293 {
294 	int res=0;
295 	if(!strcmp(k,"d"))	gr->Table(*(a[0].d), L"", "#|",opt);
296 	else if(!strcmp(k,"ds"))	gr->Table(*(a[0].d), a[1].s.w, "#|",opt);
297 	else if(!strcmp(k,"dss"))	gr->Table(*(a[0].d), a[1].s.w, a[2].s.s,opt);
298 	else if(!strcmp(k,"nnd"))	gr->Table(a[0].v, a[1].v, *(a[2].d), L"", "#|",opt);
299 	else if(!strcmp(k,"nnds"))	gr->Table(a[0].v, a[1].v, *(a[2].d), a[3].s.w, "#|",opt);
300 	else if(!strcmp(k,"nndss"))	gr->Table(a[0].v, a[1].v, *(a[2].d), a[3].s.w, a[4].s.s,opt);
301 	else res = 1;
302 	return res;
303 }
304 //-----------------------------------------------------------------------------
mgls_tape(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)305 int static mgls_tape(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
306 {
307 	int res=0;
308 	if(!strcmp(k,"d"))	gr->Tape(*(a[0].d),"",opt);
309 	else if(!strcmp(k,"ds"))	gr->Tape(*(a[0].d),a[1].s.s,opt);
310 	else if(!strcmp(k,"dd"))	gr->Tape(*(a[0].d),*(a[1].d),"",opt);
311 	else if(!strcmp(k,"dds"))	gr->Tape(*(a[0].d),*(a[1].d),a[2].s.s,opt);
312 	else if(!strcmp(k,"ddd"))	gr->Tape(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
313 	else if(!strcmp(k,"ddds"))	gr->Tape(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
314 	else res = 1;
315 	return res;
316 }
317 //-----------------------------------------------------------------------------
mgls_tens(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)318 int static mgls_tens(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
319 {
320 	int res=0;
321 	if(!strcmp(k,"dd"))	gr->Tens(*(a[0].d),*(a[1].d), "",opt);
322 	else if(!strcmp(k,"dds"))	gr->Tens(*(a[0].d),*(a[1].d), a[2].s.s,opt);
323 	else if(!strcmp(k,"ddd"))	gr->Tens(*(a[0].d),*(a[1].d),*(a[2].d), "",opt);
324 	else if(!strcmp(k,"ddds"))	gr->Tens(*(a[0].d),*(a[1].d),*(a[2].d), a[3].s.s,opt);
325 	else if(!strcmp(k,"dddd")) 	gr->Tens(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt);
326 	else if(!strcmp(k,"dddds"))	gr->Tens(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.s,opt);
327 	return res;
328 }
329 //-----------------------------------------------------------------------------
mgls_textmark(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)330 int static mgls_textmark(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
331 {
332 	int res=0;
333 	if(!strcmp(k,"ds"))	gr->TextMark(*(a[0].d),a[1].s.w,"",opt);
334 	else if(!strcmp(k,"dss"))	gr->TextMark(*(a[0].d),a[1].s.w,a[2].s.s,opt);
335 	else if(!strcmp(k,"dds"))	gr->TextMark(*(a[0].d),*(a[1].d),a[2].s.w,"",opt);
336 	else if(!strcmp(k,"ddss"))	gr->TextMark(*(a[0].d),*(a[1].d),a[2].s.w,a[3].s.s,opt);
337 	else if(!strcmp(k,"ddds"))	gr->TextMark(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.w,"",opt);
338 	else if(!strcmp(k,"dddss"))	gr->TextMark(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.w,a[4].s.s,opt);
339 	else if(!strcmp(k,"dddds"))	gr->TextMark(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.w,"",opt);
340 	else if(!strcmp(k,"ddddss"))gr->TextMark(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.w,a[5].s.s,opt);
341 	else res = 1;
342 	return res;
343 }
344 //-----------------------------------------------------------------------------
mgls_torus(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)345 int static mgls_torus(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
346 {
347 	int res=0;
348 	if(!strcmp(k,"dd"))	gr->Torus(*(a[0].d),*(a[1].d),"",opt);
349 	else if(!strcmp(k,"dds"))	gr->Torus(*(a[0].d),*(a[1].d),a[2].s.s,opt);
350 	else res = 1;
351 	return res;
352 }
353 //-----------------------------------------------------------------------------
mgls_tube(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)354 int static mgls_tube(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
355 {
356 	int res=0;
357 	if(!strcmp(k,"dn"))
358 		gr->Tube(*(a[0].d),a[1].v,"",opt);
359 	else if(!strcmp(k,"dns"))
360 		gr->Tube(*(a[0].d),a[1].v,a[2].s.s,opt);
361 	else if(!strcmp(k,"dd"))
362 		gr->Tube(*(a[0].d),*(a[1].d),"",opt);
363 	else if(!strcmp(k,"dds"))
364 		gr->Tube(*(a[0].d),*(a[1].d),a[2].s.s,opt);
365 	else if(!strcmp(k,"ddn"))
366 		gr->Tube(*(a[0].d),*(a[1].d),a[2].v,"",opt);
367 	else if(!strcmp(k,"ddns"))
368 		gr->Tube(*(a[0].d),*(a[1].d),a[2].v,a[3].s.s,opt);
369 	else if(!strcmp(k,"ddd"))
370 		gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
371 	else if(!strcmp(k,"ddds"))
372 		gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
373 	else if(!strcmp(k,"dddn"))
374 		gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),a[3].v,"",opt);
375 	else if(!strcmp(k,"dddns"))
376 		gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),a[3].v,a[4].s.s,opt);
377 	else if(!strcmp(k,"dddd"))
378 		gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
379 	else if(!strcmp(k,"dddds"))
380 		gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
381 	else res = 1;
382 	return res;
383 }
384 //-----------------------------------------------------------------------------
385 //	2D
386 //-----------------------------------------------------------------------------
mgls_belt(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)387 int static mgls_belt(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
388 {
389 	int res=0;
390 	if(!strcmp(k,"d"))	gr->Belt(*(a[0].d),"",opt);
391 	else if(!strcmp(k,"ds"))	gr->Belt(*(a[0].d),a[1].s.s,opt);
392 	else if(!strcmp(k,"ddd"))	gr->Belt(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
393 	else if(!strcmp(k,"ddds"))	gr->Belt(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
394 	else res = 1;
395 	return res;
396 }
397 //-----------------------------------------------------------------------------
mgls_beltc(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)398 int static mgls_beltc(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
399 {
400 	int res=0;
401 	if(!strcmp(k,"dd"))	gr->BeltC(*(a[0].d),*(a[1].d),"",opt);
402 	else if(!strcmp(k,"dds"))	gr->BeltC(*(a[0].d),*(a[1].d),a[2].s.s,opt);
403 	else if(!strcmp(k,"dddd"))	gr->BeltC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
404 	else if(!strcmp(k,"dddds"))	gr->BeltC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
405 	else res = 1;
406 	return res;
407 }
408 //-----------------------------------------------------------------------------
mgls_boxs(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)409 int static mgls_boxs(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
410 {
411 	int res=0;
412 	if(!strcmp(k,"d"))	gr->Boxs(*(a[0].d),"",opt);
413 	else if(!strcmp(k,"ds"))	gr->Boxs(*(a[0].d),a[1].s.s,opt);
414 	else if(!strcmp(k,"ddd"))	gr->Boxs(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
415 	else if(!strcmp(k,"ddds"))	gr->Boxs(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
416 	else res = 1;
417 	return res;
418 }
419 //-----------------------------------------------------------------------------
mgls_cont(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)420 int static mgls_cont(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
421 {
422 	int res=0;
423 	mglData v;	v.a[0]=a[0].v;
424 	if(!strcmp(k,"d"))	gr->Cont(*(a[0].d),"",opt);
425 	else if(!strcmp(k,"ds"))	gr->Cont(*(a[0].d),a[1].s.s,opt);
426 	else if(!strcmp(k,"dd"))	gr->Cont(*(a[0].d), *(a[1].d), "",opt);
427 	else if(!strcmp(k,"dds"))	gr->Cont(*(a[0].d), *(a[1].d), a[2].s.s,opt);
428 	else if(!strcmp(k,"nd"))	gr->Cont(v, *(a[1].d), "",opt);
429 	else if(!strcmp(k,"nds"))	gr->Cont(v, *(a[1].d), a[2].s.s,opt);
430 	else if(!strcmp(k,"ddd"))	gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
431 	else if(!strcmp(k,"ddds"))	gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
432 	else if(!strcmp(k,"dddd"))	gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "",opt);
433 	else if(!strcmp(k,"dddds"))	gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,opt);
434 	else if(!strcmp(k,"nddd"))	gr->Cont(v, *(a[1].d), *(a[2].d), *(a[3].d), "",opt);
435 	else if(!strcmp(k,"nddds"))	gr->Cont(v, *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,opt);
436 	else if(!strcmp(k,"ndddd"))	gr->ContGen(a[0].v, *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d),"",opt);
437 	else if(!strcmp(k,"ndddds"))gr->ContGen(a[0].v, *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.s,opt);
438 	else res = 1;
439 	return res;
440 }
441 //-----------------------------------------------------------------------------
mgls_contd(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)442 int static mgls_contd(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
443 {
444 	int res=0;
445 	mglData v;	v.a[0]=a[0].v;
446 	if(!strcmp(k,"d"))	gr->ContD(*(a[0].d),"",opt);
447 	else if(!strcmp(k,"ds"))	gr->ContD(*(a[0].d),a[1].s.s,opt);
448 	else if(!strcmp(k,"dd"))	gr->ContD(*(a[0].d), *(a[1].d), "",opt);
449 	else if(!strcmp(k,"dds"))	gr->ContD(*(a[0].d), *(a[1].d), a[2].s.s,opt);
450 	else if(!strcmp(k,"nd"))	gr->ContD(v, *(a[1].d), "",opt);
451 	else if(!strcmp(k,"nds"))	gr->ContD(v, *(a[1].d), a[2].s.s,opt);
452 	else if(!strcmp(k,"ddd"))	gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
453 	else if(!strcmp(k,"ddds"))	gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
454 	else if(!strcmp(k,"dddd"))	gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "",opt);
455 	else if(!strcmp(k,"dddds"))	gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,opt);
456 	else if(!strcmp(k,"nddd"))	gr->ContD(v, *(a[1].d), *(a[2].d), *(a[3].d), "",opt);
457 	else if(!strcmp(k,"nddds"))	gr->ContD(v, *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,opt);
458 	else res = 1;
459 	return res;
460 }
461 //-----------------------------------------------------------------------------
mgls_contf(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)462 int static mgls_contf(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
463 {
464 	int res=0;
465 	if(!strcmp(k,"d"))	gr->ContF(*(a[0].d),"",opt);
466 	else if(!strcmp(k,"ds"))	gr->ContF(*(a[0].d),a[1].s.s,opt);
467 	else if(!strcmp(k,"dd"))	gr->ContF(*(a[0].d), *(a[1].d), "",opt);
468 	else if(!strcmp(k,"dds"))	gr->ContF(*(a[0].d), *(a[1].d), a[2].s.s,opt);
469 	else if(!strcmp(k,"ddd"))	gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
470 	else if(!strcmp(k,"ddds"))	gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
471 	else if(!strcmp(k,"dddd"))	gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "",opt);
472 	else if(!strcmp(k,"dddds"))	gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,opt);
473 	else if(!strcmp(k,"nndddd"))	gr->ContFGen(a[0].v, a[1].v, *(a[2].d), *(a[3].d), *(a[4].d), *(a[5].d),"",opt);
474 	else if(!strcmp(k,"nndddds"))	gr->ContFGen(a[0].v, a[1].v, *(a[2].d), *(a[3].d), *(a[4].d), *(a[5].d), a[6].s.s,opt);
475 	else res = 1;
476 	return res;
477 }
478 //-----------------------------------------------------------------------------
mgls_contp(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)479 int static mgls_contp(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
480 {
481 	int res=0;
482 	mglData v;	v.a[0]=a[0].v;
483 	if(!strcmp(k,"dddd"))	gr->ContP(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "",opt);
484 	else if(!strcmp(k,"dddds"))	gr->ContP(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,opt);
485 	else if(!strcmp(k,"ddddd"))	gr->ContP(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), "",opt);
486 	else if(!strcmp(k,"ddddds"))	gr->ContP(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.s,opt);
487 	else if(!strcmp(k,"ndddd"))		gr->ContP(v, *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), "",opt);
488 	else if(!strcmp(k,"ndddds"))	gr->ContP(v, *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.s,opt);
489 	else res = 1;
490 	return res;
491 }
492 //-----------------------------------------------------------------------------
mgls_contv(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)493 int static mgls_contv(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
494 {
495 	int res=0;
496 	mglData v;	v.a[0]=a[0].v;
497 	if(!strcmp(k,"d"))	gr->ContV(*(a[0].d),"",opt);
498 	else if(!strcmp(k,"ds"))	gr->ContV(*(a[0].d),a[1].s.s,opt);
499 	else if(!strcmp(k,"dd"))	gr->ContV(*(a[0].d), *(a[1].d), "",opt);
500 	else if(!strcmp(k,"dds"))	gr->ContV(*(a[0].d), *(a[1].d), a[2].s.s,opt);
501 	else if(!strcmp(k,"nd"))	gr->ContV(v, *(a[1].d), "",opt);
502 	else if(!strcmp(k,"nds"))	gr->ContV(v, *(a[1].d), a[2].s.s,opt);
503 	else if(!strcmp(k,"ddd"))	gr->ContV(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
504 	else if(!strcmp(k,"ddds"))	gr->ContV(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
505 	else if(!strcmp(k,"dddd"))	gr->ContV(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "",opt);
506 	else if(!strcmp(k,"dddds"))	gr->ContV(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,opt);
507 	else if(!strcmp(k,"nddd"))	gr->ContV(v, *(a[1].d), *(a[2].d), *(a[3].d), "",opt);
508 	else if(!strcmp(k,"nddds"))	gr->ContV(v, *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,opt);
509 	else res = 1;
510 	return res;
511 }
512 //-----------------------------------------------------------------------------
mgls_dens(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)513 int static mgls_dens(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
514 {
515 	int res=0;
516 	if(!strcmp(k,"d"))	gr->Dens(*(a[0].d),"",opt);
517 	else if(!strcmp(k,"ds"))	gr->Dens(*(a[0].d),a[1].s.s,opt);
518 	else if(!strcmp(k,"ddd"))	gr->Dens(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
519 	else if(!strcmp(k,"ddds"))	gr->Dens(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
520 	else res = 1;
521 	return res;
522 }
523 //-----------------------------------------------------------------------------
mgls_fall(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)524 int static mgls_fall(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
525 {
526 	int res=0;
527 	if(!strcmp(k,"d"))	gr->Fall(*(a[0].d),"",opt);
528 	else if(!strcmp(k,"ds"))	gr->Fall(*(a[0].d),a[1].s.s,opt);
529 	else if(!strcmp(k,"ddd"))	gr->Fall(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
530 	else if(!strcmp(k,"ddds"))	gr->Fall(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
531 	else res = 1;
532 	return res;
533 }
534 //-----------------------------------------------------------------------------
mgls_grid2(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)535 int static mgls_grid2(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
536 {
537 	int res=0;
538 	if(!strcmp(k,"d"))	gr->Grid(*(a[0].d),"",opt);
539 	else if(!strcmp(k,"ds"))	gr->Grid(*(a[0].d),a[1].s.s,opt);
540 	else if(!strcmp(k,"ddd"))	gr->Grid(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
541 	else if(!strcmp(k,"ddds"))	gr->Grid(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
542 	else res = 1;
543 	return res;
544 }
545 //-----------------------------------------------------------------------------
mgls_map(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)546 int static mgls_map(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
547 {
548 	int res=0;
549 	if(!strcmp(k,"dd"))	gr->Map(*(a[0].d),*(a[1].d),"",opt);
550 	else if(!strcmp(k,"dds"))	gr->Map(*(a[0].d),*(a[1].d),a[2].s.s,opt);
551 	else if(!strcmp(k,"dddd"))	gr->Map(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
552 	else if(!strcmp(k,"dddds"))	gr->Map(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
553 	else res = 1;
554 	return res;
555 }
556 //-----------------------------------------------------------------------------
mgls_mesh(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)557 int static mgls_mesh(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
558 {
559 	int res=0;
560 	if(!strcmp(k,"d"))	gr->Mesh(*(a[0].d),"",opt);
561 	else if(!strcmp(k,"ds"))	gr->Mesh(*(a[0].d),a[1].s.s,opt);
562 	else if(!strcmp(k,"ddd"))	gr->Mesh(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
563 	else if(!strcmp(k,"ddds"))	gr->Mesh(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
564 	else res = 1;
565 	return res;
566 }
567 //-----------------------------------------------------------------------------
mgls_pmap(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)568 int static mgls_pmap(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
569 {
570 	int res=0;
571 	if(!strcmp(k,"dd"))	gr->Pmap(*(a[0].d), *(a[1].d), "",opt);
572 	else if(!strcmp(k,"dds"))	gr->Pmap(*(a[0].d), *(a[1].d), a[2].s.s,opt);
573 	else if(!strcmp(k,"ddd")) 	gr->Pmap(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
574 	else if(!strcmp(k,"ddds"))	gr->Pmap(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
575 	else if(!strcmp(k,"dddd")) 	gr->Pmap(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt);
576 	else if(!strcmp(k,"dddds"))	gr->Pmap(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.s,opt);
577 	else res = 1;
578 	return res;
579 }
580 //-----------------------------------------------------------------------------
mgls_stfa(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)581 int static mgls_stfa(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
582 {
583 	int res=0;
584 	if(!strcmp(k,"ddn"))
585 		gr->STFA(*(a[0].d),*(a[1].d), mgl_int(a[2].v), "",opt);
586 	else if(!strcmp(k,"ddns"))
587 		gr->STFA(*(a[0].d),*(a[1].d), mgl_int(a[2].v), a[3].s.s,opt);
588 	else if(!strcmp(k,"ddddn"))
589 		gr->STFA(*(a[0].d),*(a[1].d), *(a[2].d),*(a[3].d), mgl_int(a[4].v), "",opt);
590 	else if(!strcmp(k,"ddddns"))
591 		gr->STFA(*(a[0].d),*(a[1].d), *(a[2].d),*(a[3].d), mgl_int(a[4].v), a[5].s.s,opt);
592 	else res = 1;
593 	return res;
594 }
595 //-----------------------------------------------------------------------------
mgls_surf(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)596 int static mgls_surf(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
597 {
598 	int res=0;
599 	if(!strcmp(k,"d"))	gr->Surf(*(a[0].d),"",opt);
600 	else if(!strcmp(k,"ds"))	gr->Surf(*(a[0].d),a[1].s.s,opt);
601 	else if(!strcmp(k,"ddd"))	gr->Surf(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
602 	else if(!strcmp(k,"ddds"))	gr->Surf(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
603 	else res = 1;
604 	return res;
605 }
606 //-----------------------------------------------------------------------------
mgls_surfc(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)607 int static mgls_surfc(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
608 {
609 	int res=0;
610 	if(!strcmp(k,"dd"))	gr->SurfC(*(a[0].d),*(a[1].d),"",opt);
611 	else if(!strcmp(k,"dds"))	gr->SurfC(*(a[0].d),*(a[1].d),a[2].s.s,opt);
612 	else if(!strcmp(k,"dddd"))	gr->SurfC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
613 	else if(!strcmp(k,"dddds"))	gr->SurfC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
614 	else res = 1;
615 	return res;
616 }
617 //-----------------------------------------------------------------------------
mgls_surfa(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)618 int static mgls_surfa(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
619 {
620 	int res=0;
621 	if(!strcmp(k,"dd"))	gr->SurfA(*(a[0].d),*(a[1].d),"",opt);
622 	else if(!strcmp(k,"dds"))	gr->SurfA(*(a[0].d),*(a[1].d),a[2].s.s,opt);
623 	else if(!strcmp(k,"dddd"))	gr->SurfA(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
624 	else if(!strcmp(k,"dddds"))	gr->SurfA(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
625 	else res = 1;
626 	return res;
627 }
628 //-----------------------------------------------------------------------------
mgls_surfca(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)629 int static mgls_surfca(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
630 {
631 	int res=0;
632 	if(!strcmp(k,"ddd"))	gr->SurfCA(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
633 	else if(!strcmp(k,"ddds"))	gr->SurfCA(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
634 	else if(!strcmp(k,"ddddd"))	gr->SurfCA(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
635 	else if(!strcmp(k,"ddddds"))gr->SurfCA(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.s,opt);
636 	else res = 1;
637 	return res;
638 }
639 //-----------------------------------------------------------------------------
mgls_tile(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)640 int static mgls_tile(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
641 {
642 	int res=0;
643 	if(!strcmp(k,"d"))	gr->Tile(*(a[0].d),"",opt);
644 	else if(!strcmp(k,"ds"))	gr->Tile(*(a[0].d),a[1].s.s,opt);
645 	else if(!strcmp(k,"ddd"))	gr->Tile(*(a[0].d), *(a[1].d), *(a[2].d), "",opt);
646 	else if(!strcmp(k,"ddds"))	gr->Tile(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s,opt);
647 	else if(!strcmp(k,"dddd"))	gr->Tile(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "",opt);
648 	else if(!strcmp(k,"dddds"))	gr->Tile(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,opt);
649 	else res = 1;
650 	return res;
651 }
652 //-----------------------------------------------------------------------------
mgls_tiles(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)653 int static mgls_tiles(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
654 {
655 	int res=0;
656 	if(!strcmp(k,"dd"))	gr->TileS(*(a[0].d),*(a[1].d),"",opt);
657 	else if(!strcmp(k,"dds"))	gr->TileS(*(a[0].d),*(a[1].d),a[2].s.s,opt);
658 	else if(!strcmp(k,"dddd"))	gr->TileS(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
659 	else if(!strcmp(k,"dddds"))	gr->TileS(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
660 	else if(!strcmp(k,"ddddd"))	gr->TileS(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
661 	else if(!strcmp(k,"ddddds"))	gr->TileS(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.s,opt);
662 	else res = 1;
663 	return res;
664 }
665 //-----------------------------------------------------------------------------
mgls_triplot(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)666 int static mgls_triplot(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
667 {
668 	int res=0;
669 	if(!strcmp(k,"ddd"))	gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
670 	else if(!strcmp(k,"ddds"))	gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
671 	else if(!strcmp(k,"dddd"))	gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
672 	else if(!strcmp(k,"dddds"))	gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
673 	else if(!strcmp(k,"ddddd"))	gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
674 	else if(!strcmp(k,"ddddds"))gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.s,opt);
675 	else res = 1;
676 	return res;
677 }
678 //-----------------------------------------------------------------------------
mgls_quadplot(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)679 int static mgls_quadplot(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
680 {
681 	int res=0;
682 	if(!strcmp(k,"ddd"))	gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
683 	else if(!strcmp(k,"ddds"))	gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
684 	else if(!strcmp(k,"dddd"))	gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
685 	else if(!strcmp(k,"dddds"))	gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
686 	else if(!strcmp(k,"ddddd"))	gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
687 	else if(!strcmp(k,"ddddds"))gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.s,opt);
688 	else res = 1;
689 	return res;
690 }
691 //-----------------------------------------------------------------------------
mgls_tricont(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)692 int static mgls_tricont(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
693 {
694 	int res=0;
695 	mglData v;	v.a[0]=a[0].v;
696 	if(!strcmp(k,"dddd"))
697 		gr->TriCont(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
698 	else if(!strcmp(k,"dddds"))
699 		gr->TriCont(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
700 	else if(!strcmp(k,"ddddd"))
701 		gr->TriContV(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
702 	else if(!strcmp(k,"ddddds"))
703 		gr->TriContV(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.s,opt);
704 	else if(!strcmp(k,"dddddd"))
705 		gr->TriCont(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
706 	else if(!strcmp(k,"dddddds"))
707 		gr->TriCont(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
708 	else if(!strcmp(k,"ndddd"))
709 		gr->TriContV(v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
710 	else if(!strcmp(k,"ndddds"))
711 		gr->TriContV(v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.s,opt);
712 	else if(!strcmp(k,"nddddd"))
713 		gr->TriCont(v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
714 	else if(!strcmp(k,"nddddds"))
715 		gr->TriCont(v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
716 	else res = 1;
717 	return res;
718 }
719 //-----------------------------------------------------------------------------
mgls_tricontv(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)720 int static mgls_tricontv(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
721 {
722 	int res=0;
723 	mglData v;	v.a[0]=a[0].v;
724 	if(!strcmp(k,"dddd"))
725 		gr->TriContVt(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
726 	else if(!strcmp(k,"dddds"))
727 		gr->TriContVt(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
728 	else if(!strcmp(k,"ddddd"))
729 		gr->TriContVt(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
730 	else if(!strcmp(k,"ddddds"))
731 		gr->TriContVt(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.s,opt);
732 	else if(!strcmp(k,"dddddd"))
733 		gr->TriContVt(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
734 	else if(!strcmp(k,"dddddds"))
735 		gr->TriContVt(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
736 	else if(!strcmp(k,"nddddd"))
737 		gr->TriContVt(v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
738 	else if(!strcmp(k,"nddddds"))
739 		gr->TriContVt(v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
740 	else res = 1;
741 	return res;
742 }
743 //-----------------------------------------------------------------------------
744 //	3D
745 //-----------------------------------------------------------------------------
mgls_beam(mglGraph * gr,long,mglArg * a,const char * k,const char *)746 int static mgls_beam(mglGraph *gr, long , mglArg *a, const char *k, const char *)	// NOTE beam can be made obsolete ???
747 {
748 	int res=0;
749 	if(!strcmp(k,"ddddn"))
750 		gr->Beam(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].v,"",0, 3);
751 	else if(!strcmp(k,"ddddns"))
752 		gr->Beam(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].v,a[5].s.s,0, 3);
753 	else if(!strcmp(k,"ddddnsn"))
754 		gr->Beam(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].v,a[5].s.s,mgl_int(a[6].v), 3);
755 	else if(!strcmp(k,"ddddnsnn"))
756 		gr->Beam(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].v,a[5].s.s,mgl_int(a[6].v), mgl_int(a[7].v));
757 	else if(!strcmp(k,"nddddn"))
758 		gr->Beam(a[0].v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].v,"",0);
759 	else if(!strcmp(k,"nddddns"))
760 		gr->Beam(a[0].v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].v,a[6].s.s,0);
761 	else if(!strcmp(k,"nddddnsn"))
762 		gr->Beam(a[0].v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].v,a[6].s.s,mgl_int(a[7].v));
763 	else res = 1;
764 	return res;
765 }
766 //-----------------------------------------------------------------------------
mgls_cloud(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)767 int static mgls_cloud(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
768 {
769 	int res=0;
770 	if(!strcmp(k,"d"))	gr->Cloud(*(a[0].d),"",opt);
771 	else if(!strcmp(k,"ds"))	gr->Cloud(*(a[0].d),a[1].s.s,opt);
772 	else if(!strcmp(k,"dddd"))	gr->Cloud(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
773 	else if(!strcmp(k,"dddds"))	gr->Cloud(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
774 	else res = 1;
775 	return res;
776 }
777 //-----------------------------------------------------------------------------
mgls_cont3(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)778 int static mgls_cont3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
779 {
780 	int res=0;
781 	mglData v;	v.a[0]=a[0].v;
782 	if(!strcmp(k,"d"))	gr->Cont3(*(a[0].d), "", -1,opt);
783 	else if(!strcmp(k,"ds"))	gr->Cont3(*(a[0].d), a[1].s.s, -1,opt);
784 	else if(!strcmp(k,"dsn"))	gr->Cont3(*(a[0].d), a[1].s.s, mgl_int(a[2].v),opt);
785 	else if(!strcmp(k,"dd"))	gr->Cont3(*(a[0].d), *(a[1].d), "", -1,opt);
786 	else if(!strcmp(k,"dds"))	gr->Cont3(*(a[0].d), *(a[1].d), a[2].s.s,-1,opt);
787 	else if(!strcmp(k,"ddsn"))	gr->Cont3(*(a[0].d), *(a[1].d), a[2].s.s,mgl_int(a[3].v),opt);
788 	else if(!strcmp(k,"nd"))	gr->Cont3(v, *(a[1].d), "", -1,opt);
789 	else if(!strcmp(k,"nds"))	gr->Cont3(v, *(a[1].d), a[2].s.s,-1,opt);
790 	else if(!strcmp(k,"ndsn"))	gr->Cont3(v, *(a[1].d), a[2].s.s,mgl_int(a[3].v),opt);
791 	else if(!strcmp(k,"dddd"))	gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "", -1,opt);
792 	else if(!strcmp(k,"dddds"))	gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,-1,opt);
793 	else if(!strcmp(k,"ddddsn"))gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,mgl_int(a[5].v),opt);
794 	else if(!strcmp(k,"ddddd"))		gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), "", -1,opt);
795 	else if(!strcmp(k,"ddddds"))	gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.s,-1,opt);
796 	else if(!strcmp(k,"dddddsn"))	gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.s,mgl_int(a[6].v),opt);
797 	else if(!strcmp(k,"ndddd"))		gr->Cont3(v, *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), "", -1,opt);
798 	else if(!strcmp(k,"ndddds"))	gr->Cont3(v, *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.s,-1,opt);
799 	else if(!strcmp(k,"nddddsn"))	gr->Cont3(v, *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.s,mgl_int(a[6].v),opt);
800 	else res = 1;
801 	return res;
802 }
803 //-----------------------------------------------------------------------------
mgls_contf3(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)804 int static mgls_contf3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
805 {
806 	int res=0;
807 	if(!strcmp(k,"d"))	gr->ContF3(*(a[0].d), "", -1,opt);
808 	else if(!strcmp(k,"ds"))	gr->ContF3(*(a[0].d), a[1].s.s, -1,opt);
809 	else if(!strcmp(k,"dsn"))	gr->ContF3(*(a[0].d), a[1].s.s, mgl_int(a[2].v),opt);
810 	else if(!strcmp(k,"dd"))	gr->ContF3(*(a[0].d), *(a[1].d), "", -1,opt);
811 	else if(!strcmp(k,"dds"))	gr->ContF3(*(a[0].d), *(a[1].d), a[2].s.s,-1,opt);
812 	else if(!strcmp(k,"ddsn"))	gr->ContF3(*(a[0].d), *(a[1].d), a[2].s.s,mgl_int(a[3].v),opt);
813 	else if(!strcmp(k,"dddd"))	gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "", -1,opt);
814 	else if(!strcmp(k,"dddds"))	gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,-1,opt);
815 	else if(!strcmp(k,"ddddsn"))	gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.s,mgl_int(a[5].v),opt);
816 	else if(!strcmp(k,"ddddd"))	gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), "", -1,opt);
817 	else if(!strcmp(k,"ddddds"))	gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.s,-1,opt);
818 	else if(!strcmp(k,"dddddsn"))gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.s,mgl_int(a[6].v),opt);
819 	else res = 1;
820 	return res;
821 }
822 //-----------------------------------------------------------------------------
mgls_contx(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)823 int static mgls_contx(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
824 {
825 	int res=0;
826 	if(!strcmp(k,"d"))	gr->ContX(*(a[0].d),"",NAN,opt);
827 	else if(!strcmp(k,"ds"))	gr->ContX(*(a[0].d),a[1].s.s,NAN,opt);
828 	else if(!strcmp(k,"dsn"))	gr->ContX(*(a[0].d),a[1].s.s,a[2].v,opt);
829 	else res = 1;
830 	return res;
831 }
832 //-----------------------------------------------------------------------------
mgls_contfx(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)833 int static mgls_contfx(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
834 {
835 	int res=0;
836 	if(!strcmp(k,"d"))	gr->ContFX(*(a[0].d),"",NAN,opt);
837 	else if(!strcmp(k,"ds"))	gr->ContFX(*(a[0].d),a[1].s.s,NAN,opt);
838 	else if(!strcmp(k,"dsn"))	gr->ContFX(*(a[0].d),a[1].s.s,a[2].v,opt);
839 	else res = 1;
840 	return res;
841 }
842 //-----------------------------------------------------------------------------
mgls_conty(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)843 int static mgls_conty(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
844 {
845 	int res=0;
846 	if(!strcmp(k,"d"))	gr->ContY(*(a[0].d),"",NAN,opt);
847 	else if(!strcmp(k,"ds"))	gr->ContY(*(a[0].d),a[1].s.s,NAN,opt);
848 	else if(!strcmp(k,"dsn"))	gr->ContY(*(a[0].d),a[1].s.s,a[2].v,opt);
849 	else res = 1;
850 	return res;
851 }
852 //-----------------------------------------------------------------------------
mgls_contfy(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)853 int static mgls_contfy(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
854 {
855 	int res=0;
856 	if(!strcmp(k,"d"))	gr->ContFY(*(a[0].d),"",NAN,opt);
857 	else if(!strcmp(k,"ds"))	gr->ContFY(*(a[0].d),a[1].s.s,NAN,opt);
858 	else if(!strcmp(k,"dsn"))	gr->ContFY(*(a[0].d),a[1].s.s,a[2].v,opt);
859 	else res = 1;
860 	return res;
861 }
862 //-----------------------------------------------------------------------------
mgls_contz(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)863 int static mgls_contz(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
864 {
865 	int res=0;
866 	if(!strcmp(k,"d"))	gr->ContZ(*(a[0].d),"",NAN,opt);
867 	else if(!strcmp(k,"ds"))	gr->ContZ(*(a[0].d),a[1].s.s,NAN,opt);
868 	else if(!strcmp(k,"dsn"))	gr->ContZ(*(a[0].d),a[1].s.s,a[2].v,opt);
869 	else res = 1;
870 	return res;
871 }
872 //-----------------------------------------------------------------------------
mgls_contfz(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)873 int static mgls_contfz(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
874 {
875 	int res=0;
876 	if(!strcmp(k,"d"))	gr->ContFZ(*(a[0].d),"",NAN,opt);
877 	else if(!strcmp(k,"ds"))	gr->ContFZ(*(a[0].d),a[1].s.s,NAN,opt);
878 	else if(!strcmp(k,"dsn"))	gr->ContFZ(*(a[0].d),a[1].s.s,a[2].v,opt);
879 	else res = 1;
880 	return res;
881 }
882 //-----------------------------------------------------------------------------
mgls_crust(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)883 int static mgls_crust(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
884 {
885 	int res=0;
886 	if(!strcmp(k,"ddd"))	gr->Crust(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
887 	else if(!strcmp(k,"ddds"))	gr->Crust(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
888 	else res = 1;
889 	return res;
890 }
891 //-----------------------------------------------------------------------------
mgls_dcont(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)892 int static mgls_dcont(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
893 {
894 	int res=0;
895 	mglData v;	v.a[0]=a[0].v;
896 	if(!strcmp(k,"dd"))	gr->DCont(*(a[0].d), *(a[1].d), "", opt);
897 	else if(!strcmp(k,"dds"))	gr->DCont(*(a[0].d), *(a[1].d), a[2].s.s, opt);
898 	else if(!strcmp(k,"ddd"))	gr->DCont(*(a[0].d), *(a[1].d), *(a[2].d), "", opt);
899 	else if(!strcmp(k,"ddds"))	gr->DCont(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.s, opt);
900 	else if(!strcmp(k,"ndd"))	gr->DCont(v, *(a[1].d), *(a[2].d), "", opt);
901 	else if(!strcmp(k,"ndds"))	gr->DCont(v, *(a[1].d), *(a[2].d), a[3].s.s, opt);
902 	else if(!strcmp(k,"ddddd"))	gr->DCont(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), "", opt);
903 	else if(!strcmp(k,"ddddds"))	gr->DCont(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.s, opt);
904 	else if(!strcmp(k,"dddddd"))	gr->DCont(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), *(a[5].d), "", opt);
905 	else if(!strcmp(k,"dddddds"))	gr->DCont(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), *(a[5].d), a[6].s.s, opt);
906 	else if(!strcmp(k,"nddddd"))	gr->DCont(v, *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), *(a[5].d), "", opt);
907 	else if(!strcmp(k,"nddddds"))	gr->DCont(v, *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), *(a[5].d), a[6].s.s, opt);
908 	else res = 1;
909 	return res;
910 }
911 //-----------------------------------------------------------------------------
mgls_dens3(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)912 int static mgls_dens3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
913 {
914 	int res=0;
915 	if(!strcmp(k,"d"))	gr->Dens3(*(a[0].d),"",-1,opt);
916 	else if(!strcmp(k,"ds"))	gr->Dens3(*(a[0].d),a[1].s.s,-1,opt);
917 	else if(!strcmp(k,"dsn"))	gr->Dens3(*(a[0].d),a[1].s.s,mgl_int(a[2].v),opt);
918 	else if(!strcmp(k,"dddd"))	gr->Dens3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"", -1,opt);
919 	else if(!strcmp(k,"dddds"))	gr->Dens3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,-1,opt);
920 	else if(!strcmp(k,"ddddsn"))	gr->Dens3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,mgl_int(a[5].v),opt);
921 	else res = 1;
922 	return res;
923 }
924 //-----------------------------------------------------------------------------
mgls_densx(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)925 int static mgls_densx(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
926 {
927 	int res=0;
928 	if(!strcmp(k,"d"))	gr->DensX(*(a[0].d),"",NAN,opt);
929 	else if(!strcmp(k,"ds"))	gr->DensX(*(a[0].d),a[1].s.s,NAN,opt);
930 	else if(!strcmp(k,"dsn"))	gr->DensX(*(a[0].d),a[1].s.s,a[2].v,opt);
931 	else res = 1;
932 	return res;
933 }
934 //-----------------------------------------------------------------------------
mgls_densy(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)935 int static mgls_densy(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
936 {
937 	int res=0;
938 	if(!strcmp(k,"d"))	gr->DensY(*(a[0].d),"",NAN,opt);
939 	else if(!strcmp(k,"ds"))	gr->DensY(*(a[0].d),a[1].s.s,NAN,opt);
940 	else if(!strcmp(k,"dsn"))	gr->DensY(*(a[0].d),a[1].s.s,a[2].v,opt);
941 	else res = 1;
942 	return res;
943 }
944 //-----------------------------------------------------------------------------
mgls_densz(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)945 int static mgls_densz(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
946 {
947 	int res=0;
948 	if(!strcmp(k,"d"))	gr->DensZ(*(a[0].d),"",NAN,opt);
949 	else if(!strcmp(k,"ds"))	gr->DensZ(*(a[0].d),a[1].s.s,NAN,opt);
950 	else if(!strcmp(k,"dsn"))	gr->DensZ(*(a[0].d),a[1].s.s,a[2].v,opt);
951 	else res = 1;
952 	return res;
953 }
954 //-----------------------------------------------------------------------------
mgls_dots(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)955 int static mgls_dots(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
956 {
957 	int res=0;
958 	if(!strcmp(k,"ddd"))	gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
959 	else if(!strcmp(k,"ddds"))	gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
960 	else if(!strcmp(k,"dddd"))	gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
961 	else if(!strcmp(k,"dddds"))	gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
962 	else if(!strcmp(k,"ddddd"))	gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
963 	else if(!strcmp(k,"ddddds"))gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.s,opt);
964 	else res = 1;
965 	return res;
966 }
967 //-----------------------------------------------------------------------------
mgls_grid3(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)968 int static mgls_grid3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
969 {
970 	int res=0;
971 	if(!strcmp(k,"d"))	gr->Grid3(*(a[0].d),"",-1,opt);
972 	else if(!strcmp(k,"ds"))	gr->Grid3(*(a[0].d),a[1].s.s,-1,opt);
973 	else if(!strcmp(k,"dsn"))	gr->Grid3(*(a[0].d),a[1].s.s,mgl_int(a[2].v),opt);
974 	else if(!strcmp(k,"dddd"))	gr->Grid3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",-1,opt);
975 	else if(!strcmp(k,"dddds"))	gr->Grid3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,-1,opt);
976 	else if(!strcmp(k,"ddddsn"))gr->Grid3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,mgl_int(a[5].v),opt);
977 	else res = 1;
978 	return res;
979 }
980 //-----------------------------------------------------------------------------
mgls_surf3(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)981 int static mgls_surf3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
982 {
983 	int res=0;
984 	if(!strcmp(k,"d"))	gr->Surf3(*(a[0].d),"",opt);
985 	else if(!strcmp(k,"ds"))	gr->Surf3(*(a[0].d),a[1].s.s,opt);
986 	else if(!strcmp(k,"dn"))	gr->Surf3(a[1].v,*(a[0].d),"",opt);
987 	else if(!strcmp(k,"dns"))	gr->Surf3(a[1].v,*(a[0].d),a[2].s.s,opt);
988 	else if(!strcmp(k,"dddd"))	gr->Surf3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt);
989 	else if(!strcmp(k,"dddds"))	gr->Surf3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.s,opt);
990 	else if(!strcmp(k,"ddddn"))	gr->Surf3(a[4].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
991 	else if(!strcmp(k,"ddddns"))gr->Surf3(a[4].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[5].s.s,opt);
992 	else res = 1;
993 	return res;
994 }
995 //-----------------------------------------------------------------------------
mgls_surf3c(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)996 int static mgls_surf3c(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
997 {
998 	int res=0;
999 	if(!strcmp(k,"dd"))	gr->Surf3C(*(a[0].d),*(a[1].d),"",opt);
1000 	else if(!strcmp(k,"dds"))	gr->Surf3C(*(a[0].d),*(a[1].d),a[2].s.s,opt);
1001 	else if(!strcmp(k,"ddn"))	gr->Surf3C(a[2].v,*(a[0].d),*(a[1].d),"",opt);
1002 	else if(!strcmp(k,"ddns"))	gr->Surf3C(a[2].v,*(a[0].d),*(a[1].d),a[3].s.s,opt);
1003 	else if(!strcmp(k,"ddddd"))
1004 		gr->Surf3C(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), "",opt);
1005 	else if(!strcmp(k,"ddddds"))
1006 		gr->Surf3C(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), a[5].s.s,opt);
1007 	else if(!strcmp(k,"dddddn"))
1008 		gr->Surf3C(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
1009 	else if(!strcmp(k,"dddddns"))
1010 		gr->Surf3C(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[6].s.s,opt);
1011 	else res = 1;
1012 	return res;
1013 }
1014 //-----------------------------------------------------------------------------
mgls_surf3a(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)1015 int static mgls_surf3a(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
1016 {
1017 	int res=0;
1018 	if(!strcmp(k,"dd"))	gr->Surf3A(*(a[0].d),*(a[1].d),"",opt);
1019 	else if(!strcmp(k,"dds"))	gr->Surf3A(*(a[0].d),*(a[1].d),a[2].s.s,opt);
1020 	else if(!strcmp(k,"ddn"))	gr->Surf3A(a[2].v,*(a[0].d),*(a[1].d),"",opt);
1021 	else if(!strcmp(k,"ddns"))	gr->Surf3A(a[2].v,*(a[0].d),*(a[1].d),a[3].s.s,opt);
1022 	else if(!strcmp(k,"ddddd"))
1023 		gr->Surf3A(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), "",opt);
1024 	else if(!strcmp(k,"ddddds"))
1025 		gr->Surf3A(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), a[5].s.s,opt);
1026 	else if(!strcmp(k,"dddddn"))
1027 		gr->Surf3A(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt);
1028 	else if(!strcmp(k,"dddddns"))
1029 		gr->Surf3A(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[6].s.s,opt);
1030 	else res = 1;
1031 	return res;
1032 }
1033 //-----------------------------------------------------------------------------
mgls_surf3ca(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)1034 int static mgls_surf3ca(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
1035 {
1036 	int res=0;
1037 	if(!strcmp(k,"ddd"))	gr->Surf3CA(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
1038 	else if(!strcmp(k,"ddds"))	gr->Surf3CA(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
1039 	else if(!strcmp(k,"dddn"))	gr->Surf3CA(a[4].v,*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
1040 	else if(!strcmp(k,"dddns"))	gr->Surf3CA(a[4].v,*(a[0].d),*(a[1].d),*(a[2].d),a[4].s.s,opt);
1041 	else if(!strcmp(k,"dddddd"))
1042 		gr->Surf3CA(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d), "",opt);
1043 	else if(!strcmp(k,"dddddds"))
1044 		gr->Surf3CA(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d), a[6].s.s,opt);
1045 	else if(!strcmp(k,"ddddddn"))
1046 		gr->Surf3CA(a[6].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
1047 	else if(!strcmp(k,"ddddddns"))
1048 		gr->Surf3CA(a[6].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[7].s.s,opt);
1049 	else res = 1;
1050 	return res;
1051 }
1052 //-----------------------------------------------------------------------------
1053 //	Vect
1054 //-----------------------------------------------------------------------------
mgls_dew(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)1055 int static mgls_dew(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
1056 {
1057 	int res=0;
1058 	if(!strcmp(k,"dd"))	gr->Dew(*(a[0].d),*(a[1].d),"",opt);
1059 	else if(!strcmp(k,"dds"))	gr->Dew(*(a[0].d),*(a[1].d),a[2].s.s,opt);
1060 	else if(!strcmp(k,"dddd"))	gr->Dew(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
1061 	else if(!strcmp(k,"dddds"))	gr->Dew(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
1062 	else res = 1;
1063 	return res;
1064 }
1065 //-----------------------------------------------------------------------------
mgls_flow(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)1066 int static mgls_flow(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
1067 {
1068 	int res=0;
1069 	if(!strcmp(k,"dd"))	gr->Flow(*(a[0].d),*(a[1].d),"",opt);
1070 	else if(!strcmp(k,"dds"))	gr->Flow(*(a[0].d),*(a[1].d),a[2].s.s,opt);
1071 	else if(!strcmp(k,"ddd"))	gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
1072 	else if(!strcmp(k,"ddds"))	gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
1073 	else if(!strcmp(k,"dddd"))	gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
1074 	else if(!strcmp(k,"dddds"))	gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
1075 	else if(!strcmp(k,"dddddd"))
1076 		gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
1077 	else if(!strcmp(k,"dddddds"))
1078 		gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
1079 	else if(!strcmp(k,"nndd"))
1080 		gr->FlowP(mglPoint(a[0].v,a[1].v,NAN), *(a[2].d),*(a[3].d),"",opt);
1081 	else if(!strcmp(k,"nndds"))
1082 		gr->FlowP(mglPoint(a[0].v,a[1].v,NAN), *(a[2].d),*(a[3].d),a[4].s.s,opt);
1083 	else if(!strcmp(k,"nndddd"))
1084 		gr->FlowP(mglPoint(a[0].v,a[1].v,NAN), *(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
1085 	else if(!strcmp(k,"nndddds"))
1086 		gr->FlowP(mglPoint(a[0].v,a[1].v,NAN), *(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
1087 	else if(!strcmp(k,"nnnddd"))
1088 		gr->FlowP(mglPoint(a[0].v,a[1].v,a[2].v), *(a[3].d),*(a[4].d),*(a[5].d),"",opt);
1089 	else if(!strcmp(k,"nnnddds"))
1090 		gr->FlowP(mglPoint(a[0].v,a[1].v,a[2].v), *(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
1091 	else if(!strcmp(k,"nnndddddd"))
1092 		gr->FlowP(mglPoint(a[0].v,a[1].v,a[2].v), *(a[3].d),*(a[4].d),*(a[5].d),*(a[6].d),*(a[7].d),*(a[8].d),"",opt);
1093 	else if(!strcmp(k,"nnndddddds"))
1094 		gr->FlowP(mglPoint(a[0].v,a[1].v,a[2].v), *(a[3].d),*(a[4].d),*(a[5].d),*(a[6].d),*(a[7].d),*(a[8].d),a[9].s.s,opt);
1095 	else res = 1;
1096 	return res;
1097 }
1098 //-----------------------------------------------------------------------------
mgls_flow3(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)1099 int static mgls_flow3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
1100 {
1101 	int res=0;
1102 	if(!strcmp(k,"ddd"))	gr->Flow3(*(a[0].d),*(a[1].d),*(a[2].d),"",-1,opt);
1103 	else if(!strcmp(k,"ddds"))	gr->Flow3(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,-1,opt);
1104 	else if(!strcmp(k,"dddsn"))	gr->Flow3(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,a[4].v,opt);
1105 	else if(!strcmp(k,"dddddd"))
1106 		gr->Flow3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",-1,opt);
1107 	else if(!strcmp(k,"dddddds"))
1108 		gr->Flow3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,-1,opt);
1109 	else if(!strcmp(k,"ddddddsn"))
1110 		gr->Flow3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,a[7].v,opt);
1111 	else res = 1;
1112 	return res;
1113 }
1114 //-----------------------------------------------------------------------------
mgls_grad(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)1115 int static mgls_grad(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
1116 {
1117 	int res=0;
1118 	if(!strcmp(k,"d"))	gr->Grad(*(a[0].d), "",opt);
1119 	else if(!strcmp(k,"ds"))	gr->Grad(*(a[0].d), a[1].s.s,opt);
1120 	else if(!strcmp(k,"ddd"))	gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d), "",opt);
1121 	else if(!strcmp(k,"ddds"))	gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d), a[3].s.s,opt);
1122 	else if(!strcmp(k,"dddd"))	gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt);
1123 	else if(!strcmp(k,"dddds"))	gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.s,opt);
1124 	else res = 1;
1125 	return res;
1126 }
1127 //-----------------------------------------------------------------------------
mgls_pipe(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)1128 int static mgls_pipe(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
1129 {
1130 	int res=0;
1131 	if(!strcmp(k,"dd"))	gr->Pipe(*(a[0].d),*(a[1].d),"",0.05,opt);
1132 	else if(!strcmp(k,"dds"))	gr->Pipe(*(a[0].d),*(a[1].d),a[2].s.s,0.05,opt);
1133 	else if(!strcmp(k,"ddsn"))	gr->Pipe(*(a[0].d),*(a[1].d),a[2].s.s,a[3].v,opt);
1134 	else if(!strcmp(k,"dddd"))
1135 		gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",0.05,opt);
1136 	else if(!strcmp(k,"dddds"))
1137 		gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,0.05,opt);
1138 	else if(!strcmp(k,"ddddsn"))
1139 		gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,a[5].v,opt);
1140 	else if(!strcmp(k,"ddd"))
1141 		gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),"",0.05,opt);
1142 	else if(!strcmp(k,"ddds"))
1143 		gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,0.05,opt);
1144 	else if(!strcmp(k,"dddsn"))
1145 		gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,a[4].v,opt);
1146 	else if(!strcmp(k,"dddddd"))
1147 		gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",0.05,opt);
1148 	else if(!strcmp(k,"dddddds"))
1149 		gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,0.05,opt);
1150 	else if(!strcmp(k,"ddddddsn"))
1151 		gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,a[7].v,opt);
1152 	else res = 1;
1153 	return res;
1154 }
1155 //-----------------------------------------------------------------------------
mgls_traj(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)1156 int static mgls_traj(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
1157 {
1158 	int res=0;
1159 	if(!strcmp(k,"dddd"))
1160 		gr->Traj(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
1161 	else if(!strcmp(k,"dddds"))
1162 		gr->Traj(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
1163 	else if(!strcmp(k,"dddddd"))
1164 		gr->Traj(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
1165 	else if(!strcmp(k,"dddddds"))
1166 		gr->Traj(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
1167 	else res = 1;
1168 	return res;
1169 }
1170 //-----------------------------------------------------------------------------
mgls_vect(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)1171 int static mgls_vect(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
1172 {
1173 	int res=0;
1174 	if(!strcmp(k,"dd"))	gr->Vect(*(a[0].d),*(a[1].d),"",opt);
1175 	else if(!strcmp(k,"dds"))	gr->Vect(*(a[0].d),*(a[1].d),a[2].s.s,opt);
1176 	else if(!strcmp(k,"ddd"))	gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),"",opt);
1177 	else if(!strcmp(k,"ddds"))	gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,opt);
1178 	else if(!strcmp(k,"dddd"))	gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt);
1179 	else if(!strcmp(k,"dddds"))	gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.s,opt);
1180 	else if(!strcmp(k,"dddddd"))	gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt);
1181 	else if(!strcmp(k,"dddddds"))	gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,opt);
1182 	else res = 1;
1183 	return res;
1184 }
1185 //-----------------------------------------------------------------------------
mgls_vect3(mglGraph * gr,long,mglArg * a,const char * k,const char * opt)1186 int static mgls_vect3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
1187 {
1188 	int res=0;
1189 	if(!strcmp(k,"ddd"))
1190 		gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),"",-1,opt);
1191 	else if(!strcmp(k,"ddds"))
1192 		gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,-1,opt);
1193 	else if(!strcmp(k,"dddsn"))
1194 		gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.s,a[4].v,opt);
1195 	else if(!strcmp(k,"dddddd"))
1196 		gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",-1,opt);
1197 	else if(!strcmp(k,"dddddds"))
1198 		gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,-1,opt);
1199 	else if(!strcmp(k,"ddddddsn"))
1200 		gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.s,a[7].v,opt);
1201 	else res = 1;
1202 	return res;
1203 }
1204 //-----------------------------------------------------------------------------
1205 mglCommand mgls_grf_cmd[] = {
1206 	{"area",_("Draw area plot for 1D data"),"area Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_area ,7},
1207 	{"axial",_("Draw surfaces of contour lines rotation"),"axial Zdat ['fmt' num]|Xdat Ydat Zdat ['fmt' num]", mgls_axial ,8},
1208 	{"barh",_("Draw horizontal bars for 1D data"), "barh Ydat ['fmt' above]|Xdat Ydat ['fmt' above]", mgls_barh ,7},
1209 	{"bars",_("Draw bars for 1D data"),"bars Ydat ['fmt' above]|Xdat Ydat ['fmt' above]|Xdat Ydat Zdat ['fmt' above]", mgls_bars ,7},
1210 	{"beam",_("Draw quasi-optical beam"),"beam Ray G1 G2 Adat r ['sch' flag num]|val Ray G1 G2 Adat r ['sch' flag num]", mgls_beam ,9},
1211 	{"belt",_("Draw belts"),"belt Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_belt ,8},
1212 	{"beltc",_("Draw belts colored by other data"),"beltc Zdat Cdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_beltc ,8},
1213 	{"bifurcation",_("Draw Bifurcation diagram"),"bifurcation dx Func ['fmt']|dx 'func' ['fmt']", mgls_bifurcation,13},
1214 	{"boxplot",_("Draw boxplot for 2D data"),"boxplot Ydat ['fmt']|Xdat Ydat ['fmt']", mgls_boxplot ,7},
1215 	{"boxs",_("Draw boxes"),"boxs Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_boxs ,8},
1216 	{"candle",_("Draw candlestick chart"),"candle candle Vdat1 ['fmt']|Vdat1 Vdat2 ['fmt']|Vdat1 Ydat1 Ydat2 ['fmt']||Vdat1 Vdat2 Ydat1 Ydat2 ['fmt']|Xdat Vdat1 Vdat2 Ydat1 Ydat2 ['fmt']", mgls_candle ,7},
1217 	{"chart",_("Draw chart"),"chart Dat ['fmt']", mgls_chart ,7},
1218 	{"cloud",_("Draw cloud"),"cloud Adat ['fmt']|Xdat Ydat Zdat Adat ['fmt']", mgls_cloud ,9},
1219 	{"cones",_("Draw cones for 1D data"),"cones Ydat ['fmt' above]|Xdat Ydat ['fmt' above]|Xdat Ydat Zdat ['fmt' above]", mgls_cones ,7},
1220 	{"cont",_("Draw contour lines"),"cont Zdat ['fmt']|Vdat Zdat ['fmt']|Xdat Ydat Zdat ['fmt']|Vdat Xdat Ydat Zdat ['fmt']|val Adat Xdat Ydat Zdat ['fmt']", mgls_cont ,8},
1221 	{"cont3",_("Draw contour lines for 3D data"),"cont3 Adat 'dir' [val 'fmt' num]|Vdat Adat 'dir' [val 'fmt']|Xdat Ydat Zdat Adat 'dir' [val 'fmt' num]|Vdat Xdat Ydat Zdar Adat 'dir' [val 'fmt']", mgls_cont3 ,9},
1222 	{"contd",_("Draw solid contours with manual colors"),"contd Zdat ['fmt']|Vdat Zdat ['fmt']|Xdat Ydat Zdat ['fmt']|Vdat Xdat Ydat Zdat ['fmt']", mgls_contd ,8},
1223 	{"contf",_("Draw solid contours"),"contf Zdat ['fmt']|Vdat Zdat ['fmt']|Xdat Ydat Zdat ['fmt']|Vdat Xdat Ydat Zdat ['fmt']|v1 v2 Adat Xdat Ydat Zdat ['fmt']", mgls_contf ,8},
1224 	{"contf3",_("Draw solid contour lines for 3D data"),"contf3 Adat 'dir' [val 'fmt' num]|Vdat Adat 'dir' [val 'fmt']|Xdat Ydat Zdat Adat 'dir' [val 'fmt' num]|Vdat Xdat Ydat Zdar Adat 'dir' [val 'fmt']", mgls_contf3 ,9},
1225 	{"contfx",_("Draw solid contour lines at x-slice (or x-plane)"),"contfx Dat ['fmt' pos num]", mgls_contfx ,0},
1226 	{"contfy",_("Draw solid contour lines at y-slice (or y-plane)"),"contfy Dat ['fmt' pos num]", mgls_contfy ,0},
1227 	{"contfz",_("Draw solid contour lines at z-slice (or z-plane)"),"contfz Dat ['fmt' pos num]", mgls_contfz ,0},
1228 	{"contp",_("Draw contour lines on parametric surface"),"contp Xdat Ydat Zdat Adat ['fmt' num zpos]|Vdat Xdat Ydat Zdat Adat ['fmt' zpos]", mgls_contp ,8},
1229 	{"contv",_("Draw contour tubes"),"contv Zdat ['fmt' num zpos]|Vdat Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' num zpos]|Vdat Xdat Ydat Zdat ['fmt' zpos]", mgls_contv ,0},
1230 	{"contx",_("Draw contour lines at x-slice (or x-plane)"),"contx Dat ['fmt' pos num]", mgls_contx ,0},
1231 	{"conty",_("Draw contour lines at y-slice (or y-plane)"),"conty Dat ['fmt' pos num]", mgls_conty ,0},
1232 	{"contz",_("Draw contour lines at z-slice (or z-plane)"),"contz Dat ['fmt' pos num]", mgls_contz ,0},
1233 	{"crust",_("Draw reconstructed surface for arbitrary data points"),"crust Xdat Ydat Zdat ['fmt']", mgls_crust ,0},
1234 	{"dcont",_("Draw curves of cross-section of isosurfaces a,b for 3D data"),"dcont Adat Bdat ['fmt']|Vdat Adat Bdat ['fmt']|Xdat Ydat Zdat Adat Bdat ['fmt']|Vdat Xdat Ydat Zdar Adat Bdat ['fmt']", mgls_dcont ,9},
1235 	{"dens",_("Draw density plot"),"dens Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' zpos]", mgls_dens ,8},
1236 	{"dens3",_("Draw density plot at slices of 3D data"),"dens3 Adat 'dir' [pos 'fmt']|Xdat Ydat Zdat Adat 'dir' [pos 'fmt']", mgls_dens3 ,9},
1237 	{"densx",_("Draw density plot at x-slice (or x-plane)"),"densx Dat ['fmt' pos]", mgls_densx ,0},
1238 	{"densy",_("Draw density plot at y-slice (or y-plane)"),"densy Dat ['fmt' pos]", mgls_densy ,0},
1239 	{"densz",_("Draw density plot at z-slice (or z-plane)"),"densz Dat ['fmt' pos]", mgls_densz ,0},
1240 	{"dew",_("Draw dew plot"),"dew Udat Vdat ['fmt']|Xdat Ydat Udat Vdat ['fmt']", mgls_dew ,11},
1241 	{"dots",_("Draw dots for arbitrary data points"),"dots Xdat Ydat Zdat ['fmt']|Xdat Ydat Zdat Adat ['fmt']|Xdat Ydat Zdat Cdat Adat ['fmt']", mgls_dots ,9},
1242 	{"error",_("Draw error boxes"),"error Ydat Yerr ['fmt']|Xdat Ydat Yerr ['fmt']|Xdat Ydat Xerr Yerr ['fmt']", mgls_error ,7},
1243 	{"fall",_("Draw waterfalls"),"fall Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_fall ,8},
1244 	{"flow",_("Draw flow threads for vector field"),"flow Udat Vdat ['fmt']|Xdat Ydat Udat Vdat ['fmt']|Udat Vdat Wdat ['fmt']|Xdat Ydat Zdat Udat Vdat Wdat ['fmt']|\
1245 	x0 y0 Udat Vdat ['fmt']|x0 y0 Xdat Ydat Udat Vdat ['fmt']|x0 y0 z0 Udat Vdat Wdat ['fmt']|x0 y0 z0 Xdat Ydat Zdat Udat Vdat Wdat ['fmt']", mgls_flow ,11},
1246 	{"flow3",_("Draw flow threads from plain for vector field"),"flow3 Udat Udat Vdat Wdat ['fmt' num]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' num]", mgls_flow3 ,11},
1247 	{"grad",_("Draw gradient lines for scalar field"),"grad Phi ['fmt' num]|Xdat Ydat Phi ['fmt' num]|Xdat Ydat Zdat Phi ['fmt' num]", mgls_grad ,8},
1248 	{"grid2",_("Draw grid for data array(s)"),"grid2 Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_grid2 ,8},
1249 	{"grid3",_("Draw grid at slices of 3D data"),"grid3 Adat 'dir' [pos 'fmt']|Xdat Ydat Zdat Adat 'dir' [pos 'fmt']", mgls_grid3 ,9},
1250 	{"iris",_("Draw Iris plots"),"iris Dats 'ids' ['fmt']|Dats Ranges 'ids' ['fmt']", mgls_iris,13},
1251 	{"label",_("Draw label at arbitrary position"),"label Ydat 'txt' ['fmt'='']|Xdat Ydat 'txt' ['fmt'='']|Xdat Ydat Zdat 'txt' ['fmt'='']", mgls_label ,7},
1252 	{"lamerey",_("Draw Lamerey diagram"),"lamerey x0 Func ['fmt']|x0 'func' ['fmt']", mgls_lamerey ,13},
1253 	{"lines",_("Draw lines with arrows for 1D data"),"lines Y1dat Y2dat ['fmt']|X1dat Y1dat X2dat Y2dat ['fmt']|X1dat Y1dat Z1dat X2dat Y2dat Z2dat ['fmt']", mgls_lines ,7},
1254 	{"map",_("Draw mapping plot"),"map Udat Vdat ['fmt']|Xdat Ydat Udat Vdat ['fmt']", mgls_map ,10},
1255 	{"mark",_("Draw mark plot for 1D data"),"mark Ydat Rdat ['fmt']|Xdat Ydat Rdat ['fmt']|Xdat Ydat Zdat Rdat ['fmt']", mgls_mark ,7},
1256 	{"mesh",_("Draw mesh surface"),"mesh Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_mesh ,8},
1257 	{"ohlc",_("Draw Open-High-Low-Close (OHLC) diagram"),"ohlc Odat Hdat Ldat Cdat ['fmt']|Xdat Odat Hdat Ldat Cdat ['fmt']", mgls_ohlc ,7},
1258 	{"pipe",_("Draw flow pipes for vector field"),"pipe Udat Vdat ['fmt' rad num]|Xdat Ydat Udat Vdat ['fmt' rad num]|Udat Vdat Wdat ['fmt' rad num]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' rad num]", mgls_pipe ,11},
1259 	{"plot",_("Draw usual plot for 1D data"),"plot Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_plot ,7},
1260 	{"pmap",_("Draw Poincare map"),"pmap Ydat Rdat ['fmt']|Xdat Ydat Rdat ['fmt']|Xdat Ydat Zdat Rdat ['fmt']", mgls_pmap ,7},
1261 	{"quadplot",_("Draw surface of quadrangles"),"quadplot Idat Xdat Ydat ['fmt']|Idat Xdat Ydat Zdat ['fmt']|Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_quadplot ,0},
1262 	{"radar",_("Draw radar chart"),"radar Rdat ['fmt']", mgls_radar ,7},
1263 	{"region",_("Draw filled region (ribbon) between 2 curves"),"region Ydat1 Ydat2 ['fmt']|Xdat Ydat1 Ydat2 ['fmt']||Xdat1 Ydat1 Xdat2 Ydat2 ['fmt']|Xdat1 Ydat1 Zdat1 Xdat2 Ydat2 Zdat2 ['fmt']", mgls_region ,7},
1264 	{"stem",_("Draw stem plot for 1D data"),"stem Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_stem ,7},
1265 	{"step",_("Draw step plot for 1D data"),"step Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_step ,7},
1266 	{"stfa",_("Draw STFA diagram"),"stfa Udat Vdat dn ['fmt']|Xdat Ydat Udat Vdat dn ['fmt']", mgls_stfa ,10},
1267 	{"surf",_("Draw solid surface"),"surf Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_surf ,8},
1268 	{"surf3",_("Draw isosurface for 3D data"),"surf3 Adat ['fmt' num]|Xdat Ydat Zdat Adat ['fmt' num]|Adat val ['fmt']|Xdat Ydat Zdat Adat val ['fmt']", mgls_surf3 ,9},
1269 	{"surf3a",_("Draw isosurface for 3D data transpared by other data"),"surf3a Adat Cdat ['fmt' num]|Xdat Ydat Zdat Adat Cdat ['fmt' num]|Adat Cdat val ['fmt']|Xdat Ydat Zdat Adat Cdat val ['fmt']", mgls_surf3a ,10},
1270 	{"surf3c",_("Draw isosurface for 3D data colored by other data"),"surf3c Adat Cdat ['fmt' num]|Xdat Ydat Zdat Adat Cdat ['fmt' num]|Adat Cdat val ['fmt']|Xdat Ydat Zdat Adat Cdat val ['fmt']", mgls_surf3c ,10},
1271 	{"surf3ca",_("Draw isosurface for 3D data colored and transpared by other data"),"surf3c Adat Cdat Bdat ['fmt' num]|Xdat Ydat Zdat Adat Cdat Bdat ['fmt' num]|Adat Cdat Bdat val ['fmt']|Xdat Ydat Zdat Adat Cdat Bdat val ['fmt']", mgls_surf3ca ,10},
1272 	{"surfa",_("Draw solid surface transpared by other data"),"surfa Zdat Cdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_surfa ,10},
1273 	{"surfc",_("Draw solid surface colored by other data"),"surfc Zdat Cdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_surfc ,10},
1274 	{"surfca",_("Draw solid surface colored and transpared by other data"),"surfca Zdat Cdat Adat ['fmt']|Xdat Ydat Zdat Cdat Adat ['fmt']", mgls_surfca ,10},
1275 	{"table",_("Draw table with data values"),"table Dat ['txt' 'fmt']|x y Dat ['txt' 'fmt']", mgls_table ,7},
1276 	{"tape",_("Draw binormales for 1D data"),"tape Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_tape ,7},
1277 	{"tens",_("Draw tension plot for 1D data"),"tens Ydat Cdat ['fmt']|Xdat Ydat Cdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_tens ,7},
1278 	{"textmark",_("Draw TeX mark at point position"),"textmark Ydat Rdat 'text' ['fmt']|Xdat Ydat Rdat 'text' ['fmt']|Xdat Ydat Zdat Rdat 'text' ['fmt']", mgls_textmark ,7},
1279 	{"tile",_("Draw horizontal tiles"),"tile Zdat ['fmt']|Xdat Ydat Zdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_tile ,8},
1280 	{"tiles",_("Draw horizontal tiles with variable size"),"tiles Zdat Rdat ['fmt']|Xdat Ydat Zdat Rdat ['fmt']|Xdat Ydat Zdat Rdat Cdat ['fmt']", mgls_tiles ,10},
1281 	{"torus",_("Draw surface of curve rotation"),"torus Rdat ['fmt']|Zdat Rdat ['fmt']", mgls_torus ,7},
1282 	{"traj",_("Draw vectors along a curve"),"traj Xdat Ydat Udat Vdat ['fmt' len]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' len]", mgls_traj ,11},
1283 	{"tricont",_("Draw contour lines for surface of triangles"),"tricont Idat Xdat Ydat Cdat ['fmt']|Idat Xdat Ydat Zdat Cdat ['fmt']|Vdat Idat Xdat Ydat Cdat ['fmt']|Vdat Idat Xdat Ydat Zdat Cdat ['fmt']", mgls_tricont ,0},
1284 	{"tricontv",_("Draw contour tubes for surface of triangles"),"tricontv Idat Xdat Ydat Cdat ['fmt']|Idat Xdat Ydat Zdat Cdat ['fmt']|Vdat Idat Xdat Ydat Cdat ['fmt']|Vdat Idat Xdat Ydat Zdat Cdat ['fmt']", mgls_tricontv ,0},
1285 	{"triplot",_("Draw surface of triangles"),"triplot Idat Xdat Ydat ['fmt']|Idat Xdat Ydat Zdat ['fmt']|Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_triplot ,0},
1286 	{"tube",_("Draw curve by tube"),"tube Ydat Rdat ['fmt']|Ydat rval ['fmt']|Xdat Ydat Rdat ['fmt']|Xdat Ydat rval ['fmt']|Xdat Ydat Zdat Rdat ['fmt']|Xdat Ydat Zdat rval ['fmt']", mgls_tube ,7},
1287 	{"vect",_("Draw vector field"),"vect Udat Vdat ['fmt']|Xdat Ydat Udat Vdat ['fmt']|Udat Vdat Wdat ['fmt']|Xdat Ydat Zdat Udat Vdat Wdat ['fmt']", mgls_vect ,11},
1288 	{"vect3",_("Draw vector field at slices of 3D data"),"vect Udat Vdat Wdat ['fmt' sval]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' sval]", mgls_vect3 ,11},
1289 {"","","",NULL,0}};
1290 //-----------------------------------------------------------------------------
1291