1 /******************************************/
3 /******************************************/
4 /******************************************************************************/
6 /******************************************************************************/
15 /******************************************************************************/
17 /******************************************************************************/
18 #define TYPE_STRING 'S'
19 #define TYPE_FLOAT 'F'
21 /* directions for pin */
28 /******************************************************************************/
30 /******************************************************************************/
31 typedef struct s_lib_group
{
33 struct s_lib_group
*NEXT
;
34 long TYPE
; /* identificateur du groupe */
35 chain_list
*NAMES
; /* liste des noms du groupe */
36 chain_list
*S_ATTR
; /* liste de simple attribute */
37 ht
*S_ATTRHT
; /* hash table des simple attribute (non utilisee encore)*/
38 chain_list
*C_ATTR
; /* liste de complex attribute */
39 ht
*C_ATTRHT
; /* hash table des complex attribute (non utilisee encore)*/
40 struct s_lib_group
*SONS
; /* liste des (sous-)groupes inclus dans ce groupe */
41 struct s_lib_group
*LAST_SON
; /* pointeur sur le dernier groupe fils */
42 struct s_lib_group
*OWNER
; /* pointeur sur le groupe qui inclut ce groupe */
46 typedef struct s_lib_simple_attr
{
50 lib_group
*OWNER
; /* pointeur sur le groupe auquel appartient cet attribut */
54 typedef struct s_lib_complex_attr
{
58 lib_group
*OWNER
; /* pointeur sur le groupe auquel appartient cet attribut */
63 typedef struct s_scale_unit
{
72 /******************************************************************************/
74 /******************************************************************************/
75 extern num_list
*LIB_PTRCONTEXT
;
76 extern lib_group
*LIB_GP_HEAD
;
77 extern lib_group
*LIB_CURRENT_GP
;
78 extern char LIB_TRACE_MODE
;
79 extern lib_scale_unit
*LIB_TIME_U
, *LIB_CAPA_U
, *LIB_RES_U
;
80 extern char *LIB_BUS_DELIM
;
81 extern ptype_list
*libparserpowerptype
;
83 /******************************************************************************/
85 /******************************************************************************/
87 /******************************************************************************/
89 /******************************************************************************/
90 extern char *lib_unquote(char *source
);
91 extern void lib_push_context(long data
);
92 extern void lib_pop_context();
93 extern long lib_get_context();
94 extern long lib_give_context(char *ident
);
95 extern void lib_setenv();
96 extern char lib_get_char_dir(char *str_dir
);
97 extern void lib_aff_cbhcomb(cbhcomb
*p
);
98 extern void lib_aff_cbhseq(cbhseq
*p
);
99 extern void lib_init(void);
100 extern char *lib_chainlistToStr(chain_list
*pchain
);
101 extern chain_list
*lib_strToChainFloat(char *s
);
102 extern void lib_affchain(chain_list
*p
, char *format
, char type
);
103 extern lib_group
*lib_creategroup(char *type
, chain_list
*names
);
104 extern lib_group
*lib_addgroup(lib_group
*g
, lib_group
*newgp
);
105 extern void lib_pushgroup(char *type
, chain_list
*names
);
106 extern void lib_popgroup(void);
107 extern long lib_get_s_attr_type(char *name
);
108 extern lib_s_attr
*lib_create_s_attr(long type
, char *val
);
109 extern void lib_add_s_attr(char *name
, char *val
);
110 extern char *lib_get_s_attr_val(lib_group
*g
, long type
);
111 extern long lib_get_c_attr_type(char *name
);
112 extern lib_c_attr
*lib_create_c_attr(long type
, chain_list
*val
);
113 extern void lib_add_c_attr(char *name
, chain_list
*val
);
114 extern chain_list
*lib_get_c_attr_val(lib_group
*g
, long type
);
115 extern lib_group
*lib_get_son_group(lib_group
*g
, long type
);
116 extern lib_scale_unit
*lib_get_time_unit(char *attr_val
);
117 extern lib_scale_unit
*lib_get_res_unit(char *attr_val
);
118 extern lib_scale_unit
*lib_get_capa_unit(chain_list
*attr_val
);
119 extern lib_group
*lib_del_group(lib_group
*g
);
120 extern void lib_aff_hgp(lib_group
*g
, int ntabs
);
121 extern char *lib_get_str_type(long type
);
122 extern void lib_del_one_s_attr(lib_group
*g
, long sa_type
);
123 extern void lib_del_all_s_attr(lib_group
*g
);
124 extern void lib_del_one_c_attr(lib_group
*g
, long sa_type
);
125 extern void lib_del_all_c_attr(lib_group
*g
);
126 extern void lib_func_get_bus_size(lib_group
*g
, int *b_from
, int *b_to
);