65 |
65 |
66 |
66 |
67 /***********************************/ |
67 /***********************************/ |
68 /* B 1.3.1 - Elementary Data Types */ |
68 /* B 1.3.1 - Elementary Data Types */ |
69 /***********************************/ |
69 /***********************************/ |
70 void *visit(time_type_name_c *symbol) {return (void *)"TIME"; }; |
70 void *visit(time_type_name_c *symbol) {return (void *)"TIME"; }; |
71 void *visit(bool_type_name_c *symbol) {return (void *)"BOOL"; }; |
71 void *visit(bool_type_name_c *symbol) {return (void *)"BOOL"; }; |
72 void *visit(sint_type_name_c *symbol) {return (void *)"SINT"; }; |
72 void *visit(sint_type_name_c *symbol) {return (void *)"SINT"; }; |
73 void *visit(int_type_name_c *symbol) {return (void *)"INT"; }; |
73 void *visit(int_type_name_c *symbol) {return (void *)"INT"; }; |
74 void *visit(dint_type_name_c *symbol) {return (void *)"DINT"; }; |
74 void *visit(dint_type_name_c *symbol) {return (void *)"DINT"; }; |
75 void *visit(lint_type_name_c *symbol) {return (void *)"LINT"; }; |
75 void *visit(lint_type_name_c *symbol) {return (void *)"LINT"; }; |
76 void *visit(usint_type_name_c *symbol) {return (void *)"USINT"; }; |
76 void *visit(usint_type_name_c *symbol) {return (void *)"USINT"; }; |
77 void *visit(uint_type_name_c *symbol) {return (void *)"UINT"; }; |
77 void *visit(uint_type_name_c *symbol) {return (void *)"UINT"; }; |
78 void *visit(udint_type_name_c *symbol) {return (void *)"UDINT"; }; |
78 void *visit(udint_type_name_c *symbol) {return (void *)"UDINT"; }; |
79 void *visit(ulint_type_name_c *symbol) {return (void *)"ULINT"; }; |
79 void *visit(ulint_type_name_c *symbol) {return (void *)"ULINT"; }; |
80 void *visit(real_type_name_c *symbol) {return (void *)"REAL"; }; |
80 void *visit(real_type_name_c *symbol) {return (void *)"REAL"; }; |
81 void *visit(lreal_type_name_c *symbol) {return (void *)"LREAL"; }; |
81 void *visit(lreal_type_name_c *symbol) {return (void *)"LREAL"; }; |
82 void *visit(date_type_name_c *symbol) {return (void *)"DATE"; }; |
82 void *visit(date_type_name_c *symbol) {return (void *)"DATE"; }; |
83 void *visit(tod_type_name_c *symbol) {return (void *)"TOD"; }; |
83 void *visit(tod_type_name_c *symbol) {return (void *)"TOD"; }; |
84 void *visit(dt_type_name_c *symbol) {return (void *)"DT"; }; |
84 void *visit(dt_type_name_c *symbol) {return (void *)"DT"; }; |
85 void *visit(byte_type_name_c *symbol) {return (void *)"BYTE"; }; |
85 void *visit(byte_type_name_c *symbol) {return (void *)"BYTE"; }; |
86 void *visit(word_type_name_c *symbol) {return (void *)"WORD"; }; |
86 void *visit(word_type_name_c *symbol) {return (void *)"WORD"; }; |
87 void *visit(lword_type_name_c *symbol) {return (void *)"LWORD"; }; |
87 void *visit(lword_type_name_c *symbol) {return (void *)"LWORD"; }; |
88 void *visit(dword_type_name_c *symbol) {return (void *)"DWORD"; }; |
88 void *visit(dword_type_name_c *symbol) {return (void *)"DWORD"; }; |
89 void *visit(string_type_name_c *symbol) {return (void *)"STRING"; }; |
89 void *visit(string_type_name_c *symbol) {return (void *)"STRING"; }; |
90 void *visit(wstring_type_name_c *symbol) {return (void *)"WSTRING"; }; |
90 void *visit(wstring_type_name_c *symbol) {return (void *)"WSTRING"; }; |
91 |
91 |
92 void *visit(safetime_type_name_c *symbol) {return (void *)"SAFETIME"; }; |
92 void *visit(safetime_type_name_c *symbol) {return (void *)"SAFETIME"; }; |
93 void *visit(safebool_type_name_c *symbol) {return (void *)"SAFEBOOL"; }; |
93 void *visit(safebool_type_name_c *symbol) {return (void *)"SAFEBOOL"; }; |
94 void *visit(safesint_type_name_c *symbol) {return (void *)"SAFESINT"; }; |
94 void *visit(safesint_type_name_c *symbol) {return (void *)"SAFESINT"; }; |
95 void *visit(safeint_type_name_c *symbol) {return (void *)"SAFEINT"; }; |
95 void *visit(safeint_type_name_c *symbol) {return (void *)"SAFEINT"; }; |
96 void *visit(safedint_type_name_c *symbol) {return (void *)"SAFEDINT"; }; |
96 void *visit(safedint_type_name_c *symbol) {return (void *)"SAFEDINT"; }; |
97 void *visit(safelint_type_name_c *symbol) {return (void *)"SAFELINT"; }; |
97 void *visit(safelint_type_name_c *symbol) {return (void *)"SAFELINT"; }; |
98 void *visit(safeusint_type_name_c *symbol) {return (void *)"SAFEUSINT"; }; |
98 void *visit(safeusint_type_name_c *symbol) {return (void *)"SAFEUSINT"; }; |
99 void *visit(safeuint_type_name_c *symbol) {return (void *)"SAFEUINT"; }; |
99 void *visit(safeuint_type_name_c *symbol) {return (void *)"SAFEUINT"; }; |
100 void *visit(safeudint_type_name_c *symbol) {return (void *)"SAFEUDINT"; }; |
100 void *visit(safeudint_type_name_c *symbol) {return (void *)"SAFEUDINT"; }; |
101 void *visit(safeulint_type_name_c *symbol) {return (void *)"SAFEULINT"; }; |
101 void *visit(safeulint_type_name_c *symbol) {return (void *)"SAFEULINT"; }; |
102 void *visit(safereal_type_name_c *symbol) {return (void *)"SAFEREAL"; }; |
102 void *visit(safereal_type_name_c *symbol) {return (void *)"SAFEREAL"; }; |
103 void *visit(safelreal_type_name_c *symbol) {return (void *)"SAFELREAL"; }; |
103 void *visit(safelreal_type_name_c *symbol) {return (void *)"SAFELREAL"; }; |
104 void *visit(safedate_type_name_c *symbol) {return (void *)"SAFEDATE"; }; |
104 void *visit(safedate_type_name_c *symbol) {return (void *)"SAFEDATE"; }; |
105 void *visit(safetod_type_name_c *symbol) {return (void *)"SAFETOD"; }; |
105 void *visit(safetod_type_name_c *symbol) {return (void *)"SAFETOD"; }; |
106 void *visit(safedt_type_name_c *symbol) {return (void *)"SAFEDT"; }; |
106 void *visit(safedt_type_name_c *symbol) {return (void *)"SAFEDT"; }; |
107 void *visit(safebyte_type_name_c *symbol) {return (void *)"SAFEBYTE"; }; |
107 void *visit(safebyte_type_name_c *symbol) {return (void *)"SAFEBYTE"; }; |
108 void *visit(safeword_type_name_c *symbol) {return (void *)"SAFEWORD"; }; |
108 void *visit(safeword_type_name_c *symbol) {return (void *)"SAFEWORD"; }; |
109 void *visit(safelword_type_name_c *symbol) {return (void *)"SAFELWORD"; }; |
109 void *visit(safelword_type_name_c *symbol) {return (void *)"SAFELWORD"; }; |
110 void *visit(safedword_type_name_c *symbol) {return (void *)"SAFEDWORD"; }; |
110 void *visit(safedword_type_name_c *symbol) {return (void *)"SAFEDWORD"; }; |
111 void *visit(safestring_type_name_c *symbol) {return (void *)"SAFESTRING"; }; |
111 void *visit(safestring_type_name_c *symbol) {return (void *)"SAFESTRING"; }; |
112 void *visit(safewstring_type_name_c *symbol) {return (void *)"SAFEWSTRING"; }; |
112 void *visit(safewstring_type_name_c *symbol) {return (void *)"SAFEWSTRING"; }; |
113 }; |
113 }; |
114 |
114 |
115 |
115 |
116 |
116 |
149 void intersect_prev_candidate_datatype_lists(il_instruction_c *symbol); |
149 void intersect_prev_candidate_datatype_lists(il_instruction_c *symbol); |
150 |
150 |
151 |
151 |
152 |
152 |
153 /* A helper function... */ |
153 /* A helper function... */ |
154 bool is_ANY_ELEMENTARY_type (symbol_c *type_symbol); |
154 bool is_ANY_ELEMENTARY_type (symbol_c *type_symbol); |
155 bool is_ANY_SAFEELEMENTARY_type (symbol_c *type_symbol); |
155 bool is_ANY_SAFEELEMENTARY_type (symbol_c *type_symbol); |
156 bool is_ANY_ELEMENTARY_compatible (symbol_c *type_symbol); |
156 bool is_ANY_ELEMENTARY_compatible (symbol_c *type_symbol); |
157 |
157 |
158 bool is_ANY_MAGNITUDE_type (symbol_c *type_symbol); |
158 bool is_ANY_MAGNITUDE_type (symbol_c *type_symbol); |
159 bool is_ANY_SAFEMAGNITUDE_type (symbol_c *type_symbol); |
159 bool is_ANY_SAFEMAGNITUDE_type (symbol_c *type_symbol); |
160 bool is_ANY_MAGNITUDE_compatible (symbol_c *type_symbol); |
160 bool is_ANY_MAGNITUDE_compatible (symbol_c *type_symbol); |
161 |
161 |
162 bool is_ANY_signed_MAGNITUDE_type (symbol_c *type_symbol); |
162 bool is_ANY_signed_MAGNITUDE_type (symbol_c *type_symbol); |
163 bool is_ANY_signed_SAFEMAGNITUDE_type (symbol_c *type_symbol); |
163 bool is_ANY_signed_SAFEMAGNITUDE_type (symbol_c *type_symbol); |
164 bool is_ANY_signed_MAGNITUDE_compatible (symbol_c *type_symbol); |
164 bool is_ANY_signed_MAGNITUDE_compatible (symbol_c *type_symbol); |
165 |
165 |
166 bool is_ANY_DATE_type (symbol_c *type_symbol); |
166 bool is_ANY_DATE_type (symbol_c *type_symbol); |
167 bool is_ANY_SAFEDATE_type (symbol_c *type_symbol); |
167 bool is_ANY_SAFEDATE_type (symbol_c *type_symbol); |
168 bool is_ANY_DATE_compatible (symbol_c *type_symbol); |
168 bool is_ANY_DATE_compatible (symbol_c *type_symbol); |
169 |
169 |
170 bool is_ANY_STRING_type (symbol_c *type_symbol); |
170 bool is_ANY_STRING_type (symbol_c *type_symbol); |
171 bool is_ANY_SAFESTRING_type (symbol_c *type_symbol); |
171 bool is_ANY_SAFESTRING_type (symbol_c *type_symbol); |
172 bool is_ANY_STRING_compatible (symbol_c *type_symbol); |
172 bool is_ANY_STRING_compatible (symbol_c *type_symbol); |
173 |
173 |
174 bool is_ANY_INT_type (symbol_c *type_symbol); |
174 bool is_ANY_INT_type (symbol_c *type_symbol); |
175 bool is_ANY_SAFEINT_type (symbol_c *type_symbol); |
175 bool is_ANY_SAFEINT_type (symbol_c *type_symbol); |
176 bool is_ANY_INT_compatible (symbol_c *type_symbol); |
176 bool is_ANY_INT_compatible (symbol_c *type_symbol); |
177 |
177 |
178 bool is_ANY_signed_INT_type (symbol_c *type_symbol); |
178 bool is_ANY_signed_INT_type (symbol_c *type_symbol); |
179 bool is_ANY_signed_SAFEINT_type (symbol_c *type_symbol); |
179 bool is_ANY_signed_SAFEINT_type (symbol_c *type_symbol); |
180 bool is_ANY_signed_INT_compatible (symbol_c *type_symbol); |
180 bool is_ANY_signed_INT_compatible (symbol_c *type_symbol); |
181 |
181 |
182 bool is_ANY_REAL_type (symbol_c *type_symbol); |
182 bool is_ANY_REAL_type (symbol_c *type_symbol); |
183 bool is_ANY_SAFEREAL_type (symbol_c *type_symbol); |
183 bool is_ANY_SAFEREAL_type (symbol_c *type_symbol); |
184 bool is_ANY_REAL_compatible (symbol_c *type_symbol); |
184 bool is_ANY_REAL_compatible (symbol_c *type_symbol); |
185 |
185 |
186 bool is_ANY_NUM_type (symbol_c *type_symbol); |
186 bool is_ANY_NUM_type (symbol_c *type_symbol); |
187 bool is_ANY_SAFENUM_type (symbol_c *type_symbol); |
187 bool is_ANY_SAFENUM_type (symbol_c *type_symbol); |
188 bool is_ANY_NUM_compatible (symbol_c *type_symbol); |
188 bool is_ANY_NUM_compatible (symbol_c *type_symbol); |
189 |
189 |
190 bool is_ANY_signed_NUM_type (symbol_c *type_symbol); |
190 bool is_ANY_signed_NUM_type (symbol_c *type_symbol); |
191 bool is_ANY_signed_SAFENUM_type (symbol_c *type_symbol); |
191 bool is_ANY_signed_SAFENUM_type (symbol_c *type_symbol); |
192 bool is_ANY_signed_NUM_compatible (symbol_c *type_symbol); |
192 bool is_ANY_signed_NUM_compatible (symbol_c *type_symbol); |
193 |
193 |
194 bool is_ANY_BIT_type (symbol_c *type_symbol); |
194 bool is_ANY_BIT_type (symbol_c *type_symbol); |
195 bool is_ANY_SAFEBIT_type (symbol_c *type_symbol); |
195 bool is_ANY_SAFEBIT_type (symbol_c *type_symbol); |
196 bool is_ANY_BIT_compatible (symbol_c *type_symbol); |
196 bool is_ANY_BIT_compatible (symbol_c *type_symbol); |
197 |
197 |
198 bool is_BOOL_type (symbol_c *type_symbol); |
198 bool is_BOOL_type (symbol_c *type_symbol); |
199 bool is_SAFEBOOL_type (symbol_c *type_symbol); |
199 bool is_SAFEBOOL_type (symbol_c *type_symbol); |
200 bool is_ANY_BOOL_compatible (symbol_c *type_symbol); |
200 bool is_ANY_BOOL_compatible (symbol_c *type_symbol); |
201 |
201 |
202 |
202 |
203 bool is_type_equal(symbol_c *first_type, symbol_c *second_type); |
203 bool is_type_equal(symbol_c *first_type, symbol_c *second_type); |
204 bool is_type_valid(symbol_c *type); |
204 bool is_type_valid(symbol_c *type); |
205 |
205 |