?? datatypes.h
字號:
#ifndef DATATYPES_H
#define DATATYPES_H
/*
* Typedefs for the data_type storage and of the types.
*/
typedef unsigned char DATA_TYPE;
/*
* Define Data Classes
*/
#define TYPE_UNDEFINED 0
#define TYPE_INVALID 1
#define TYPE_INTEGER 2
#define TYPE_DOUBLE 3
#define TYPE_FXDPT 4
#define TYPE_LOGICAL 5
#define TYPE_STRING 6
#define TYPE_FLOAT 7
#define TYPE_MVL9 8
#define TYPE_OBJECT 9 /* New "object" type for Multimedia blocks */
#define TYPE_POLYMORPHIC 9 /* Polymorphic type for EnVision 1.5 */
#define TYPE_FXPOBJ 10 /* New "fixed point object" type for Envision blocks */
#define TYPE_UNSPECIFIED 11 /* New for SPW 4.0: unspecified */
#define TYPE_USERDEF 12 /* New for SPW 4.0: user defined */
/* Mohit Agarwal Jun 2001 */
#define TYPE_ELECTRICAL 13
#define TYPE_BOOLN 14
/* #define TYPE_SPARE13 13 */
/* #define TYPE_SPARE14 14 */
/* #define TYPE_SPARE15 15 */
/* Valid range for type code is 0 to 15 */
#define TYPE_CLASS_MASK 0x0F
#define TYPE_IS_INVALID(type) (((type) & TYPE_CLASS_MASK) == TYPE_INVALID)
#define TYPE_IS_UNDEFINED(type) (((type) & TYPE_CLASS_MASK) == TYPE_UNDEFINED)
#define TYPE_IS_INTEGER(type) (((type) & TYPE_CLASS_MASK) == TYPE_INTEGER)
#define TYPE_IS_DOUBLE(type) (((type) & TYPE_CLASS_MASK) == TYPE_DOUBLE)
#define TYPE_IS_FXDPT(type) (((type) & TYPE_CLASS_MASK) == TYPE_FXDPT)
#define TYPE_IS_LOGICAL(type) (((type) & TYPE_CLASS_MASK) == TYPE_LOGICAL)
#define TYPE_IS_STRING(type) (((type) & TYPE_CLASS_MASK) == TYPE_STRING)
#define TYPE_IS_FLOAT(type) (((type) & TYPE_CLASS_MASK) == TYPE_FLOAT)
#define TYPE_IS_MVL9(type) (((type) & TYPE_CLASS_MASK) == TYPE_MVL9)
#define TYPE_IS_OBJECT(type) (((type) & TYPE_CLASS_MASK) == TYPE_OBJECT)
#define TYPE_IS_FXPOBJ(type) (((type) & TYPE_CLASS_MASK) == TYPE_FXPOBJ)
#define TYPE_IS_UNSPECIFIED(type) (((type) & TYPE_CLASS_MASK) == TYPE_UNSPECIFIED)
#define TYPE_IS_USERDEF(type) (((type) & TYPE_CLASS_MASK) == TYPE_USERDEF)
#define TYPE_CLASS_SET(flag,type) flag=(flag & ~TYPE_CLASS_MASK)|type
/*
* Define scalar/vector/matrix/tensor
*/
#define TYPE_SCALAR 0x00
#define TYPE_VECTOR 0x40
#define TYPE_MATRIX 0x80
#define TYPE_TENSOR 0xC0
#define TYPE_SVMT_MASK 0xC0
#define TYPE_IS_SCALAR(type) (((type) & TYPE_SVMT_MASK) == TYPE_SCALAR)
#define TYPE_IS_VECTOR(type) (((type) & TYPE_SVMT_MASK) == TYPE_VECTOR)
#define TYPE_IS_MATRIX(type) (((type) & TYPE_SVMT_MASK) == TYPE_MATRIX)
#define TYPE_IS_TENSOR(type) (((type) & TYPE_SVMT_MASK) == TYPE_TENSOR)
#define TYPE_SVMT_SET(flag,type) flag=(flag & ~TYPE_SVMT_MASK)|type
/*
* Define real/complex
*/
#define TYPE_REAL 0x00
#define TYPE_COMPLEX 0x20
#define TYPE_RC_MASK 0x20
#define TYPE_IS_REAL(type) (((type) & TYPE_RC_MASK) == TYPE_REAL)
#define TYPE_IS_COMPLEX(type) (((type) & TYPE_RC_MASK) == TYPE_COMPLEX)
#define TYPE_RC_SET(flag,type) flag=(flag & ~TYPE_RC_MASK)|type
/*
* Also, distinguish real/imag and mag/phase (in radians).
*/
#define TYPE_REAL_IMAG 0x00
#define TYPE_MAG_PHASE 0x10
#define TYPE_MAG_MASK 0x10
#define COMPLEX_IS_REAL_IMAG(type) (((type) & TYPE_MAG_MASK) == TYPE_REAL_IMAG)
#define COMPLEX_IS_MAG_PHASE(type) (((type) & TYPE_MAG_MASK) == TYPE_MAG_PHASE)
#define TYPE_MAG_SET(flag,type) flag=(flag & ~TYPE_MAG_MASK)|type
#define TYPE_SRE (TYPE_ELECTRICAL | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SRB (TYPE_BOOLN | TYPE_SCALAR | TYPE_REAL)
/*
* Special case define
*/
#define TYPE_HAS_ATTR(type) (!TYPE_IS_SCALAR (type) || TYPE_IS_FXDPT (type))
/*
* Define Combinations of the above
*/
#define TYPE_SRI (TYPE_INTEGER | TYPE_SCALAR | TYPE_REAL)
#define SCALAR_REAL_INTEGER (TYPE_INTEGER | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SCI (TYPE_INTEGER | TYPE_SCALAR | TYPE_COMPLEX)
#define SCALAR_COMPLEX_INTEGER (TYPE_INTEGER | TYPE_SCALAR | TYPE_COMPLEX)
#define TYPE_SMI (TYPE_INTEGER | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define SCALAR_COMPLEX_MAG_INTEGER (TYPE_INTEGER | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_VRI (TYPE_INTEGER | TYPE_VECTOR | TYPE_REAL)
#define VECTOR_REAL_INTEGER (TYPE_INTEGER | TYPE_VECTOR | TYPE_REAL)
#define TYPE_VCI (TYPE_INTEGER | TYPE_VECTOR | TYPE_COMPLEX)
#define VECTOR_COMPLEX_INTEGER (TYPE_INTEGER | TYPE_VECTOR | TYPE_COMPLEX)
#define TYPE_VMI (TYPE_INTEGER | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define VECTOR_COMPLEX_MAG_INTEGER (TYPE_INTEGER | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_MRI (TYPE_INTEGER | TYPE_MATRIX | TYPE_REAL)
#define MATRIX_REAL_INTEGER (TYPE_INTEGER | TYPE_MATRIX | TYPE_REAL)
#define TYPE_MCI (TYPE_INTEGER | TYPE_MATRIX | TYPE_COMPLEX)
#define MATRIX_COMPLEX_INTEGER (TYPE_INTEGER | TYPE_MATRIX | TYPE_COMPLEX)
#define TYPE_SRD (TYPE_DOUBLE | TYPE_SCALAR | TYPE_REAL)
#define SCALAR_REAL_DOUBLE (TYPE_DOUBLE | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SCD (TYPE_DOUBLE | TYPE_SCALAR | TYPE_COMPLEX)
#define SCALAR_COMPLEX_DOUBLE (TYPE_DOUBLE | TYPE_SCALAR | TYPE_COMPLEX)
#define TYPE_SMD (TYPE_DOUBLE | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define SCALAR_COMPLEX_MAG_DOUBLE (TYPE_DOUBLE | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_VRD (TYPE_DOUBLE | TYPE_VECTOR | TYPE_REAL)
#define VECTOR_REAL_DOUBLE (TYPE_DOUBLE | TYPE_VECTOR | TYPE_REAL)
#define TYPE_VCD (TYPE_DOUBLE | TYPE_VECTOR | TYPE_COMPLEX)
#define VECTOR_COMPLEX_DOUBLE (TYPE_DOUBLE | TYPE_VECTOR | TYPE_COMPLEX)
#define TYPE_VMD (TYPE_DOUBLE | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define VECTOR_COMPLEX_MAG_DOUBLE (TYPE_DOUBLE | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_MRD (TYPE_DOUBLE | TYPE_MATRIX | TYPE_REAL)
#define MATRIX_REAL_DOUBLE (TYPE_DOUBLE | TYPE_MATRIX | TYPE_REAL)
#define TYPE_MCD (TYPE_DOUBLE | TYPE_MATRIX | TYPE_COMPLEX)
#define MATRIX_COMPLEX_DOUBLE (TYPE_DOUBLE | TYPE_MATRIX | TYPE_COMPLEX)
#define TYPE_SRX (TYPE_FXDPT | TYPE_SCALAR | TYPE_REAL)
#define SCALAR_REAL_FXDPT (TYPE_FXDPT | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SCX (TYPE_FXDPT | TYPE_SCALAR | TYPE_COMPLEX)
#define SCALAR_COMPLEX_FXDPT (TYPE_FXDPT | TYPE_SCALAR | TYPE_COMPLEX)
#define TYPE_SMX (TYPE_FXDPT | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define SCALAR_COMPLEX_MAG_FXDPT (TYPE_FXDPT | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_VRX (TYPE_FXDPT | TYPE_VECTOR | TYPE_REAL)
#define VECTOR_REAL_FXDPT (TYPE_FXDPT | TYPE_VECTOR | TYPE_REAL)
#define TYPE_VCX (TYPE_FXDPT | TYPE_VECTOR | TYPE_COMPLEX)
#define VECTOR_COMPLEX_FXDPT (TYPE_FXDPT | TYPE_VECTOR | TYPE_COMPLEX)
#define TYPE_VMX (TYPE_FXDPT | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define VECTOR_COMPLEX_MAG_FXDPT (TYPE_FXDPT | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_MRX (TYPE_FXDPT | TYPE_MATRIX | TYPE_REAL)
#define MATRIX_REAL_FXDPT (TYPE_FXDPT | TYPE_MATRIX | TYPE_REAL)
#define TYPE_MCX (TYPE_FXDPT | TYPE_MATRIX | TYPE_COMPLEX)
#define MATRIX_COMPLEX_FXDPT (TYPE_FXDPT | TYPE_MATRIX | TYPE_COMPLEX)
#define TYPE_SRM (TYPE_MVL9 | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SCALAR_REAL_MVL9 (TYPE_MVL9 | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SRL (TYPE_LOGICAL | TYPE_SCALAR | TYPE_REAL)
#define SCALAR_REAL_LOGICAL (TYPE_LOGICAL | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SCL (TYPE_LOGICAL | TYPE_SCALAR | TYPE_REAL)
#define SCALAR_COMPLEX_LOGICAL (TYPE_LOGICAL | TYPE_SCALAR | TYPE_COMPLEX)
#define TYPE_VRL (TYPE_LOGICAL | TYPE_VECTOR | TYPE_REAL)
#define VECTOR_REAL_LOGICAL (TYPE_LOGICAL | TYPE_VECTOR | TYPE_REAL)
#define TYPE_MRL (TYPE_LOGICAL | TYPE_MATRIX | TYPE_REAL)
#define MATRIX_REAL_LOGICAL (TYPE_LOGICAL | TYPE_MATRIX | TYPE_REAL)
#define TYPE_SRS (TYPE_STRING | TYPE_SCALAR | TYPE_REAL)
#define SCALAR_REAL_STRING (TYPE_STRING | TYPE_SCALAR | TYPE_REAL)
#define TYPE_VRS (TYPE_STRING | TYPE_VECTOR | TYPE_REAL)
#define VECTOR_REAL_STRING (TYPE_STRING | TYPE_VECTOR | TYPE_REAL)
#define TYPE_MRS (TYPE_STRING | TYPE_MATRIX | TYPE_REAL)
#define MATRIX_REAL_STRING (TYPE_STRING | TYPE_MATRIX | TYPE_REAL)
#define TYPE_SRF (TYPE_FLOAT | TYPE_SCALAR | TYPE_REAL)
#define SCALAR_REAL_FLOAT (TYPE_FLOAT | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SCF (TYPE_FLOAT | TYPE_SCALAR | TYPE_COMPLEX)
#define SCALAR_COMPLEX_FLOAT (TYPE_FLOAT | TYPE_SCALAR | TYPE_COMPLEX)
#define TYPE_SMF (TYPE_FLOAT | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define SCALAR_COMPLEX_MAG_FLOAT (TYPE_FLOAT | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_VRF (TYPE_FLOAT | TYPE_VECTOR | TYPE_REAL)
#define VECTOR_REAL_FLOAT (TYPE_FLOAT | TYPE_VECTOR | TYPE_REAL)
#define TYPE_VCF (TYPE_FLOAT | TYPE_VECTOR | TYPE_COMPLEX)
#define VECTOR_COMPLEX_FLOAT (TYPE_FLOAT | TYPE_VECTOR | TYPE_COMPLEX)
#define TYPE_VMF (TYPE_FLOAT | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define VECTOR_COMPLEX_MAG_FLOAT (TYPE_FLOAT | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_MRF (TYPE_FLOAT | TYPE_MATRIX | TYPE_REAL)
#define MATRIX_REAL_FLOAT (TYPE_FLOAT | TYPE_MATRIX | TYPE_REAL)
#define TYPE_MCF (TYPE_FLOAT | TYPE_MATRIX | TYPE_COMPLEX)
#define MATRIX_COMPLEX_FLOAT (TYPE_FLOAT | TYPE_MATRIX | TYPE_COMPLEX)
/*
* "OBJECT" (user defined) is used for "object" and "fixed-point object"
* ports in the new multimedia blocks. This data type should only
* be seen by the BDE (as implemented today, September 28, 1995) as
* the EDBPI will return INTEGER rather than OBJECT. An additonal
* parameter for each pin will distinguish between the integer and
* fixed-point pins and these two new object type (user definable) pins.
*/
#define TYPE_SRP (TYPE_POLYMORPHIC | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SRO (TYPE_OBJECT | TYPE_SCALAR | TYPE_REAL)
#define SCALAR_REAL_OBJECT (TYPE_OBJECT | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SCO (TYPE_OBJECT | TYPE_SCALAR | TYPE_COMPLEX)
#define SCALAR_COMPLEX_OBJECT (TYPE_OBJECT | TYPE_SCALAR | TYPE_COMPLEX)
#define TYPE_SMO (TYPE_OBJECT | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define SCALAR_COMPLEX_MAG_OBJECT (TYPE_OBJECT | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_VRO (TYPE_OBJECT | TYPE_VECTOR | TYPE_REAL)
#define VECTOR_REAL_OBJECT (TYPE_OBJECT | TYPE_VECTOR | TYPE_REAL)
#define TYPE_VCO (TYPE_OBJECT | TYPE_VECTOR | TYPE_COMPLEX)
#define VECTOR_COMPLEX_OBJECT (TYPE_OBJECT | TYPE_VECTOR | TYPE_COMPLEX)
#define TYPE_VMO (TYPE_OBJECT | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define VECTOR_COMPLEX_MAG_OBJECT (TYPE_OBJECT | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_MRO (TYPE_OBJECT | TYPE_MATRIX | TYPE_REAL)
#define MATRIX_REAL_OBJECT (TYPE_OBJECT | TYPE_MATRIX | TYPE_REAL)
#define TYPE_MCO (TYPE_OBJECT | TYPE_MATRIX | TYPE_COMPLEX)
#define MATRIX_COMPLEX_OBJECT (TYPE_OBJECT | TYPE_MATRIX | TYPE_COMPLEX)
/*
* "FXPOBJ" (user defined) is used for "fixed-point object"
* ports in the new multimedia blocks. This data type should only
* be seen by the BDE (as implemented today, September 28, 1995) as
* the EDBPI will return FXDPT rather than FXPOBJ. An additonal
* parameter for each pin will distinguish between the fixed-point and
* fixed-point object pins and these two new object type (user definable) pins.
*/
#define TYPE_SRY (TYPE_FXPOBJ | TYPE_SCALAR | TYPE_REAL)
#define SCALAR_REAL_FXPOBJ (TYPE_FXPOBJ | TYPE_SCALAR | TYPE_REAL)
#define TYPE_SCY (TYPE_FXPOBJ | TYPE_SCALAR | TYPE_COMPLEX)
#define SCALAR_COMPLEX_FXPOBJ (TYPE_FXPOBJ | TYPE_SCALAR | TYPE_COMPLEX)
#define TYPE_SMY (TYPE_FXPOBJ | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define SCALAR_COMPLEX_MAG_FXPOBJ (TYPE_FXPOBJ | TYPE_SCALAR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_VRY (TYPE_FXPOBJ | TYPE_VECTOR | TYPE_REAL)
#define VECTOR_REAL_FXPOBJ (TYPE_FXPOBJ | TYPE_VECTOR | TYPE_REAL)
#define TYPE_VCY (TYPE_FXPOBJ | TYPE_VECTOR | TYPE_COMPLEX)
#define VECTOR_COMPLEX_FXPOBJ (TYPE_FXPOBJ | TYPE_VECTOR | TYPE_COMPLEX)
#define TYPE_VMY (TYPE_FXPOBJ | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define VECTOR_COMPLEX_MAG_FXPOBJ (TYPE_FXPOBJ | TYPE_VECTOR | TYPE_COMPLEX | TYPE_MAG_PHASE)
#define TYPE_MRY (TYPE_FXPOBJ | TYPE_MATRIX | TYPE_REAL)
#define MATRIX_REAL_FXPOBJ (TYPE_FXPOBJ | TYPE_MATRIX | TYPE_REAL)
#define TYPE_MCY (TYPE_FXPOBJ | TYPE_MATRIX | TYPE_COMPLEX)
#define MATRIX_COMPLEX_FXPOBJ (TYPE_FXPOBJ | TYPE_MATRIX | TYPE_COMPLEX)
/*
* TYPE_SRZ is used in the BDE to indicated a port with
* a type that has not been specified (unbound). A port
* with an unspecified type can connect to any other port type.
* The actual type is resolved during or after netlisting.
*/
#define TYPE_SRZ (TYPE_UNSPECIFIED | TYPE_SCALAR | TYPE_REAL)
/*
* TYPE_SRU indicates a user defined port type. An associated
* string value associated with the dot actually defines the port type.
*/
#define TYPE_SRU (TYPE_USERDEF | TYPE_SCALAR | TYPE_REAL)
/*
* String representations of the above
*/
#define TYPE_NUM_ENTRIES 256
#define TYPE_MASK 0xff
/* lines: 0-7, 8-31, 32-39, 40-63, 64-71, 72-95, 96-103, ... */
/* +7 +1+23 +1+7 +1+23 +1+7 +1+23 +1+7 ... */
#define TYPE_STRINGS {\
"UNDEFINED", "INVALID", "SRI", "SRD", "SRX", "SRL", "SRS", "SRF", "SRM", "SRP", "SRO", 0, 0, "SRE",\
"SRB", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, "SCI", "SCD", "SCX", 0, 0, "SCF", 0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, "VMI", "VMD", "VMX", 0, 0, "VMF", 0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, "VRI", "VRD", "VRX", "VRL", "VRS", "VRF", 0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, "VCI", "VCD", "VCX", 0, 0, "VCF", 0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, "MRI", "MRD", "MRX", "MRL", "MRS", "MRF", 0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, "MCI", "MCD", "MCX", 0, 0, "MCF", 0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
#define SHORTSIZE (sizeof(short) * 8)
#define FIXBYTESIZE(bits) (((bits / SHORTSIZE) + ((bits % SHORTSIZE) > 0)) * 2)
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -