|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 8269 (0x204d) Types: TextFile Names: »plot.h«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z« └─⟦c58930e5c⟧ └─⟦this⟧ »TeX3.14/TeXcontrib/gnuplot/plot.h«
/* GNUPLOT - plot.h */ /* * Copyright (C) 1986, 1987, 1990 Thomas Williams, Colin Kelley * * Permission to use, copy, and distribute this software and its * documentation for any purpose with or without fee is hereby granted, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. * * Permission to modify the software is granted, but not the right to * distribute the modified code. Modifications are to be distributed * as patches to released version. * * This software is provided "as is" without express or implied warranty. * * * AUTHORS * * Original Software: * Thomas Williams, Colin Kelley. * * Gnuplot 2.0 additions: * Russell Lang, Dave Kotz, John Campbell. * * send your comments or suggestions to (pixar!info-gnuplot@sun.com). * */ #define PROGRAM "G N U P L O T" #define PROMPT "gnuplot> " #define SHELL "/bin/sh" /* used if SHELL env variable not set */ #define SAMPLES 160 /* default number of samples for a plot */ #define ZERO 1e-8 /* default for 'zero' set option */ #ifndef TERM /* default terminal is "unknown"; but see init_terminal */ #define TERM "unknown" #endif #define TRUE 1 #define FALSE 0 #define Pi 3.141592653589793 #define MAX_POINTS 1 #define MAX_LINE_LEN 1024 /* maximum number of chars allowed on line */ #define MAX_TOKENS 200 #define MAX_ID_LEN 50 /* max length of an identifier */ #define MAX_AT_LEN 150 /* max number of entries in action table */ #define STACK_DEPTH 100 #define NO_CARET (-1) #ifdef vms #define OS "VMS " #endif #ifdef unix #define OS "unix " #endif #ifdef MSDOS #define OS "MS-DOS " #endif #ifndef OS #define OS "" #endif /* * Note about VERYLARGE: This is the upper bound double (or float, if PC) * numbers. This flag indicates very large numbers. It doesn't have to * be the absolutely biggest number on the machine. * If your machine doesn't have HUGE, or float.h, * define VERYLARGE here. * * example: #define VERYLARGE 1e38 */ #ifdef PC #include <float.h> #define VERYLARGE FLT_MAX #else #ifdef vms #include <float.h> #define VERYLARGE DBL_MAX #else #define VERYLARGE HUGE #endif #endif #define END_OF_COMMAND (c_token >= num_tokens || equals(c_token,";")) #ifdef vms #define is_comment(c) ((c) == '#' || (c) == '!') #define is_system(c) ((c) == '$') #else /* vms */ #define is_comment(c) ((c) == '#') #define is_system(c) ((c) == '!') #endif /* vms */ /* * If you're memcpy() has another name, define it below as bcopy() is. * If you don't have a memcpy(): #define NOCOPY */ #ifdef BCOPY #define memcpy(dest,src,len) bcopy(src,dest,len) #endif /* BCOPY */ #ifdef vms #define memcpy(dest,src,len) lib$movc3(&len,src,dest) #endif /* vms */ /* * If you don't have BZERO, define it below. */ #ifndef BZERO #define bzero(dest,len) (void)(memset(dest, (char)NULL, len)) #endif /* BZERO */ #define top_of_stack stack[s_p] typedef int BOOLEAN; #ifdef __ZTC__ typedef int (*FUNC_PTR)(...); #else typedef int (*FUNC_PTR)(); #endif enum operators { PUSH, PUSHC, PUSHD, CALL, LNOT, BNOT, UMINUS, LOR, LAND, BOR, XOR, BAND, EQ, NE, GT, LT, GE, LE, PLUS, MINUS, MULT, DIV, MOD, POWER, FACTORIAL, BOOL, JUMP, JUMPZ, JUMPNZ, JTERN, SF_START }; #define is_jump(operator) ((operator) >=(int)JUMP && (operator) <(int)SF_START) enum DATA_TYPES { INT, CMPLX }; enum PLOT_TYPE { FUNC, DATA }; enum PLOT_STYLE { LINES, POINTS, IMPULSES, LINESPOINTS, DOTS }; enum JUSTIFY { LEFT, CENTRE, RIGHT }; struct cmplx { double real, imag; }; struct value { enum DATA_TYPES type; union { int int_val; struct cmplx cmplx_val; } v; }; struct lexical_unit { /* produced by scanner */ BOOLEAN is_token; /* true if token, false if a value */ struct value l_val; int start_index; /* index of first char in token */ int length; /* length of token in chars */ }; struct ft_entry { /* standard/internal function table entry */ char *f_name; /* pointer to name of this function */ FUNC_PTR func; /* address of function to call */ }; struct udft_entry { /* user-defined function table entry */ struct udft_entry *next_udf; /* pointer to next udf in linked list */ char udf_name[MAX_ID_LEN+1]; /* name of this function entry */ struct at_type *at; /* pointer to action table to execute */ char *definition; /* definition of function as typed */ struct value dummy_value; /* current value of dummy variable */ }; struct udvt_entry { /* user-defined value table entry */ struct udvt_entry *next_udv; /* pointer to next value in linked list */ char udv_name[MAX_ID_LEN+1]; /* name of this value entry */ BOOLEAN udv_undef; /* true if not defined yet */ struct value udv_value; /* value it has */ }; union argument { /* p-code argument */ int j_arg; /* offset for jump */ struct value v_arg; /* constant value */ struct udvt_entry *udv_arg; /* pointer to dummy variable */ struct udft_entry *udf_arg; /* pointer to udf to execute */ }; struct at_entry { /* action table entry */ enum operators index; /* index of p-code function */ union argument arg; }; struct at_type { int a_count; /* count of entries in .actions[] */ struct at_entry actions[MAX_AT_LEN]; /* will usually be less than MAX_AT_LEN is malloc()'d copy */ }; /* Defines the type of a coordinate */ /* INRANGE and OUTRANGE points have an x,y point associated with them */ enum coord_type { INRANGE, /* inside plot boundary */ OUTRANGE, /* outside plot boundary, but defined */ UNDEFINED /* not defined at all */ }; struct coordinate { enum coord_type type; /* see above */ #ifdef PC float x, y; /* memory is tight on PCs! */ #else double x, y; #endif /* PC */ }; struct curve_points { struct curve_points *next_cp; /* pointer to next plot in linked list */ enum PLOT_TYPE plot_type; enum PLOT_STYLE plot_style; char *title; int line_type; int point_type; int p_count; /* count of points in .points[] */ struct coordinate points[MAX_POINTS]; /* will usually be less in malloc()'d copy */ }; struct termentry { char *name; char *description; unsigned int xmax,ymax,v_char,h_char,v_tic,h_tic; FUNC_PTR init,reset,text,scale,graphics,move,vector,linetype, put_text,text_angle,justify_text,point,arrow; }; struct text_label { struct text_label *next; /* pointer to next label in linked list */ int tag; /* identifies the label */ double x,y; enum JUSTIFY pos; char text[MAX_LINE_LEN+1]; }; struct arrow_def { struct arrow_def *next; /* pointer to next arrow in linked list */ int tag; /* identifies the arrow */ double sx,sy; /* start position */ double ex,ey; /* end position */ }; /* Tic-mark labelling definition; see set xtics */ struct ticdef { int type; /* one of three values below */ #define TIC_COMPUTED 1 /* default; gnuplot figures them */ #define TIC_SERIES 2 /* user-defined series */ #define TIC_USER 3 /* user-defined points */ union { struct { /* for TIC_SERIES */ double start, incr; double end; /* ymax, if VERYLARGE */ } series; struct ticmark *user; /* for TIC_USER */ } def; }; /* Defines one ticmark for TIC_USER style. * If label==NULL, the value is printed with the usual format string. * else, it is used as the format string (note that it may be a constant * string, like "high" or "low"). */ struct ticmark { double position; /* where on axis is this */ char *label; /* optional (format) string label */ struct ticmark *next; /* linked list */ }; /* * SS$_NORMAL is "normal completion", STS$M_INHIB_MSG supresses * printing a status message. * SS$_ABORT is the general abort status code. from: Martin Minow decvax!minow */ #ifdef vms #include <ssdef.h> #include <stsdef.h> #define IO_SUCCESS (SS$_NORMAL | STS$M_INHIB_MSG) #define IO_ERROR SS$_ABORT #endif /* vms */ #ifndef IO_SUCCESS /* DECUS or VMS C will have defined these already */ #define IO_SUCCESS 0 #endif #ifndef IO_ERROR #define IO_ERROR 1 #endif /* Some key global variables */ extern BOOLEAN screen_ok; extern BOOLEAN term_init; extern BOOLEAN undefined; extern struct termentry term_tbl[]; extern char *alloc();