ngspice/src/include/miftypes.h

227 lines
4.2 KiB
C
Executable File

#ifndef MIFTYPES
#define MIFTYPES
/* ===========================================================================
FILE MIFtypes.h
MEMBER OF process XSPICE
Copyright 1991
Georgia Tech Research Corporation
Atlanta, Georgia 30332
All Rights Reserved
PROJECT A-8503
AUTHORS
9/12/91 Bill Kuhn
MODIFICATIONS
<date> <person name> <nature of modifications>
SUMMARY
This file contains typedefs shared by several header files in
the MIF package.
INTERFACES
None.
REFERENCED FILES
None.
NON-STANDARD FEATURES
None.
=========================================================================== */
/* ***************************************************************************** */
typedef int Mif_Boolean_t;
#define MIF_FALSE 0
#define MIF_TRUE 1
typedef int Mif_Status_t;
#define MIF_OK 0
#define MIF_ERROR 1
/*
typedef enum {
MIF_OK,
MIF_ERROR,
} Mif_Status_t;
*/
/* ***************************************************************************** */
/*
* The type of call to a code model - analog or event-driven
*/
typedef enum {
MIF_ANALOG, /* Analog call */
MIF_EVENT_DRIVEN, /* Event-driven call */
} Mif_Call_Type_t;
/*
* Analysis type enumerations
*/
typedef enum {
MIF_DC, /* A DC or DCOP analysis */
MIF_AC, /* A swept AC analysis */
MIF_TRAN, /* A transient analysis */
} Mif_Analysis_t;
/*
* Port type enumerations
*/
typedef enum {
MIF_VOLTAGE, /* v - Single-ended voltage */
MIF_DIFF_VOLTAGE, /* vd - Differential voltage */
MIF_CURRENT, /* i - Single-ended current */
MIF_DIFF_CURRENT, /* id - Differential current */
MIF_VSOURCE_CURRENT, /* vnam - Voltage source current */
MIF_CONDUCTANCE, /* g - Single-ended VCIS */
MIF_DIFF_CONDUCTANCE, /* gd - Differential VCIS */
MIF_RESISTANCE, /* h - Single-ended ICVS */
MIF_DIFF_RESISTANCE, /* hd - Differential ICVS */
MIF_DIGITAL, /* d - Digital */
MIF_USER_DEFINED, /* <identifier> - Any user defined type */
} Mif_Port_Type_t;
/*
* The direction of a connector
*/
typedef enum {
MIF_IN, /* Input only */
MIF_OUT, /* Output only */
MIF_INOUT, /* Input and output (e.g. g or h type) */
} Mif_Dir_t;
/*
* The type of a parameter
*/
typedef enum {
MIF_BOOLEAN,
MIF_INTEGER,
MIF_REAL,
MIF_COMPLEX,
MIF_STRING,
} Mif_Data_Type_t;
/*
* The type of a token
*/
typedef enum {
MIF_LARRAY_TOK,
MIF_RARRAY_TOK,
MIF_LCOMPLEX_TOK,
MIF_RCOMPLEX_TOK,
MIF_PERCENT_TOK,
MIF_TILDE_TOK,
MIF_STRING_TOK,
MIF_NULL_TOK,
MIF_NO_TOK,
} Mif_Token_Type_t;
/*
* Type of controlled source
*/
typedef enum {
MIF_VCVS,
MIF_VCIS,
MIF_ICVS,
MIF_ICIS,
} Mif_Cntl_Src_Type_t;
/* ***************************************************************************** */
/*
* Complex numbers
*/
typedef struct {
double real;
double imag;
} Mif_Complex_t;
/*
* Values of different types used by the load, ... routines
*/
typedef union {
Mif_Boolean_t bvalue; /* For digital node value */
int ivalue; /* For integer parameters */
double rvalue; /* For spice node values and real parameters */
Mif_Complex_t cvalue; /* For complex parameters */
char *svalue; /* For string parameters */
void *pvalue; /* For user defined nodes */
} Mif_Value_t;
/*
* Values of different types used by the parser. Note that this is a structure
* instead of a union because we need to do initializations in the ifspec.c files for
* the models and unions cannot be initialized in any useful way in C
*
*/
typedef struct {
Mif_Boolean_t bvalue; /* For boolean values */
int ivalue; /* For integer values */
double rvalue; /* For real values */
Mif_Complex_t cvalue; /* For complex values */
char *svalue; /* For string values */
} Mif_Parse_Value_t;
#endif /* MIFTYPES */