- int dimen = bound_list.Count;\r
- int[] lower_array = new int[dimen];\r
- int[] size_array = new int[dimen];\r
- bool lower_set = false;\r
- bool size_set = false;\r
- bool prev_lower_set = true;\r
- bool prev_size_set = true;\r
-\r
- // TODO: There should probably be an error reported if\r
- // something like [3...,3...5] is done\r
- for (int i=0; i<dimen; i++) {\r
- DictionaryEntry bound = (DictionaryEntry) bound_list[i];\r
- \r
- if (bound.Key != null && prev_lower_set) {\r
- lower_array[i] = (int) bound.Key;\r
- lower_set = true;\r
- } else {\r
- prev_lower_set = false;\r
- } \r
- if (bound.Value != null && prev_size_set) {\r
- size_array[i] = (int) bound.Value;\r
- size_set = true;\r
- } else {\r
- prev_size_set = false;\r
- }\r
- }\r
- if (lower_set && size_set) {\r
- $$ = new BoundArray (base_type.Type,\r
- (uint) dimen, lower_array, size_array);\r
- } else if (size_set) {\r
- $$ = new BoundArray (base_type.Type,\r
- (uint) dimen, size_array);\r
- } else {\r
- $$ = new BoundArray (base_type.Type, (uint) dimen);\r
- }\r