ngspice/src/include/cpdefs.h

117 lines
3.3 KiB
C
Raw Normal View History

2000-04-27 22:03:57 +02:00
/**********
Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Wayne A. Christopher, U. C. Berkeley CAD Group
**********/
/*
* General stuff for the C-shell parser.
*/
/* Standard definitions */
#ifndef CPDEFS
#define CPDEFS
#include "cpstd.h"
#define MAXWORDS 512
/* Information about spice commands. */
struct comm {
char *co_comname; /* The name of the command. */
void (*co_func) (); /* The function that handles the command. */
bool co_stringargs; /* Collapse the arguments into a string. */
bool co_spiceonly; /* These can't be used from nutmeg. */
bool co_major; /* Is this a "major" command? */
long co_cctypes[4]; /* Bitmasks for command completion. */
unsigned int co_env;/* print help message on this environment mask */
int co_minargs; /* minimum number of arguments required */
int co_maxargs; /* maximum number of arguments allowed */
int (*co_argfn) (); /* The fn that prompts the user. */
char *co_help; /* When these are printed, printf(string, av[0]) .. */
};
#define LOTS 1000
/* The history list. Things get put here after the first (basic) parse.
* The word list will change later, so be sure to copy it.
*/
struct histent {
int hi_event;
wordlist *hi_wlist;
struct histent *hi_next;
struct histent *hi_prev;
};
/* Variables that are accessible to the parser via $varname expansions.
* If the type is VT_LIST the value is a pointer to a list of the elements.
*/
struct variable {
char va_type;
char *va_name;
union {
bool vV_bool;
int vV_num;
double vV_real;
char *vV_string;
struct variable *vV_list;
} va_V;
struct variable *va_next; /* Link. */
} ;
#define va_bool va_V.vV_bool
#define va_num va_V.vV_num
#define va_real va_V.vV_real
#define va_string va_V.vV_string
#define va_vlist va_V.vV_list
#define VT_BOOL 1
#define VT_NUM 2
#define VT_REAL 3
#define VT_STRING 4
#define VT_LIST 5
/* The values returned by cp_userset(). */
#define US_OK 1 /* Either not relevant or nothing special. */
#define US_READONLY 2 /* Complain and don't set this var. */
#define US_DONTRECORD 3 /* Ok, but don't keep track of this one. */
#define US_SIMVAR 4 /* OK, recorded in options struct */
#define US_NOSIMVAR 5 /* Not OK, simulation param but circuit not loaded */
/* Aliases. These will be expanded if the word is the first in an input
* line. The substitution string may contain arg selectors.
*/
struct alias {
char *al_name; /* The word to be substituted for. */
wordlist *al_text; /* What to substitute for it. */
struct alias *al_next;
struct alias *al_prev;
} ;
/* The current record of what characters are special. */
#define CPC_BRR 004 /* Break word to right of character. */
#define CPC_BRL 010 /* Break word to left of character. */
/* For quoting individual characters. '' strings are all quoted, but `` and
* "" strings are maintained as single words with the quotes around them.
* Note that this won't work on non-ascii machines.
*/
#define quote(c) ((c) | 0200)
#define strip(c) ((c) & 0177)
#define CT_ALIASES 1
#define CT_LABEL 15
/* Get all the extern definitions... */
#include "cpextern.h"
#endif /*CPDEFS*/