Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / lib / lib_util.h
1 /******************************************/
2 /* lib_util.h */
3 /******************************************/
4 /******************************************************************************/
5 /* INCLUDE */
6 /******************************************************************************/
7 #ifndef LIB_UTIL_H
8 #define LIB_UTIL_H
9
10 #include LIB_H
11 #include BEH_H
12 #include CBH_H
13
14
15 /******************************************************************************/
16 /* DEFINE */
17 /******************************************************************************/
18 #define TYPE_STRING 'S'
19 #define TYPE_FLOAT 'F'
20
21 /* directions for pin */
22 #define IN 'I'
23 #define OUT 'O'
24 #define IO 'B'
25 #define IOT 'T'
26 #define TRI 'Z'
27 #define INT 'X'
28 /******************************************************************************/
29 /* STRUCTURES */
30 /******************************************************************************/
31 typedef struct s_lib_group {
32
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 */
43
44 } lib_group;
45
46 typedef struct s_lib_simple_attr {
47
48 long TYPE;
49 char *VALUE;
50 lib_group *OWNER; /* pointeur sur le groupe auquel appartient cet attribut */
51
52 } lib_s_attr;
53
54 typedef struct s_lib_complex_attr {
55
56 long TYPE;
57 chain_list *VALUES;
58 lib_group *OWNER; /* pointeur sur le groupe auquel appartient cet attribut */
59
60 } lib_c_attr;
61
62
63 typedef struct s_scale_unit {
64 char UNIT;
65 float FACTOR;
66 } lib_scale_unit;
67
68
69
70
71
72 /******************************************************************************/
73 /* GLOBALS */
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;
82
83 /******************************************************************************/
84 /* EXTERNS */
85 /******************************************************************************/
86
87 /******************************************************************************/
88 /* FONCTIONS */
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);
127
128
129 #endif
130
131
132