Blame src/tables.c

Packit 0986c0
#ifndef lint
Packit 0986c0
static char *RCSid() { return RCSid("$Id: tables.c,v 1.155 2017/05/20 01:27:30 sfeam Exp $"); }
Packit 0986c0
#endif
Packit 0986c0
Packit 0986c0
/* GNUPLOT - tables.c */
Packit 0986c0
Packit 0986c0
/*[
Packit 0986c0
 * Copyright 1999, 2004   Lars Hecking
Packit 0986c0
 *
Packit 0986c0
 * Permission to use, copy, and distribute this software and its
Packit 0986c0
 * documentation for any purpose with or without fee is hereby granted,
Packit 0986c0
 * provided that the above copyright notice appear in all copies and
Packit 0986c0
 * that both that copyright notice and this permission notice appear
Packit 0986c0
 * in supporting documentation.
Packit 0986c0
 *
Packit 0986c0
 * Permission to modify the software is granted, but not the right to
Packit 0986c0
 * distribute the complete modified source code.  Modifications are to
Packit 0986c0
 * be distributed as patches to the released version.  Permission to
Packit 0986c0
 * distribute binaries produced by compiling modified sources is granted,
Packit 0986c0
 * provided you
Packit 0986c0
 *   1. distribute the corresponding source modifications from the
Packit 0986c0
 *    released version in the form of a patch file along with the binaries,
Packit 0986c0
 *   2. add special version identification to distinguish your version
Packit 0986c0
 *    in addition to the base release version number,
Packit 0986c0
 *   3. provide your name and address as the primary contact for the
Packit 0986c0
 *    support of your modified version, and
Packit 0986c0
 *   4. retain our contact information in regard to use of the base
Packit 0986c0
 *    software.
Packit 0986c0
 * Permission to distribute the released version of the source code along
Packit 0986c0
 * with corresponding source modifications in the form of a patch file is
Packit 0986c0
 * granted with same provisions 2 through 4 for binary distributions.
Packit 0986c0
 *
Packit 0986c0
 * This software is provided "as is" without express or implied warranty
Packit 0986c0
 * to the extent permitted by applicable law.
Packit 0986c0
]*/
Packit 0986c0
Packit 0986c0
#include "tables.h"
Packit 0986c0
Packit 0986c0
#include "command.h"
Packit 0986c0
#include "datablock.h"
Packit 0986c0
#include "fit.h"
Packit 0986c0
#include "setshow.h"
Packit 0986c0
#include "term_api.h"
Packit 0986c0
#include "util.h"
Packit 0986c0
#include "alloc.h"	/* for init_colornames() */
Packit 0986c0
#include "graph3d.h"	/* for DGRID3D_* options */
Packit 0986c0
# include "getcolor.h"
Packit 0986c0
Packit 0986c0
/* gnuplot commands */
Packit 0986c0
Packit 0986c0
/* the actual commands */
Packit 0986c0
const struct gen_ftable command_ftbl[] =
Packit 0986c0
{
Packit 0986c0
    { "ra$ise", raise_command },
Packit 0986c0
    { "low$er", lower_command },
Packit 0986c0
#ifdef USE_MOUSE
Packit 0986c0
    { "bi$nd", bind_command },
Packit 0986c0
#endif
Packit 0986c0
    { "array", array_command },
Packit 0986c0
    { "break", break_command },
Packit 0986c0
    { "ca$ll", call_command },
Packit 0986c0
    { "cd", changedir_command },
Packit 0986c0
    { "cl$ear", clear_command },
Packit 0986c0
    { "continue", continue_command },
Packit 0986c0
    { "do", do_command },
Packit 0986c0
    { "eval$uate", eval_command },
Packit 0986c0
    { "ex$it", exit_command },
Packit 0986c0
    { "f$it", fit_command },
Packit 0986c0
    { "h$elp", help_command },
Packit 0986c0
    { "?", help_command },
Packit 0986c0
    { "hi$story", history_command },
Packit 0986c0
    { "if", if_command },
Packit 0986c0
    { "import", import_command },
Packit 0986c0
    { "else", else_command },
Packit 0986c0
    { "l$oad", load_command },
Packit 0986c0
    { "pa$use", pause_command },
Packit 0986c0
    { "p$lot", plot_command },
Packit 0986c0
    { "pr$int", print_command },
Packit 0986c0
    { "printerr$or", printerr_command },
Packit 0986c0
    { "pwd", pwd_command },
Packit 0986c0
    { "q$uit", exit_command },
Packit 0986c0
    { "ref$resh", refresh_command },
Packit 0986c0
    { "rep$lot", replot_command },
Packit 0986c0
    { "re$read", reread_command },
Packit 0986c0
    { "res$et", reset_command },
Packit 0986c0
    { "sa$ve", save_command },
Packit 0986c0
    { "scr$eendump", screendump_command },
Packit 0986c0
    { "se$t", set_command },
Packit 0986c0
    { "she$ll", do_shell },
Packit 0986c0
    { "sh$ow", show_command },
Packit 0986c0
    { "sp$lot", splot_command },
Packit 0986c0
    { "st$ats", stats_command },
Packit 0986c0
    { "sy$stem", system_command },
Packit 0986c0
    { "test", test_command },
Packit 0986c0
    { "tog$gle", toggle_command },
Packit 0986c0
    { "und$efine", undefine_command },
Packit 0986c0
    { "uns$et", unset_command },
Packit 0986c0
    { "up$date", update_command },
Packit 0986c0
    { "while", while_command },
Packit 0986c0
    { "{", begin_clause },
Packit 0986c0
    { "}", end_clause },
Packit 0986c0
    { ";", null_command },
Packit 0986c0
    { "$", datablock_command },
Packit 0986c0
    /* last key must be NULL */
Packit 0986c0
    { NULL, invalid_command }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* 'plot ax[ei]s' parameter */
Packit 0986c0
const struct gen_table plot_axes_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "x1y1", AXES_X1Y1 },
Packit 0986c0
    { "x2y2", AXES_X2Y2 },
Packit 0986c0
    { "x1y2", AXES_X1Y2 },
Packit 0986c0
    { "x2y1", AXES_X2Y1 },
Packit 0986c0
    { NULL, AXES_NONE }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* 'plot smooth' parameter */
Packit 0986c0
const struct gen_table plot_smooth_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "a$csplines", SMOOTH_ACSPLINES },
Packit 0986c0
    { "bins", SMOOTH_BINS },
Packit 0986c0
    { "b$ezier", SMOOTH_BEZIER },
Packit 0986c0
    { "c$splines", SMOOTH_CSPLINES },
Packit 0986c0
    { "s$bezier", SMOOTH_SBEZIER },
Packit 0986c0
    { "u$nique", SMOOTH_UNIQUE },
Packit 0986c0
    { "unwrap", SMOOTH_UNWRAP },
Packit 0986c0
    { "f$requency", SMOOTH_FREQUENCY },
Packit 0986c0
    { "cum$ulative", SMOOTH_CUMULATIVE },
Packit 0986c0
    { "k$density", SMOOTH_KDENSITY },
Packit 0986c0
    { "cn$ormal", SMOOTH_CUMULATIVE_NORMALISED },
Packit 0986c0
    { "mcs$plines", SMOOTH_MONOTONE_CSPLINE },
Packit 0986c0
    { "fnor$mal", SMOOTH_FREQUENCY_NORMALISED },
Packit 0986c0
    { NULL, SMOOTH_NONE }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* dgrid3d modes */
Packit 0986c0
const struct gen_table dgrid3d_mode_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "qnorm", DGRID3D_QNORM },
Packit 0986c0
    { "spline$s", DGRID3D_SPLINES },
Packit 0986c0
    { "gauss", DGRID3D_GAUSS },
Packit 0986c0
    { "exp", DGRID3D_EXP },
Packit 0986c0
    { "cauchy", DGRID3D_CAUCHY },
Packit 0986c0
    { "box", DGRID3D_BOX },
Packit 0986c0
    { "hann", DGRID3D_HANN },
Packit 0986c0
    { NULL, DGRID3D_OTHER }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* 'save' command */
Packit 0986c0
const struct gen_table save_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "fit", SAVE_FIT },
Packit 0986c0
    { "fun$ctions", SAVE_FUNCS },
Packit 0986c0
    { "set", SAVE_SET },
Packit 0986c0
    { "ter$minal", SAVE_TERMINAL },
Packit 0986c0
    { "var$iables", SAVE_VARS },
Packit 0986c0
    { NULL, SAVE_INVALID }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* 'set' and 'show' commands */
Packit 0986c0
const struct gen_table set_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "a$ll", S_ALL },
Packit 0986c0
    { "ac$tion_table", S_ACTIONTABLE },
Packit 0986c0
    { "at", S_ACTIONTABLE },
Packit 0986c0
    { "an$gles", S_ANGLES },
Packit 0986c0
    { "ar$row", S_ARROW },
Packit 0986c0
    { "au$toscale", S_AUTOSCALE },
Packit 0986c0
    { "b$ars", S_BARS },
Packit 0986c0
    { "bind", S_BIND },
Packit 0986c0
    { "bor$der", S_BORDER },
Packit 0986c0
    { "box$width", S_BOXWIDTH },
Packit 0986c0
    { "cl$abel", S_CLABEL },
Packit 0986c0
    { "c$lip", S_CLIP },
Packit 0986c0
    { "cntrp$aram", S_CNTRPARAM },
Packit 0986c0
    { "cntrl$abel", S_CNTRLABEL },
Packit 0986c0
    { "cont$ours", S_CONTOUR },
Packit 0986c0
    { "dasht$ype", S_DASHTYPE },
Packit 0986c0
    { "dt", S_DASHTYPE },
Packit 0986c0
    { "da$ta", S_DATA },
Packit 0986c0
Packit 0986c0
    { "data$file", S_DATAFILE },
Packit 0986c0
Packit 0986c0
    { "dg$rid3d", S_DGRID3D },
Packit 0986c0
    { "du$mmy", S_DUMMY },
Packit 0986c0
    { "enc$oding", S_ENCODING },
Packit 0986c0
    { "dec$imalsign", S_DECIMALSIGN },
Packit 0986c0
    { "errorbars", S_BARS },
Packit 0986c0
    { "fit", S_FIT },
Packit 0986c0
    { "font$path", S_FONTPATH },
Packit 0986c0
    { "fo$rmat", S_FORMAT },
Packit 0986c0
    { "fu$nction", S_FUNCTIONS },
Packit 0986c0
    { "fu$nctions", S_FUNCTIONS },
Packit 0986c0
    { "g$rid", S_GRID },
Packit 0986c0
    { "hid$den3d", S_HIDDEN3D },
Packit 0986c0
    { "historysize", S_HISTORYSIZE },	/* Deprecated */
Packit 0986c0
    { "his$tory", S_HISTORY },
Packit 0986c0
    { "is$osamples", S_ISOSAMPLES },
Packit 0986c0
    { "jitter", S_JITTER },
Packit 0986c0
    { "k$ey", S_KEY },
Packit 0986c0
    { "keyt$itle", S_KEY },
Packit 0986c0
    { "la$bel", S_LABEL },
Packit 0986c0
    { "link", S_LINK },
Packit 0986c0
    { "lines$tyle", S_LINESTYLE },
Packit 0986c0
    { "linetype$s", S_LINETYPE },
Packit 0986c0
    { "ls", S_LINESTYLE },
Packit 0986c0
    { "lt", S_LINETYPE },
Packit 0986c0
    { "loa$dpath", S_LOADPATH },
Packit 0986c0
    { "loc$ale", S_LOCALE },
Packit 0986c0
    { "log$scale", S_LOGSCALE },
Packit 0986c0
    { "mac$ros", S_MACROS },
Packit 0986c0
    { "map$ping", S_MAPPING },
Packit 0986c0
    { "map$ping3d", S_MAPPING },
Packit 0986c0
Packit 0986c0
    { "mar$gins", S_MARGIN },
Packit 0986c0
    { "lmar$gin", S_LMARGIN },
Packit 0986c0
    { "rmar$gin", S_RMARGIN },
Packit 0986c0
    { "tmar$gin", S_TMARGIN },
Packit 0986c0
    { "bmar$gin", S_BMARGIN },
Packit 0986c0
Packit 0986c0
    { "micro", S_MICRO },
Packit 0986c0
    { "minus$sign", S_MINUS_SIGN },
Packit 0986c0
#ifdef USE_MOUSE
Packit 0986c0
    { "mo$use", S_MOUSE },
Packit 0986c0
#endif
Packit 0986c0
    { "mono$chrome", S_MONOCHROME },
Packit 0986c0
    { "multi$plot", S_MULTIPLOT },
Packit 0986c0
Packit 0986c0
    { "mxt$ics", S_MXTICS },
Packit 0986c0
    { "nomxt$ics", S_NOMXTICS },
Packit 0986c0
    { "mx2t$ics", S_MX2TICS },
Packit 0986c0
    { "nomx2t$ics", S_NOMX2TICS },
Packit 0986c0
    { "myt$ics", S_MYTICS },
Packit 0986c0
    { "nomyt$ics", S_NOMYTICS },
Packit 0986c0
    { "my2t$ics", S_MY2TICS },
Packit 0986c0
    { "nomy2t$ics", S_NOMY2TICS },
Packit 0986c0
    { "mzt$ics", S_MZTICS },
Packit 0986c0
    { "nomzt$ics", S_NOMZTICS },
Packit 0986c0
    { "mrt$ics", S_MRTICS },
Packit 0986c0
    { "mtt$ics", S_MTTICS },
Packit 0986c0
    { "mcbt$ics", S_MCBTICS },
Packit 0986c0
    { "nomcbt$ics", S_NOMCBTICS },
Packit 0986c0
    { "nonlinear", S_NONLINEAR },
Packit 0986c0
    { "of$fsets", S_OFFSETS },
Packit 0986c0
    { "or$igin", S_ORIGIN },
Packit 0986c0
    { "o$utput", SET_OUTPUT },
Packit 0986c0
    { "pa$rametric", S_PARAMETRIC },
Packit 0986c0
    { "pm$3d", S_PM3D },
Packit 0986c0
    { "pal$ette", S_PALETTE },
Packit 0986c0
    { "color", S_COLOR },
Packit 0986c0
    { "colorb$ox", S_COLORBOX },
Packit 0986c0
    { "colorn$ames", S_COLORNAMES },
Packit 0986c0
    { "colors$equence", S_COLORSEQUENCE },
Packit 0986c0
    { "p$lot", S_PLOT },
Packit 0986c0
    { "pointint$ervalbox", S_POINTINTERVALBOX },
Packit 0986c0
    { "poi$ntsize", S_POINTSIZE },
Packit 0986c0
    { "pol$ar", S_POLAR },
Packit 0986c0
    { "pr$int", S_PRINT },
Packit 0986c0
    { "psdir", S_PSDIR },
Packit 0986c0
    { "obj$ect", S_OBJECT },
Packit 0986c0
    { "rgbmax", S_RGBMAX },
Packit 0986c0
    { "sa$mples", S_SAMPLES },
Packit 0986c0
    { "si$ze", S_SIZE },
Packit 0986c0
    { "st$yle", S_STYLE },
Packit 0986c0
    { "su$rface", S_SURFACE },
Packit 0986c0
    { "table", S_TABLE },
Packit 0986c0
    { "t$erminal", S_TERMINAL },
Packit 0986c0
    { "termopt$ions", S_TERMOPTIONS },
Packit 0986c0
    { "theta$0", S_THETA },
Packit 0986c0
    { "ti$cs", S_TICS },
Packit 0986c0
    { "ticsc$ale", S_TICSCALE },
Packit 0986c0
    { "ticsl$evel", S_TICSLEVEL },
Packit 0986c0
    { "timef$mt", S_TIMEFMT },
Packit 0986c0
    { "tim$estamp", S_TIMESTAMP },
Packit 0986c0
    { "tit$le", S_TITLE },
Packit 0986c0
    { "v$ariables", S_VARIABLES },
Packit 0986c0
    { "ve$rsion", S_VERSION },
Packit 0986c0
    { "vi$ew", S_VIEW },
Packit 0986c0
    { "xyp$lane", S_XYPLANE },
Packit 0986c0
Packit 0986c0
    { "xda$ta", S_XDATA },
Packit 0986c0
    { "x2da$ta", S_X2DATA },
Packit 0986c0
    { "yda$ta", S_YDATA },
Packit 0986c0
    { "y2da$ta", S_Y2DATA },
Packit 0986c0
    { "zda$ta", S_ZDATA },
Packit 0986c0
    { "cbda$ta", S_CBDATA },
Packit 0986c0
Packit 0986c0
    { "xl$abel", S_XLABEL },
Packit 0986c0
    { "x2l$abel", S_X2LABEL },
Packit 0986c0
    { "yl$abel", S_YLABEL },
Packit 0986c0
    { "y2l$abel", S_Y2LABEL },
Packit 0986c0
    { "zl$abel", S_ZLABEL },
Packit 0986c0
    { "cbl$abel", S_CBLABEL },
Packit 0986c0
    { "rlabel", S_RLABEL },
Packit 0986c0
Packit 0986c0
    { "xti$cs", S_XTICS },
Packit 0986c0
    { "noxti$cs", S_NOXTICS },
Packit 0986c0
    { "x2ti$cs", S_X2TICS },
Packit 0986c0
    { "nox2ti$cs", S_NOX2TICS },
Packit 0986c0
    { "yti$cs", S_YTICS },
Packit 0986c0
    { "noyti$cs", S_NOYTICS },
Packit 0986c0
    { "y2ti$cs", S_Y2TICS },
Packit 0986c0
    { "noy2ti$cs", S_NOY2TICS },
Packit 0986c0
    { "zti$cs", S_ZTICS },
Packit 0986c0
    { "nozti$cs", S_NOZTICS },
Packit 0986c0
    { "rti$cs", S_RTICS },
Packit 0986c0
    { "tti$cs", S_TTICS },
Packit 0986c0
    { "cbti$cs", S_CBTICS },
Packit 0986c0
    { "nocbti$cs", S_NOCBTICS },
Packit 0986c0
Packit 0986c0
    { "xdti$cs", S_XDTICS },
Packit 0986c0
    { "noxdti$cs", S_NOXDTICS },
Packit 0986c0
    { "x2dti$cs", S_X2DTICS },
Packit 0986c0
    { "nox2dti$cs", S_NOX2DTICS },
Packit 0986c0
    { "ydti$cs", S_YDTICS },
Packit 0986c0
    { "noydti$cs", S_NOYDTICS },
Packit 0986c0
    { "y2dti$cs", S_Y2DTICS },
Packit 0986c0
    { "noy2dti$cs", S_NOY2DTICS },
Packit 0986c0
    { "zdti$cs", S_ZDTICS },
Packit 0986c0
    { "nozdti$cs", S_NOZDTICS },
Packit 0986c0
    { "cbdti$cs", S_CBDTICS },
Packit 0986c0
    { "nocbdti$cs", S_NOCBDTICS },
Packit 0986c0
Packit 0986c0
    { "xmti$cs", S_XMTICS },
Packit 0986c0
    { "noxmti$cs", S_NOXMTICS },
Packit 0986c0
    { "x2mti$cs", S_X2MTICS },
Packit 0986c0
    { "nox2mti$cs", S_NOX2MTICS },
Packit 0986c0
    { "ymti$cs", S_YMTICS },
Packit 0986c0
    { "noymti$cs", S_NOYMTICS },
Packit 0986c0
    { "y2mti$cs", S_Y2MTICS },
Packit 0986c0
    { "noy2mti$cs", S_NOY2MTICS },
Packit 0986c0
    { "zmti$cs", S_ZMTICS },
Packit 0986c0
    { "nozmti$cs", S_NOZMTICS },
Packit 0986c0
    { "cbmti$cs", S_CBMTICS },
Packit 0986c0
    { "nocbmti$cs", S_NOCBMTICS },
Packit 0986c0
Packit 0986c0
    { "xr$ange", S_XRANGE },
Packit 0986c0
    { "x2r$ange", S_X2RANGE },
Packit 0986c0
    { "yr$ange", S_YRANGE },
Packit 0986c0
    { "y2r$ange", S_Y2RANGE },
Packit 0986c0
    { "zr$ange", S_ZRANGE },
Packit 0986c0
    { "cbr$ange", S_CBRANGE },
Packit 0986c0
    { "rr$ange", S_RRANGE },
Packit 0986c0
    { "tr$ange", S_TRANGE },
Packit 0986c0
    { "ur$ange", S_URANGE },
Packit 0986c0
    { "vr$ange", S_VRANGE },
Packit 0986c0
Packit 0986c0
    { "xzeroa$xis", S_XZEROAXIS },
Packit 0986c0
    { "x2zeroa$xis", S_X2ZEROAXIS },
Packit 0986c0
    { "yzeroa$xis", S_YZEROAXIS },
Packit 0986c0
    { "y2zeroa$xis", S_Y2ZEROAXIS },
Packit 0986c0
    { "zzeroa$xis", S_ZZEROAXIS },
Packit 0986c0
    { "zeroa$xis", S_ZEROAXIS },
Packit 0986c0
    { "rax$is", S_RAXIS },
Packit 0986c0
    { "paxis", S_PAXIS },
Packit 0986c0
Packit 0986c0
    { "z$ero", S_ZERO },
Packit 0986c0
    { NULL, S_INVALID }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* 'set hidden3d' options */
Packit 0986c0
const struct gen_table set_hidden3d_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "def$aults", S_HI_DEFAULTS },
Packit 0986c0
    { "off$set", S_HI_OFFSET },
Packit 0986c0
    { "nooff$set", S_HI_NOOFFSET },
Packit 0986c0
    { "tri$anglepattern", S_HI_TRIANGLEPATTERN },
Packit 0986c0
    { "undef$ined", S_HI_UNDEFINED },
Packit 0986c0
    { "nound$efined", S_HI_NOUNDEFINED },
Packit 0986c0
    { "alt$diagonal", S_HI_ALTDIAGONAL },
Packit 0986c0
    { "noalt$diagonal", S_HI_NOALTDIAGONAL },
Packit 0986c0
    { "bent$over", S_HI_BENTOVER },
Packit 0986c0
    { "nobent$over", S_HI_NOBENTOVER },
Packit 0986c0
    { "front", S_HI_FRONT },
Packit 0986c0
    { "back", S_HI_BACK },
Packit 0986c0
    { NULL, S_HI_INVALID }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* 'set key' options */
Packit 0986c0
const struct gen_table set_key_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "def$ault", S_KEY_DEFAULT },
Packit 0986c0
    { "on", S_KEY_ON },
Packit 0986c0
    { "off", S_KEY_OFF },
Packit 0986c0
    { "t$op", S_KEY_TOP },
Packit 0986c0
    { "b$ottom", S_KEY_BOTTOM },
Packit 0986c0
    { "l$eft", S_KEY_LEFT },
Packit 0986c0
    { "r$ight", S_KEY_RIGHT },
Packit 0986c0
    { "c$enter", S_KEY_CENTER },
Packit 0986c0
    { "ver$tical", S_KEY_VERTICAL },
Packit 0986c0
    { "hor$izontal", S_KEY_HORIZONTAL },
Packit 0986c0
    { "ov$er", S_KEY_OVER },
Packit 0986c0
    { "ab$ove", S_KEY_ABOVE },
Packit 0986c0
    { "u$nder", S_KEY_UNDER },
Packit 0986c0
    { "be$low", S_KEY_BELOW },
Packit 0986c0
    { "at", S_KEY_MANUAL },
Packit 0986c0
    { "ins$ide", S_KEY_INSIDE },
Packit 0986c0
    { "o$utside", S_KEY_OUTSIDE },
Packit 0986c0
    { "fix$ed", S_KEY_FIXED },
Packit 0986c0
    { "tm$argin", S_KEY_TMARGIN },
Packit 0986c0
    { "bm$argin", S_KEY_BMARGIN },
Packit 0986c0
    { "lm$argin", S_KEY_LMARGIN },
Packit 0986c0
    { "rm$argin", S_KEY_RMARGIN },
Packit 0986c0
    { "L$eft", S_KEY_LLEFT },
Packit 0986c0
    { "R$ight", S_KEY_RRIGHT },
Packit 0986c0
    { "rev$erse", S_KEY_REVERSE },
Packit 0986c0
    { "norev$erse", S_KEY_NOREVERSE },
Packit 0986c0
    { "inv$ert", S_KEY_INVERT },
Packit 0986c0
    { "noinv$ert", S_KEY_NOINVERT },
Packit 0986c0
    { "enh$anced", S_KEY_ENHANCED },
Packit 0986c0
    { "noenh$anced", S_KEY_NOENHANCED },
Packit 0986c0
    { "b$ox", S_KEY_BOX },
Packit 0986c0
    { "nob$ox", S_KEY_NOBOX },
Packit 0986c0
    { "sa$mplen", S_KEY_SAMPLEN },
Packit 0986c0
    { "sp$acing", S_KEY_SPACING },
Packit 0986c0
    { "w$idth", S_KEY_WIDTH },
Packit 0986c0
    { "h$eight", S_KEY_HEIGHT },
Packit 0986c0
    { "a$utotitles", S_KEY_AUTOTITLES },
Packit 0986c0
    { "noa$utotitles", S_KEY_NOAUTOTITLES },
Packit 0986c0
    { "ti$tle", S_KEY_TITLE },
Packit 0986c0
    { "noti$tle", S_KEY_NOTITLE },
Packit 0986c0
    { "font", S_KEY_FONT },
Packit 0986c0
    { "tc", S_KEY_TEXTCOLOR },
Packit 0986c0
    { "text$color", S_KEY_TEXTCOLOR },
Packit 0986c0
    { "maxcol$s", S_KEY_MAXCOLS},
Packit 0986c0
    { "maxcolu$mns", S_KEY_MAXCOLS},
Packit 0986c0
    { "maxrow$s", S_KEY_MAXROWS},
Packit 0986c0
    { "opaque", S_KEY_FRONT},
Packit 0986c0
    { "noopaque", S_KEY_NOFRONT},
Packit 0986c0
    { NULL, S_KEY_INVALID }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* 'test' command */
Packit 0986c0
const struct gen_table test_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "term$inal", TEST_TERMINAL },
Packit 0986c0
    { "pal$ette", TEST_PALETTE },
Packit 0986c0
    { NULL, TEST_INVALID }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* 'set colorbox' options */
Packit 0986c0
const struct gen_table set_colorbox_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "v$ertical",	S_COLORBOX_VERTICAL },
Packit 0986c0
    { "h$orizontal",	S_COLORBOX_HORIZONTAL },
Packit 0986c0
    { "def$ault",	S_COLORBOX_DEFAULT },
Packit 0986c0
    { "u$ser",		S_COLORBOX_USER },
Packit 0986c0
    { "at",		S_COLORBOX_USER },
Packit 0986c0
    { "bo$rder",	S_COLORBOX_BORDER },
Packit 0986c0
    { "bd$efault",	S_COLORBOX_BDEFAULT },
Packit 0986c0
    { "nobo$rder",	S_COLORBOX_NOBORDER },
Packit 0986c0
    { "o$rigin",	S_COLORBOX_ORIGIN },
Packit 0986c0
    { "s$ize",		S_COLORBOX_SIZE },
Packit 0986c0
    { "inv$ert",	S_COLORBOX_INVERT },
Packit 0986c0
    { "noinv$ert",	S_COLORBOX_NOINVERT },
Packit 0986c0
    { "fr$ont",		S_COLORBOX_FRONT },
Packit 0986c0
    { "ba$ck",		S_COLORBOX_BACK },
Packit 0986c0
    { NULL, S_COLORBOX_INVALID }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* 'set palette' options */
Packit 0986c0
const struct gen_table set_palette_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "pos$itive",	S_PALETTE_POSITIVE },
Packit 0986c0
    { "neg$ative",	S_PALETTE_NEGATIVE },
Packit 0986c0
    { "gray$scale",	S_PALETTE_GRAY },
Packit 0986c0
    { "grey$scale",	S_PALETTE_GRAY },
Packit 0986c0
    { "col$or",		S_PALETTE_COLOR },
Packit 0986c0
    { "rgb$formulae",	S_PALETTE_RGBFORMULAE },
Packit 0986c0
    { "def$ined",       S_PALETTE_DEFINED },
Packit 0986c0
    { "file",           S_PALETTE_FILE },
Packit 0986c0
    { "func$tions",     S_PALETTE_FUNCTIONS },
Packit 0986c0
    { "mo$del",         S_PALETTE_MODEL },
Packit 0986c0
    { "nops_allcF",	S_PALETTE_NOPS_ALLCF },
Packit 0986c0
    { "ps_allcF",	S_PALETTE_PS_ALLCF },
Packit 0986c0
    { "maxc$olors",	S_PALETTE_MAXCOLORS },
Packit 0986c0
    { "gam$ma",         S_PALETTE_GAMMA },
Packit 0986c0
    { "cubehelix",      S_PALETTE_CUBEHELIX },
Packit 0986c0
    { NULL, S_PALETTE_INVALID }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
Packit 0986c0
const struct gen_table color_model_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "RGB", C_MODEL_RGB },
Packit 0986c0
    { "HSV", C_MODEL_HSV },
Packit 0986c0
    { "CMY", C_MODEL_CMY },
Packit 0986c0
    { "XYZ", C_MODEL_XYZ },
Packit 0986c0
    { NULL,  -1 }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* 'set pm3d' options */
Packit 0986c0
const struct gen_table set_pm3d_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "at",		S_PM3D_AT },
Packit 0986c0
    { "interp$olate",	S_PM3D_INTERPOLATE },
Packit 0986c0
    { "scansfor$ward",	S_PM3D_SCANSFORWARD },
Packit 0986c0
    { "scansback$ward", S_PM3D_SCANSBACKWARD },
Packit 0986c0
    { "scansauto$matic",S_PM3D_SCANS_AUTOMATIC },
Packit 0986c0
    { "dep$thorder",    S_PM3D_DEPTH },
Packit 0986c0
    { "fl$ush",		S_PM3D_FLUSH },
Packit 0986c0
    { "ftr$iangles",	S_PM3D_FTRIANGLES },
Packit 0986c0
    { "noftr$iangles",	S_PM3D_NOFTRIANGLES },
Packit 0986c0
    { "clip1$in",	S_PM3D_CLIP_1IN },
Packit 0986c0
    { "clip4$in",	S_PM3D_CLIP_4IN },
Packit 0986c0
    { "map", 		S_PM3D_MAP },
Packit 0986c0
    { "bo$rder",	S_PM3D_BORDER },
Packit 0986c0
    { "nobo$rder",	S_PM3D_NOBORDER },
Packit 0986c0
    { "hi$dden3d",	S_PM3D_HIDDEN },
Packit 0986c0
    { "nohi$dden3d",	S_PM3D_NOHIDDEN },
Packit 0986c0
    { "so$lid",		S_PM3D_SOLID },
Packit 0986c0
    { "notr$ansparent",	S_PM3D_NOTRANSPARENT },
Packit 0986c0
    { "noso$lid",	S_PM3D_NOSOLID },
Packit 0986c0
    { "tr$ansparent",	S_PM3D_TRANSPARENT },
Packit 0986c0
    { "i$mplicit",	S_PM3D_IMPLICIT },
Packit 0986c0
    { "noe$xplicit",	S_PM3D_NOEXPLICIT },
Packit 0986c0
    { "noi$mplicit",	S_PM3D_NOIMPLICIT },
Packit 0986c0
    { "e$xplicit",	S_PM3D_EXPLICIT },
Packit 0986c0
    { "corners2c$olor",	S_PM3D_WHICH_CORNER },
Packit 0986c0
    { "light$ing",	S_PM3D_LIGHTING_MODEL },
Packit 0986c0
    { "nolight$ing",	S_PM3D_NOLIGHTING_MODEL },
Packit 0986c0
    { NULL, S_PM3D_INVALID }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
/* EAM Nov 2008 - RGB color names for 'set palette defined'
Packit 0986c0
 * merged with colors from web_color_rgbs used by terminals.
Packit 0986c0
 */
Packit 0986c0
struct gen_table default_color_names_tbl[] =
Packit 0986c0
{
Packit 0986c0
    /* Put the colors used by gd/pdf/ppm terminals first */
Packit 0986c0
Packit 0986c0
    { "white"           , 255*(1<<16) + 255*(1<<8) + 255 },
Packit 0986c0
    { "black"           ,   0*(1<<16) +   0*(1<<8) +   0 },
Packit 0986c0
    { "dark-grey"       , 160*(1<<16) + 160*(1<<8) + 160 },
Packit 0986c0
    { "red"             , 255*(1<<16) +   0*(1<<8) +   0 },
Packit 0986c0
    { "web-green"       ,   0*(1<<16) + 192*(1<<8) +   0 },
Packit 0986c0
    { "web-blue"        ,   0*(1<<16) + 128*(1<<8) + 255 },
Packit 0986c0
    { "dark-magenta"    , 192*(1<<16) +   0*(1<<8) + 255 },
Packit 0986c0
    { "dark-cyan"       ,   0*(1<<16) + 238*(1<<8) + 238 },
Packit 0986c0
    { "dark-orange"     , 192*(1<<16) +  64*(1<<8) +   0 },
Packit 0986c0
    { "dark-yellow"     , 200*(1<<16) + 200*(1<<8) +   0 },
Packit 0986c0
    { "royalblue"       ,  65*(1<<16) + 105*(1<<8) + 225 },
Packit 0986c0
    { "goldenrod"       , 255*(1<<16) + 192*(1<<8) +  32 },
Packit 0986c0
    { "dark-spring-green",  0*(1<<16) + 128*(1<<8) +  64 },
Packit 0986c0
    { "purple"          , 192*(1<<16) + 128*(1<<8) + 255 },
Packit 0986c0
    { "steelblue"       ,  48*(1<<16) +  96*(1<<8) + 128 },
Packit 0986c0
    { "dark-red"        , 139*(1<<16) +   0*(1<<8) +   0 },
Packit 0986c0
    { "dark-chartreuse" ,  64*(1<<16) + 128*(1<<8) +   0 },
Packit 0986c0
    { "orchid"          , 255*(1<<16) + 128*(1<<8) + 255 },
Packit 0986c0
    { "aquamarine"      , 127*(1<<16) + 255*(1<<8) + 212 },
Packit 0986c0
    { "brown"           , 165*(1<<16) +  42*(1<<8) +  42 },
Packit 0986c0
    { "yellow"          , 255*(1<<16) + 255*(1<<8) +   0 },
Packit 0986c0
    { "turquoise"       ,  64*(1<<16) + 224*(1<<8) + 208 },
Packit 0986c0
Packit 0986c0
    /* greyscale gradient */
Packit 0986c0
Packit 0986c0
    { "grey0"           ,   0*(1<<16) +   0*(1<<8) +   0 },
Packit 0986c0
    { "grey10"          ,  26*(1<<16) +  26*(1<<8) +  26 },
Packit 0986c0
    { "grey20"          ,  51*(1<<16) +  51*(1<<8) +  51 },
Packit 0986c0
    { "grey30"          ,  77*(1<<16) +  77*(1<<8) +  77 },
Packit 0986c0
    { "grey40"          , 102*(1<<16) + 102*(1<<8) + 102 },
Packit 0986c0
    { "grey50"          , 127*(1<<16) + 127*(1<<8) + 127 },
Packit 0986c0
    { "grey60"          , 153*(1<<16) + 153*(1<<8) + 153 },
Packit 0986c0
    { "grey70"          , 179*(1<<16) + 179*(1<<8) + 179 },
Packit 0986c0
    { "grey"            , 192*(1<<16) + 192*(1<<8) + 192 },
Packit 0986c0
    { "grey80"          , 204*(1<<16) + 204*(1<<8) + 204 },
Packit 0986c0
    { "grey90"          , 229*(1<<16) + 229*(1<<8) + 229 },
Packit 0986c0
    { "grey100"         , 255*(1<<16) + 255*(1<<8) + 255 },
Packit 0986c0
Packit 0986c0
    /* random other colors */
Packit 0986c0
Packit 0986c0
    { "light-red"       , 240*(1<<16) +  50*(1<<8) +  50 },
Packit 0986c0
    { "light-green"     , 144*(1<<16) + 238*(1<<8) + 144 },
Packit 0986c0
    { "light-blue"      , 173*(1<<16) + 216*(1<<8) + 230 },
Packit 0986c0
    { "light-magenta"   , 240*(1<<16) +  85*(1<<8) + 240 },
Packit 0986c0
    { "light-cyan"      , 224*(1<<16) + 255*(1<<8) + 255 },
Packit 0986c0
    { "light-goldenrod" , 238*(1<<16) + 221*(1<<8) + 130 },
Packit 0986c0
    { "light-pink"      , 255*(1<<16) + 182*(1<<8) + 193 },
Packit 0986c0
    { "light-turquoise" , 175*(1<<16) + 238*(1<<8) + 238 },
Packit 0986c0
    { "gold"            , 255*(1<<16) + 215*(1<<8) +   0 },
Packit 0986c0
    { "green"           ,   0*(1<<16) + 255*(1<<8) +   0 },
Packit 0986c0
    { "dark-green"      ,   0*(1<<16) + 100*(1<<8) +   0 },
Packit 0986c0
    { "spring-green"    ,   0*(1<<16) + 255*(1<<8) + 127 },
Packit 0986c0
    { "forest-green"    ,  34*(1<<16) + 139*(1<<8) +  34 },
Packit 0986c0
    { "sea-green"       ,  46*(1<<16) + 139*(1<<8) +  87 },
Packit 0986c0
    { "blue"            ,   0*(1<<16) +   0*(1<<8) + 255 },
Packit 0986c0
    { "dark-blue"       ,   0*(1<<16) +   0*(1<<8) + 139 },
Packit 0986c0
    { "midnight-blue"   ,  25*(1<<16) +  25*(1<<8) + 112 },
Packit 0986c0
    { "navy"            ,   0*(1<<16) +   0*(1<<8) + 128 },
Packit 0986c0
    { "medium-blue"     ,   0*(1<<16) +   0*(1<<8) + 205 },
Packit 0986c0
    { "skyblue"         , 135*(1<<16) + 206*(1<<8) + 235 },
Packit 0986c0
    { "cyan"            ,   0*(1<<16) + 255*(1<<8) + 255 },
Packit 0986c0
    { "magenta"         , 255*(1<<16) +   0*(1<<8) + 255 },
Packit 0986c0
    { "dark-turquoise"  ,   0*(1<<16) + 206*(1<<8) + 209 },
Packit 0986c0
    { "dark-pink"       , 255*(1<<16) +  20*(1<<8) + 147 },
Packit 0986c0
    { "coral"           , 255*(1<<16) + 127*(1<<8) +  80 },
Packit 0986c0
    { "light-coral"     , 240*(1<<16) + 128*(1<<8) + 128 },
Packit 0986c0
    { "orange-red"      , 255*(1<<16) +  69*(1<<8) +   0 },
Packit 0986c0
    { "salmon"          , 250*(1<<16) + 128*(1<<8) + 114 },
Packit 0986c0
    { "dark-salmon"     , 233*(1<<16) + 150*(1<<8) + 122 },
Packit 0986c0
    { "khaki"           , 240*(1<<16) + 230*(1<<8) + 140 },
Packit 0986c0
    { "dark-khaki"      , 189*(1<<16) + 183*(1<<8) + 107 },
Packit 0986c0
    { "dark-goldenrod"  , 184*(1<<16) + 134*(1<<8) +  11 },
Packit 0986c0
    { "beige"           , 245*(1<<16) + 245*(1<<8) + 220 },
Packit 0986c0
    { "olive"           , 160*(1<<16) + 128*(1<<8) +  32 },
Packit 0986c0
    { "orange"          , 255*(1<<16) + 165*(1<<8) +   0 },
Packit 0986c0
    { "violet"          , 238*(1<<16) + 130*(1<<8) + 238 },
Packit 0986c0
    { "dark-violet"     , 148*(1<<16) +   0*(1<<8) + 211 },
Packit 0986c0
    { "plum"            , 221*(1<<16) + 160*(1<<8) + 221 },
Packit 0986c0
    { "dark-plum"       , 144*(1<<16) +  80*(1<<8) +  64 },
Packit 0986c0
    { "dark-olivegreen" ,  85*(1<<16) + 107*(1<<8) +  47 },
Packit 0986c0
Packit 0986c0
    { "orangered4"      , 128*(1<<16) +  20*(1<<8) +   0 },
Packit 0986c0
    { "brown4"          , 128*(1<<16) +  20*(1<<8) +  20 },
Packit 0986c0
    { "sienna4"         , 128*(1<<16) +  64*(1<<8) +  20 },
Packit 0986c0
    { "orchid4"         , 128*(1<<16) +  64*(1<<8) + 128 },
Packit 0986c0
    { "mediumpurple3"   , 128*(1<<16) +  96*(1<<8) + 192 },
Packit 0986c0
    { "slateblue1"      , 128*(1<<16) +  96*(1<<8) + 255 },
Packit 0986c0
    { "yellow4"         , 128*(1<<16) + 128*(1<<8) +   0 },
Packit 0986c0
    { "sienna1"         , 255*(1<<16) + 128*(1<<8) +  64 },
Packit 0986c0
    { "tan1"            , 255*(1<<16) + 160*(1<<8) +  64 },
Packit 0986c0
    { "sandybrown"      , 255*(1<<16) + 160*(1<<8) +  96 },
Packit 0986c0
    { "light-salmon"    , 255*(1<<16) + 160*(1<<8) + 112 },
Packit 0986c0
    { "pink"            , 255*(1<<16) + 192*(1<<8) + 192 },
Packit 0986c0
    { "khaki1"          , 255*(1<<16) + 255*(1<<8) + 128 },
Packit 0986c0
    { "lemonchiffon"    , 255*(1<<16) + 255*(1<<8) + 192 },
Packit 0986c0
    { "bisque"          , 205*(1<<16) + 183*(1<<8) + 158 },
Packit 0986c0
    { "honeydew"        , 240*(1<<16) + 255*(1<<8) + 240 },
Packit 0986c0
    { "slategrey"       , 160*(1<<16) + 182*(1<<8) + 205 },
Packit 0986c0
    { "seagreen"        , 193*(1<<16) + 255*(1<<8) + 193 },
Packit 0986c0
    { "antiquewhite"    , 205*(1<<16) + 192*(1<<8) + 176 },
Packit 0986c0
    { "chartreuse"      , 124*(1<<16) + 255*(1<<8) +  64 },
Packit 0986c0
    { "greenyellow"     , 160*(1<<16) + 255*(1<<8) +  32 },
Packit 0986c0
Packit 0986c0
    /* Synonyms */
Packit 0986c0
    { "gray"            , 190*(1<<16) + 190*(1<<8) + 190 },
Packit 0986c0
    { "light-gray"      , 211*(1<<16) + 211*(1<<8) + 211 },
Packit 0986c0
    { "light-grey"      , 211*(1<<16) + 211*(1<<8) + 211 },
Packit 0986c0
    { "dark-gray"       , 160*(1<<16) + 160*(1<<8) + 160 },
Packit 0986c0
    { "slategray"       , 160*(1<<16) + 182*(1<<8) + 205 },
Packit 0986c0
    { "gray0"           ,   0*(1<<16) +   0*(1<<8) +   0 },
Packit 0986c0
    { "gray10"          ,  26*(1<<16) +  26*(1<<8) +  26 },
Packit 0986c0
    { "gray20"          ,  51*(1<<16) +  51*(1<<8) +  51 },
Packit 0986c0
    { "gray30"          ,  77*(1<<16) +  77*(1<<8) +  77 },
Packit 0986c0
    { "gray40"          , 102*(1<<16) + 102*(1<<8) + 102 },
Packit 0986c0
    { "gray50"          , 127*(1<<16) + 127*(1<<8) + 127 },
Packit 0986c0
    { "gray60"          , 153*(1<<16) + 153*(1<<8) + 153 },
Packit 0986c0
    { "gray70"          , 179*(1<<16) + 179*(1<<8) + 179 },
Packit 0986c0
    { "gray80"          , 204*(1<<16) + 204*(1<<8) + 204 },
Packit 0986c0
    { "gray90"          , 229*(1<<16) + 229*(1<<8) + 229 },
Packit 0986c0
    { "gray100"         , 255*(1<<16) + 255*(1<<8) + 255 },
Packit 0986c0
    { NULL, -1 }
Packit 0986c0
};
Packit 0986c0
struct gen_table *pm3d_color_names_tbl = default_color_names_tbl;
Packit 0986c0
struct gen_table *user_color_names_tbl = NULL;
Packit 0986c0
const int num_predefined_colors = sizeof(default_color_names_tbl)
Packit 0986c0
				/ sizeof(struct gen_table) - 1;
Packit 0986c0
int num_userdefined_colors = 0;
Packit 0986c0
Packit 0986c0
Packit 0986c0
const struct gen_table show_style_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "d$ata", SHOW_STYLE_DATA },
Packit 0986c0
    { "f$unction", SHOW_STYLE_FUNCTION },
Packit 0986c0
    { "l$ines", SHOW_STYLE_LINE },
Packit 0986c0
    { "fill", SHOW_STYLE_FILLING },
Packit 0986c0
    { "fs", SHOW_STYLE_FILLING },
Packit 0986c0
    { "ar$row", SHOW_STYLE_ARROW },
Packit 0986c0
    { "incr$ement", SHOW_STYLE_INCREMENT },
Packit 0986c0
    { "hist$ogram", SHOW_STYLE_HISTOGRAM },
Packit 0986c0
    { "circ$le", SHOW_STYLE_CIRCLE },
Packit 0986c0
    { "ell$ipse", SHOW_STYLE_ELLIPSE },
Packit 0986c0
    { "rect$angle", SHOW_STYLE_RECTANGLE },
Packit 0986c0
    { "boxplot", SHOW_STYLE_BOXPLOT },
Packit 0986c0
    { "parallel$axis", SHOW_STYLE_PARALLEL },
Packit 0986c0
#ifdef EAM_BOXED_TEXT
Packit 0986c0
    { "textbox", SHOW_STYLE_TEXTBOX },
Packit 0986c0
#endif
Packit 0986c0
    { NULL, SHOW_STYLE_INVALID }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
const struct gen_table plotstyle_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "l$ines", LINES },
Packit 0986c0
    { "i$mpulses", IMPULSES },
Packit 0986c0
    { "p$oints", POINTSTYLE },
Packit 0986c0
    { "linesp$oints", LINESPOINTS },
Packit 0986c0
    { "lp", LINESPOINTS },
Packit 0986c0
    { "d$ots", DOTS },
Packit 0986c0
    { "yerrorl$ines", YERRORLINES },
Packit 0986c0
    { "errorl$ines", YERRORLINES },
Packit 0986c0
    { "xerrorl$ines", XERRORLINES },
Packit 0986c0
    { "xyerrorl$ines", XYERRORLINES },
Packit 0986c0
    { "ye$rrorbars", YERRORBARS },
Packit 0986c0
    { "e$rrorbars", YERRORBARS },
Packit 0986c0
    { "xe$rrorbars", XERRORBARS },
Packit 0986c0
    { "xye$rrorbars", XYERRORBARS },
Packit 0986c0
    { "boxes", BOXES },
Packit 0986c0
    { "hist$ograms", HISTOGRAMS },
Packit 0986c0
    { "filledc$urves", FILLEDCURVES },
Packit 0986c0
    { "boxer$rorbars", BOXERROR },
Packit 0986c0
    { "boxx$yerrorbars", BOXXYERROR },
Packit 0986c0
    { "st$eps", STEPS },
Packit 0986c0
    { "fillst$eps", FILLSTEPS },
Packit 0986c0
    { "fs$teps", FSTEPS },
Packit 0986c0
    { "his$teps", HISTEPS },
Packit 0986c0
    { "vec$tors", VECTOR },
Packit 0986c0
    { "fin$ancebars", FINANCEBARS },
Packit 0986c0
    { "can$dlesticks", CANDLESTICKS },
Packit 0986c0
    { "boxplot", BOXPLOT },
Packit 0986c0
    { "pm$3d", PM3DSURFACE },
Packit 0986c0
    { "labels", LABELPOINTS },
Packit 0986c0
    { "ima$ge", IMAGE },
Packit 0986c0
    { "rgbima$ge", RGBIMAGE },
Packit 0986c0
    { "rgba$lpha", RGBA_IMAGE },
Packit 0986c0
#ifdef EAM_OBJECTS
Packit 0986c0
    { "cir$cles", CIRCLES },
Packit 0986c0
    { "ell$ipses", ELLIPSES },
Packit 0986c0
#endif
Packit 0986c0
    { "sur$face", SURFACEGRID },
Packit 0986c0
    { "parallel$axes", PARALLELPLOT },
Packit 0986c0
    { "table", TABLESTYLE },
Packit 0986c0
    { "zerror$fill", ZERRORFILL },
Packit 0986c0
    { NULL, PLOT_STYLE_NONE }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
const struct gen_table filledcurves_opts_tbl[] =
Packit 0986c0
{
Packit 0986c0
    { "c$losed", FILLEDCURVES_CLOSED },
Packit 0986c0
    { "x$1", FILLEDCURVES_X1 },
Packit 0986c0
    { "y1", FILLEDCURVES_Y1 },
Packit 0986c0
    { "x2", FILLEDCURVES_X2 },
Packit 0986c0
    { "y2", FILLEDCURVES_Y2 },
Packit 0986c0
    { "xy", FILLEDCURVES_ATXY },
Packit 0986c0
    { "r", FILLEDCURVES_ATR },
Packit 0986c0
    { "above", FILLEDCURVES_ABOVE },
Packit 0986c0
    { "below", FILLEDCURVES_BELOW },
Packit 0986c0
    { "y",  FILLEDCURVES_Y1 },
Packit 0986c0
    { NULL, -1 }
Packit 0986c0
};
Packit 0986c0
Packit 0986c0
int
Packit 0986c0
lookup_table(const struct gen_table *tbl, int find_token)
Packit 0986c0
{
Packit 0986c0
    while (tbl->key) {
Packit 0986c0
	if (almost_equals(find_token, tbl->key))
Packit 0986c0
	    return tbl->value;
Packit 0986c0
	tbl++;
Packit 0986c0
    }
Packit 0986c0
    return tbl->value; /* *_INVALID */
Packit 0986c0
}
Packit 0986c0
Packit 0986c0
parsefuncp_t
Packit 0986c0
lookup_ftable(const struct gen_ftable *ftbl, int find_token)
Packit 0986c0
{
Packit 0986c0
    while (ftbl->key) {
Packit 0986c0
	if (almost_equals(find_token, ftbl->key))
Packit 0986c0
	    return ftbl->value;
Packit 0986c0
	ftbl++;
Packit 0986c0
    }
Packit 0986c0
    return ftbl->value;
Packit 0986c0
}
Packit 0986c0
Packit 0986c0
/* Returns value of the first table entry for which the search string
Packit 0986c0
 * is a leading substring, or -1 if there is no match.
Packit 0986c0
 */
Packit 0986c0
int
Packit 0986c0
lookup_table_entry(const struct gen_table *tbl, const char *search_str)
Packit 0986c0
{
Packit 0986c0
    while (tbl->key) {
Packit 0986c0
	if (!strncmp(search_str, tbl->key, strlen(search_str)))
Packit 0986c0
	    return tbl->value;
Packit 0986c0
	tbl++;
Packit 0986c0
    }
Packit 0986c0
    return -1;
Packit 0986c0
}
Packit 0986c0
Packit 0986c0
/* Returns the index of the table entry whose key matches the search string.
Packit 0986c0
 * If there is no exact match return the first table entry that is a leading
Packit 0986c0
 * substring of the search string.  Returns -1 if there is no match.
Packit 0986c0
 */
Packit 0986c0
int
Packit 0986c0
lookup_table_nth(const struct gen_table *tbl, const char *search_str)
Packit 0986c0
{
Packit 0986c0
    int k = -1;
Packit 0986c0
    int best_so_far = -1;
Packit 0986c0
    while (tbl[++k].key) {
Packit 0986c0
	/* Exact match always wins */
Packit 0986c0
	if (!strcmp(search_str, tbl[k].key))
Packit 0986c0
	    return k;
Packit 0986c0
	if (!strncmp(search_str, tbl[k].key, strlen(tbl[k].key)))
Packit 0986c0
	    if (best_so_far < 0) best_so_far = k;
Packit 0986c0
    }
Packit 0986c0
    return best_so_far;
Packit 0986c0
}
Packit 0986c0
Packit 0986c0
/* Returns index of the table tbl whose key matches the beginning of the
Packit 0986c0
 * search string search_str. The table_len is necessary because the table
Packit 0986c0
 * is searched in the reversed order. The routine is used in parsing commands
Packit 0986c0
 * '(un)set log x2zcb', for instance.
Packit 0986c0
 * It returns index into the table or -1 if there is no match.
Packit 0986c0
 */
Packit 0986c0
int
Packit 0986c0
lookup_table_nth_reverse(
Packit 0986c0
    const struct gen_table *tbl,
Packit 0986c0
    int table_len,
Packit 0986c0
    const char *search_str)
Packit 0986c0
{
Packit 0986c0
    while (--table_len >= 0) {
Packit 0986c0
	if (tbl[table_len].key && !strncmp(search_str, tbl[table_len].key, strlen(tbl[table_len].key)))
Packit 0986c0
	    return table_len;
Packit 0986c0
    }
Packit 0986c0
    return -1; /* not found */
Packit 0986c0
}
Packit 0986c0
Packit 0986c0
/* Returns the key associated with this indexed value
Packit 0986c0
 * or NULL if the key/value pair is not found.
Packit 0986c0
 */
Packit 0986c0
const char *
Packit 0986c0
reverse_table_lookup(const struct gen_table *tbl, int entry)
Packit 0986c0
{
Packit 0986c0
    int k = -1;
Packit 0986c0
    while (tbl[++k].key)
Packit 0986c0
	if (tbl[k].value == entry)
Packit 0986c0
	    return(tbl[k].key);
Packit 0986c0
    return NULL;
Packit 0986c0
}