We need YOU !
This commit is contained in:
parent
18d68b3200
commit
310d0bc007
|
@ -139,8 +139,8 @@
|
||||||
{
|
{
|
||||||
struct ctltype_list *NEXT;
|
struct ctltype_list *NEXT;
|
||||||
char *NAME;
|
char *NAME;
|
||||||
unsigned long LEFT;
|
long LEFT;
|
||||||
unsigned long RIGHT;
|
long RIGHT;
|
||||||
unsigned long SIZE;
|
unsigned long SIZE;
|
||||||
char **VALUE;
|
char **VALUE;
|
||||||
char CLASS;
|
char CLASS;
|
||||||
|
@ -284,7 +284,7 @@
|
||||||
|
|
||||||
extern ctlfig_list *addctlfig __P((char *Name));
|
extern ctlfig_list *addctlfig __P((char *Name));
|
||||||
extern ctlform_list *addctlform __P((ctlfig_list *Figure, char *Name, vexexpr *Expr));
|
extern ctlform_list *addctlform __P((ctlfig_list *Figure, char *Name, vexexpr *Expr));
|
||||||
extern ctltype_list *addctltype __P((ctlfig_list *Figure, char *Name));
|
extern ctltype_list *addctltype __P((ctlfig_list *Figure, char *Name, unsigned long Index, long Left, long Right, unsigned long Size, char **Value, char Class, ctltype_list *Base));
|
||||||
|
|
||||||
extern ctldecl_list *addctldecl __P((ctlfig_list *Figure, vexexpr *Atom, unsigned char Type ));
|
extern ctldecl_list *addctldecl __P((ctlfig_list *Figure, vexexpr *Atom, unsigned char Type ));
|
||||||
extern ctldecl_list *addctldeclvar __P((ctlfig_list *Figure, vexexpr *Atom));
|
extern ctldecl_list *addctldeclvar __P((ctlfig_list *Figure, vexexpr *Atom));
|
||||||
|
|
|
@ -252,7 +252,7 @@ ctldecl_list *addctldeclvar( Figure, Atom )
|
||||||
ctlerror( CTL_VARIABLE_EXIST_ERROR, Name, 0 );
|
ctlerror( CTL_VARIABLE_EXIST_ERROR, Name, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Constant = loc_addctldecl( Figure, Atom, CTL_DECLAR_CONSTANT );
|
Constant = loc_addctldecl( Figure, Atom, CTL_DECLAR_VARIABLE );
|
||||||
|
|
||||||
return( Constant );
|
return( Constant );
|
||||||
}
|
}
|
||||||
|
@ -361,8 +361,15 @@ ctlform_list *addctlform( Figure, Name, Expr )
|
||||||
Form->NAME = namealloc( Name );;
|
Form->NAME = namealloc( Name );;
|
||||||
Form->VEX_EXPR = Expr;
|
Form->VEX_EXPR = Expr;
|
||||||
|
|
||||||
Form->NEXT = Figure->FORM;
|
Form->PREV = &Figure->FORM;
|
||||||
Figure->FORM = Form;
|
Form->NEXT = *(Form->PREV);
|
||||||
|
|
||||||
|
if ( Form->NEXT != (ctlform_list *)0 )
|
||||||
|
{
|
||||||
|
Form->NEXT->PREV = &Form->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(Form->PREV) = Form;
|
||||||
|
|
||||||
return( Form );
|
return( Form );
|
||||||
}
|
}
|
||||||
|
@ -373,10 +380,18 @@ ctlform_list *addctlform( Figure, Name, Expr )
|
||||||
| |
|
| |
|
||||||
\------------------------------------------------------------*/
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
ctltype_list *addctltype( Figure, Name )
|
ctltype_list *addctltype( Figure, Name, Index,
|
||||||
|
Left, Right, Size, Value, Class, Base )
|
||||||
|
|
||||||
ctlfig_list *Figure;
|
ctlfig_list *Figure;
|
||||||
char *Name;
|
char *Name;
|
||||||
|
unsigned long Index;
|
||||||
|
long Left;
|
||||||
|
long Right;
|
||||||
|
unsigned long Size;
|
||||||
|
char **Value;
|
||||||
|
char Class;
|
||||||
|
ctltype_list *Base;
|
||||||
{
|
{
|
||||||
ctltype_list *Type;
|
ctltype_list *Type;
|
||||||
|
|
||||||
|
@ -384,7 +399,103 @@ ctltype_list *addctltype( Figure, Name )
|
||||||
|
|
||||||
Type->NAME = namealloc( Name );;
|
Type->NAME = namealloc( Name );;
|
||||||
Type->NEXT = Figure->TYPE;
|
Type->NEXT = Figure->TYPE;
|
||||||
|
Type->LEFT = Left;
|
||||||
|
Type->RIGHT = Right;
|
||||||
|
Type->SIZE = Size;
|
||||||
|
Type->VALUE = Value;
|
||||||
|
Type->CLASS = Class;
|
||||||
|
Type->INDEX = Index;
|
||||||
|
Type->BASE = Base;
|
||||||
Figure->TYPE = Type;
|
Figure->TYPE = Type;
|
||||||
|
|
||||||
return( Type );
|
return( Type );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Ctl Add Predefined Type |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void addctlpredefinedtype( Figure )
|
||||||
|
|
||||||
|
ctlfig_list *Figure;
|
||||||
|
{
|
||||||
|
static char *bit_vl[2];
|
||||||
|
static char *boolean_vl[2];
|
||||||
|
static char *severity_vl[2];
|
||||||
|
static char *std_ulogic_vl[9];
|
||||||
|
|
||||||
|
ctltype_list *TypeBit;
|
||||||
|
ctltype_list *TypeReg;
|
||||||
|
ctltype_list *TypeMux;
|
||||||
|
ctltype_list *TypeWor;
|
||||||
|
ctltype_list *TypeInt;
|
||||||
|
ctltype_list *TypeStd_logic;
|
||||||
|
ctltype_list *TypeStd_ulogic;
|
||||||
|
ctltype_list *TypeCharacter;
|
||||||
|
|
||||||
|
boolean_vl[0] = namealloc ("false");
|
||||||
|
boolean_vl[1] = namealloc ("true");
|
||||||
|
|
||||||
|
bit_vl[0] = namealloc ("'0'");
|
||||||
|
bit_vl[1] = namealloc ("'1'");
|
||||||
|
|
||||||
|
severity_vl[0] = namealloc ("warning");
|
||||||
|
severity_vl[1] = namealloc ("error");
|
||||||
|
|
||||||
|
std_ulogic_vl[ 0 ] = namealloc("'u'");
|
||||||
|
std_ulogic_vl[ 1 ] = namealloc("'x'");
|
||||||
|
std_ulogic_vl[ 2 ] = namealloc("'0'");
|
||||||
|
std_ulogic_vl[ 3 ] = namealloc("'1'");
|
||||||
|
std_ulogic_vl[ 4 ] = namealloc("'z'");
|
||||||
|
std_ulogic_vl[ 5 ] = namealloc("'w'");
|
||||||
|
std_ulogic_vl[ 6 ] = namealloc("'l'");
|
||||||
|
std_ulogic_vl[ 7 ] = namealloc("'h'");
|
||||||
|
std_ulogic_vl[ 8 ] = namealloc("'-'");
|
||||||
|
|
||||||
|
addctltype( Figure, "severity_level",
|
||||||
|
VEX_TYPE_SEVERITY, 0, 1, 2, severity_vl, 'E', NULL );
|
||||||
|
|
||||||
|
addctltype( Figure, "boolean",
|
||||||
|
VEX_TYPE_BOOLEAN , 0, 1, 2, boolean_vl, 'E', NULL );
|
||||||
|
|
||||||
|
TypeBit = addctltype( Figure, "bit",
|
||||||
|
VEX_TYPE_BIT , 0, 1, 2, bit_vl , 'E', NULL );
|
||||||
|
|
||||||
|
|
||||||
|
TypeCharacter = addctltype( Figure, "character",
|
||||||
|
VEX_TYPE_CHARACTER, 0, 127, 0, NULL , 'E', NULL );
|
||||||
|
|
||||||
|
addctltype( Figure, "string",
|
||||||
|
VEX_TYPE_STRING, 0, 0x7fffffff, 0, NULL, 'U', TypeCharacter );
|
||||||
|
|
||||||
|
TypeInt = addctltype( Figure, "integer",
|
||||||
|
VEX_TYPE_INTEGER, 0x80000000, 0x7fffffff, 0, NULL, 'I', NULL );
|
||||||
|
|
||||||
|
addctltype( Figure, "natural",
|
||||||
|
VEX_TYPE_NATURAL, 0 ,0x7fffffff, 0, NULL, 'I', NULL );
|
||||||
|
|
||||||
|
addctltype( Figure, "bit_vector",
|
||||||
|
VEX_TYPE_BIT_VECTOR, 0, 0x7fffffff, 0, NULL, 'U', TypeBit );
|
||||||
|
|
||||||
|
TypeStd_ulogic = addctltype( Figure, "std_ulogic",
|
||||||
|
VEX_TYPE_STD_ULOGIC, 0, 8, 9, std_ulogic_vl, 'E', NULL );
|
||||||
|
|
||||||
|
TypeStd_logic = addctltype( Figure, "std_logic",
|
||||||
|
VEX_TYPE_STD_LOGIC , 0, 8, 9, std_ulogic_vl, 'E', NULL );
|
||||||
|
|
||||||
|
addctltype( Figure, "std_ulogic_vector",
|
||||||
|
VEX_TYPE_STD_ULOGIC_VECTOR,
|
||||||
|
0,0x7fffffff, 0, NULL, 'U', TypeStd_ulogic );
|
||||||
|
|
||||||
|
addctltype( Figure,"std_logic_vector",
|
||||||
|
VEX_TYPE_STD_LOGIC_VECTOR, 0,0x7fffffff, 0, NULL,
|
||||||
|
'U',TypeStd_logic );
|
||||||
|
|
||||||
|
addctltype( Figure,"unsigned",
|
||||||
|
VEX_TYPE_UNSIGNED, 0,0x7fffffff, 0, NULL, 'U', TypeStd_logic );
|
||||||
|
|
||||||
|
addctltype( Figure,"signed",
|
||||||
|
VEX_TYPE_SIGNED, 0,0x7fffffff, 0, NULL, 'U', TypeStd_logic );
|
||||||
|
}
|
||||||
|
|
|
@ -181,8 +181,6 @@ int delctlfig( Name )
|
||||||
|
|
||||||
while ( ScanType != (ctltype_list *)0 )
|
while ( ScanType != (ctltype_list *)0 )
|
||||||
{
|
{
|
||||||
autfreeblock( ScanType->VALUE );
|
|
||||||
|
|
||||||
Delete = (void *)( ScanType );
|
Delete = (void *)( ScanType );
|
||||||
ScanType = ScanType->NEXT;
|
ScanType = ScanType->NEXT;
|
||||||
|
|
||||||
|
|
|
@ -224,3 +224,28 @@ ctlform_list *searchctlform( Figure, Name )
|
||||||
return( Form );
|
return( Form );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Ctl Search Type |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
ctltype_list *searchctltype( Figure, Name )
|
||||||
|
|
||||||
|
ctlfig_list *Figure;
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
ctltype_list *Type;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
|
||||||
|
for ( Type = Figure->TYPE;
|
||||||
|
Type != (ctltype_list *)0;
|
||||||
|
Type = Type->NEXT )
|
||||||
|
{
|
||||||
|
if ( Type->NAME == Name ) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return( Type );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue