stage3/narrow_candidate_datatypes.cc
changeset 1041 56ebe2a31b5b
parent 1040 e8563dcaefca
child 1047 34b733cb6641
--- a/stage3/narrow_candidate_datatypes.cc	Mon Apr 03 22:06:40 2017 +0100
+++ b/stage3/narrow_candidate_datatypes.cc	Mon Apr 03 22:18:22 2017 +0100
@@ -609,8 +609,8 @@
 // SYM_LIST(enumerated_value_list_c)
 void *narrow_candidate_datatypes_c::visit(enumerated_value_list_c *symbol) {
 //if (NULL == symbol->datatype) ERROR;  // Comented out-> Reserve this check for the print_datatypes_error_c ???  
-  for(int i = 0; i < symbol->n; i++) set_datatype(symbol->datatype, symbol->elements[i]);
-//for(int i = 0; i < symbol->n; i++) if (NULL == symbol->elements[i]->datatype) ERROR; // Comented out-> Reserve this check for the print_datatypes_error_c ???  
+  for(int i = 0; i < symbol->n; i++) set_datatype(symbol->datatype, symbol->get_element(i));
+//for(int i = 0; i < symbol->n; i++) if (NULL == symbol->get_element(i)->datatype) ERROR; // Comented out-> Reserve this check for the print_datatypes_error_c ???  
   return NULL;  
 }
 
@@ -682,7 +682,7 @@
 		// assume symbol->datatype is a FB type
 		search_varfb_instance_type_c search_varfb_instance_type(symbol->datatype);
 		for (int k = 0; k < symbol->n; k++) {
-			structure_element_initialization_c *struct_elem = (structure_element_initialization_c *)symbol->elements[k];
+			structure_element_initialization_c *struct_elem = (structure_element_initialization_c *)symbol->get_element(k);
 			symbol_c *type = search_varfb_instance_type.get_basetype_decl(struct_elem->structure_element_name);
 			set_datatype(type, struct_elem);
 			struct_elem->accept(*this);
@@ -772,11 +772,11 @@
 // SYM_LIST(subscript_list_c)
 void *narrow_candidate_datatypes_c::visit(subscript_list_c *symbol) {
 	for (int i = 0; i < symbol->n; i++) {
-		for (unsigned int k = 0; k < symbol->elements[i]->candidate_datatypes.size(); k++) {
-			if (get_datatype_info_c::is_ANY_INT(symbol->elements[i]->candidate_datatypes[k]))
-				symbol->elements[i]->datatype = symbol->elements[i]->candidate_datatypes[k];
+		for (unsigned int k = 0; k < symbol->get_element(i)->candidate_datatypes.size(); k++) {
+			if (get_datatype_info_c::is_ANY_INT(symbol->get_element(i)->candidate_datatypes[k]))
+				symbol->get_element(i)->datatype = symbol->get_element(i)->candidate_datatypes[k];
 		}
-		symbol->elements[i]->accept(*this);
+		symbol->get_element(i)->accept(*this);
 	}
 	return NULL;  
 }
@@ -846,8 +846,8 @@
 void *narrow_candidate_datatypes_c::visit(var1_list_c *symbol) {
 #if 0   /* We don't really need to set the datatype of each variable. We just check the declaration itself! */
   for(int i = 0; i < symbol->n; i++) {
-    if (symbol->elements[i]->candidate_datatypes.size() == 1)
-      symbol->elements[i]->datatype = symbol->elements[i]->candidate_datatypes[0];
+    if (symbol->get_element(i)->candidate_datatypes.size() == 1)
+      symbol->get_element(i)->datatype = symbol->get_element(i)->candidate_datatypes[0];
   }
 #endif
   return NULL;
@@ -1026,7 +1026,7 @@
 	 */
 	for(int j = 0; j < 2; j++) {
 		for(int i = symbol->n-1; i >= 0; i--) {
-			symbol->elements[i]->accept(*this);
+			symbol->get_element(i)->accept(*this);
 		}
 	}
 	return NULL;
@@ -1141,7 +1141,7 @@
    */
   if ((NULL != symbol->il_operand) && ((NULL == symbol->simple_instr_list) || (0 == ((list_c *)symbol->simple_instr_list)->n))) ERROR; // stage2 is not behaving as we expect it to!
   if  (NULL != symbol->il_operand)
-    symbol->il_operand->datatype = ((list_c *)symbol->simple_instr_list)->elements[0]->datatype;
+    symbol->il_operand->datatype = ((list_c *)symbol->simple_instr_list)->get_element(0)->datatype;
   
   return NULL;
 }
@@ -1213,10 +1213,10 @@
 /* This object is referenced by il_expression_c objects */
 void *narrow_candidate_datatypes_c::visit(simple_instr_list_c *symbol) {
 	if (symbol->n > 0)
-		symbol->elements[symbol->n - 1]->datatype = symbol->datatype;
+		symbol->get_element(symbol->n - 1)->datatype = symbol->datatype;
 
 	for(int i = symbol->n-1; i >= 0; i--) {
-		symbol->elements[i]->accept(*this);
+		symbol->get_element(i)->accept(*this);
 	}
 	return NULL;
 }
@@ -1748,8 +1748,8 @@
 // SYM_LIST(case_element_list_c)
 void *narrow_candidate_datatypes_c::visit(case_element_list_c *symbol) {
 	for (int i = 0; i < symbol->n; i++) {
-		symbol->elements[i]->datatype = symbol->datatype;
-		symbol->elements[i]->accept(*this);
+		symbol->get_element(i)->datatype = symbol->datatype;
+		symbol->get_element(i)->accept(*this);
 	}
 	return NULL;
 }
@@ -1766,12 +1766,12 @@
 // SYM_LIST(case_list_c)
 void *narrow_candidate_datatypes_c::visit(case_list_c *symbol) {
 	for (int i = 0; i < symbol->n; i++) {
-		for (unsigned int k = 0; k < symbol->elements[i]->candidate_datatypes.size(); k++) {
-			if (get_datatype_info_c::is_type_equal(symbol->datatype, symbol->elements[i]->candidate_datatypes[k]))
-				symbol->elements[i]->datatype = symbol->elements[i]->candidate_datatypes[k];
+		for (unsigned int k = 0; k < symbol->get_element(i)->candidate_datatypes.size(); k++) {
+			if (get_datatype_info_c::is_type_equal(symbol->datatype, symbol->get_element(i)->candidate_datatypes[k]))
+				symbol->get_element(i)->datatype = symbol->get_element(i)->candidate_datatypes[k];
 		}
 		/* NOTE: this may be an integer, a subrange_c, or a enumerated value! */
-		symbol->elements[i]->accept(*this);
+		symbol->get_element(i)->accept(*this);
 	}
 	return NULL;
 }