1 /* varobj support for Ada.
3 Copyright (C) 2012-2014 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
26 /* Implementation principle used in this unit:
28 For our purposes, the meat of the varobj object is made of two
29 elements: The varobj's (struct) value, and the varobj's (struct)
30 type. In most situations, the varobj has a non-NULL value, and
31 the type becomes redundant, as it can be directly derived from
32 the value. In the initial implementation of this unit, most
33 routines would only take a value, and return a value.
35 But there are many situations where it is possible for a varobj
36 to have a NULL value. For instance, if the varobj becomes out of
37 scope. Or better yet, when the varobj is the child of another
38 NULL pointer varobj. In that situation, we must rely on the type
39 instead of the value to create the child varobj.
41 That's why most functions below work with a (value, type) pair.
42 The value may or may not be NULL. But the type is always expected
43 to be set. When the value is NULL, then we work with the type
44 alone, and keep the value NULL. But when the value is not NULL,
45 then we work using the value, because it provides more information.
46 But we still always set the type as well, even if that type could
47 easily be derived from the value. The reason behind this is that
48 it allows the code to use the type without having to worry about
49 it being set or not. It makes the code clearer. */
51 static int ada_varobj_get_number_of_children (struct value *parent_value,
52 struct type *parent_type);
54 /* A convenience function that decodes the VALUE_PTR/TYPE_PTR couple:
55 If there is a value (*VALUE_PTR not NULL), then perform the decoding
56 using it, and compute the associated type from the resulting value.
57 Otherwise, compute a static approximation of *TYPE_PTR, leaving
60 The results are written in place. */
63 ada_varobj_decode_var (struct value **value_ptr, struct type **type_ptr)
67 *value_ptr = ada_get_decoded_value (*value_ptr);
68 *type_ptr = ada_check_typedef (value_type (*value_ptr));
71 *type_ptr = ada_get_decoded_type (*type_ptr);
74 /* Return a string containing an image of the given scalar value.
75 VAL is the numeric value, while TYPE is the value's type.
76 This is useful for plain integers, of course, but even more
77 so for enumerated types.
79 The result should be deallocated by xfree after use. */
82 ada_varobj_scalar_image (struct type *type, LONGEST val)
84 struct ui_file *buf = mem_fileopen ();
85 struct cleanup *cleanups = make_cleanup_ui_file_delete (buf);
88 ada_print_scalar (type, val, buf);
89 result = ui_file_xstrdup (buf, NULL);
90 do_cleanups (cleanups);
95 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair designates
96 a struct or union, compute the (CHILD_VALUE, CHILD_TYPE) couple
97 corresponding to the field number FIELDNO. */
100 ada_varobj_struct_elt (struct value *parent_value,
101 struct type *parent_type,
103 struct value **child_value,
104 struct type **child_type)
106 struct value *value = NULL;
107 struct type *type = NULL;
111 value = value_field (parent_value, fieldno);
112 type = value_type (value);
115 type = TYPE_FIELD_TYPE (parent_type, fieldno);
118 *child_value = value;
123 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is a pointer or
124 reference, return a (CHILD_VALUE, CHILD_TYPE) couple corresponding
125 to the dereferenced value. */
128 ada_varobj_ind (struct value *parent_value,
129 struct type *parent_type,
130 struct value **child_value,
131 struct type **child_type)
133 struct value *value = NULL;
134 struct type *type = NULL;
136 if (ada_is_array_descriptor_type (parent_type))
138 /* This can only happen when PARENT_VALUE is NULL. Otherwise,
139 ada_get_decoded_value would have transformed our parent_type
140 into a simple array pointer type. */
141 gdb_assert (parent_value == NULL);
142 gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF);
144 /* Decode parent_type by the equivalent pointer to (decoded)
146 while (TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF)
147 parent_type = TYPE_TARGET_TYPE (parent_type);
148 parent_type = ada_coerce_to_simple_array_type (parent_type);
149 parent_type = lookup_pointer_type (parent_type);
152 /* If parent_value is a null pointer, then only perform static
153 dereferencing. We cannot dereference null pointers. */
154 if (parent_value && value_as_address (parent_value) == 0)
159 value = ada_value_ind (parent_value);
160 type = value_type (value);
163 type = TYPE_TARGET_TYPE (parent_type);
166 *child_value = value;
171 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is a simple
172 array (TYPE_CODE_ARRAY), return the (CHILD_VALUE, CHILD_TYPE)
173 pair corresponding to the element at ELT_INDEX. */
176 ada_varobj_simple_array_elt (struct value *parent_value,
177 struct type *parent_type,
179 struct value **child_value,
180 struct type **child_type)
182 struct value *value = NULL;
183 struct type *type = NULL;
187 struct value *index_value =
188 value_from_longest (TYPE_INDEX_TYPE (parent_type), elt_index);
190 value = ada_value_subscript (parent_value, 1, &index_value);
191 type = value_type (value);
194 type = TYPE_TARGET_TYPE (parent_type);
197 *child_value = value;
202 /* Given the decoded value and decoded type of a variable object,
203 adjust the value and type to those necessary for getting children
204 of the variable object.
206 The replacement is performed in place. */
209 ada_varobj_adjust_for_child_access (struct value **value,
212 /* Pointers to struct/union types are special: Instead of having
213 one child (the struct), their children are the components of
214 the struct/union type. We handle this situation by dereferencing
215 the (value, type) couple. */
216 if (TYPE_CODE (*type) == TYPE_CODE_PTR
217 && (TYPE_CODE (TYPE_TARGET_TYPE (*type)) == TYPE_CODE_STRUCT
218 || TYPE_CODE (TYPE_TARGET_TYPE (*type)) == TYPE_CODE_UNION)
219 && !ada_is_array_descriptor_type (TYPE_TARGET_TYPE (*type))
220 && !ada_is_constrained_packed_array_type (TYPE_TARGET_TYPE (*type)))
221 ada_varobj_ind (*value, *type, value, type);
223 /* If this is a tagged type, we need to transform it a bit in order
224 to be able to fetch its full view. As always with tagged types,
225 we can only do that if we have a value. */
226 if (*value != NULL && ada_is_tagged_type (*type, 1))
228 *value = ada_tag_value_at_base_address (*value);
229 *type = value_type (*value);
233 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is an array
234 (any type of array, "simple" or not), return the number of children
235 that this array contains. */
238 ada_varobj_get_array_number_of_children (struct value *parent_value,
239 struct type *parent_type)
243 if (!get_array_bounds (parent_type, &lo, &hi))
245 /* Could not get the array bounds. Pretend this is an empty array. */
246 warning (_("unable to get bounds of array, assuming null array"));
250 /* Ada allows the upper bound to be less than the lower bound,
251 in order to specify empty arrays... */
258 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is a struct or
259 union, return the number of children this struct contains. */
262 ada_varobj_get_struct_number_of_children (struct value *parent_value,
263 struct type *parent_type)
268 gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT
269 || TYPE_CODE (parent_type) == TYPE_CODE_UNION);
271 for (i = 0; i < TYPE_NFIELDS (parent_type); i++)
273 if (ada_is_ignored_field (parent_type, i))
276 if (ada_is_wrapper_field (parent_type, i))
278 struct value *elt_value;
279 struct type *elt_type;
281 ada_varobj_struct_elt (parent_value, parent_type, i,
282 &elt_value, &elt_type);
283 if (ada_is_tagged_type (elt_type, 0))
285 /* We must not use ada_varobj_get_number_of_children
286 to determine is element's number of children, because
287 this function first calls ada_varobj_decode_var,
288 which "fixes" the element. For tagged types, this
289 includes reading the object's tag to determine its
290 real type, which happens to be the parent_type, and
291 leads to an infinite loop (because the element gets
292 fixed back into the parent). */
293 n_children += ada_varobj_get_struct_number_of_children
294 (elt_value, elt_type);
297 n_children += ada_varobj_get_number_of_children (elt_value, elt_type);
299 else if (ada_is_variant_part (parent_type, i))
301 /* In normal situations, the variant part of the record should
302 have been "fixed". Or, in other words, it should have been
303 replaced by the branch of the variant part that is relevant
304 for our value. But there are still situations where this
305 can happen, however (Eg. when our parent is a NULL pointer).
306 We do not support showing this part of the record for now,
307 so just pretend this field does not exist. */
316 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair designates
317 a pointer, return the number of children this pointer has. */
320 ada_varobj_get_ptr_number_of_children (struct value *parent_value,
321 struct type *parent_type)
323 struct type *child_type = TYPE_TARGET_TYPE (parent_type);
325 /* Pointer to functions and to void do not have a child, since
326 you cannot print what they point to. */
327 if (TYPE_CODE (child_type) == TYPE_CODE_FUNC
328 || TYPE_CODE (child_type) == TYPE_CODE_VOID)
331 /* All other types have 1 child. */
335 /* Return the number of children for the (PARENT_VALUE, PARENT_TYPE)
339 ada_varobj_get_number_of_children (struct value *parent_value,
340 struct type *parent_type)
342 ada_varobj_decode_var (&parent_value, &parent_type);
343 ada_varobj_adjust_for_child_access (&parent_value, &parent_type);
345 /* A typedef to an array descriptor in fact represents a pointer
346 to an unconstrained array. These types always have one child
347 (the unconstrained array). */
348 if (ada_is_array_descriptor_type (parent_type)
349 && TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF)
352 if (TYPE_CODE (parent_type) == TYPE_CODE_ARRAY)
353 return ada_varobj_get_array_number_of_children (parent_value,
356 if (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT
357 || TYPE_CODE (parent_type) == TYPE_CODE_UNION)
358 return ada_varobj_get_struct_number_of_children (parent_value,
361 if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
362 return ada_varobj_get_ptr_number_of_children (parent_value,
365 /* All other types have no child. */
369 /* Describe the child of the (PARENT_VALUE, PARENT_TYPE) pair
370 whose index is CHILD_INDEX:
372 - If CHILD_NAME is not NULL, then a copy of the child's name
373 is saved in *CHILD_NAME. This copy must be deallocated
374 with xfree after use.
376 - If CHILD_VALUE is not NULL, then save the child's value
377 in *CHILD_VALUE. Same thing for the child's type with
378 CHILD_TYPE if not NULL.
380 - If CHILD_PATH_EXPR is not NULL, then compute the child's
381 path expression. The resulting string must be deallocated
382 after use with xfree.
384 Computing the child's path expression requires the PARENT_PATH_EXPR
385 to be non-NULL. Otherwise, PARENT_PATH_EXPR may be null if
386 CHILD_PATH_EXPR is NULL.
388 PARENT_NAME is the name of the parent, and should never be NULL. */
390 static void ada_varobj_describe_child (struct value *parent_value,
391 struct type *parent_type,
392 const char *parent_name,
393 const char *parent_path_expr,
396 struct value **child_value,
397 struct type **child_type,
398 char **child_path_expr);
400 /* Same as ada_varobj_describe_child, but limited to struct/union
404 ada_varobj_describe_struct_child (struct value *parent_value,
405 struct type *parent_type,
406 const char *parent_name,
407 const char *parent_path_expr,
410 struct value **child_value,
411 struct type **child_type,
412 char **child_path_expr)
417 gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT);
419 for (fieldno = 0; fieldno < TYPE_NFIELDS (parent_type); fieldno++)
421 if (ada_is_ignored_field (parent_type, fieldno))
424 if (ada_is_wrapper_field (parent_type, fieldno))
426 struct value *elt_value;
427 struct type *elt_type;
430 ada_varobj_struct_elt (parent_value, parent_type, fieldno,
431 &elt_value, &elt_type);
432 if (ada_is_tagged_type (elt_type, 0))
434 /* Same as in ada_varobj_get_struct_number_of_children:
435 For tagged types, we must be careful to not call
436 ada_varobj_get_number_of_children, to prevent our
437 element from being fixed back into the parent. */
438 elt_n_children = ada_varobj_get_struct_number_of_children
439 (elt_value, elt_type);
443 ada_varobj_get_number_of_children (elt_value, elt_type);
445 /* Is the child we're looking for one of the children
446 of this wrapper field? */
447 if (child_index - childno < elt_n_children)
449 if (ada_is_tagged_type (elt_type, 0))
451 /* Same as in ada_varobj_get_struct_number_of_children:
452 For tagged types, we must be careful to not call
453 ada_varobj_describe_child, to prevent our element
454 from being fixed back into the parent. */
455 ada_varobj_describe_struct_child
456 (elt_value, elt_type, parent_name, parent_path_expr,
457 child_index - childno, child_name, child_value,
458 child_type, child_path_expr);
461 ada_varobj_describe_child (elt_value, elt_type,
462 parent_name, parent_path_expr,
463 child_index - childno,
464 child_name, child_value,
465 child_type, child_path_expr);
469 /* The child we're looking for is beyond this wrapper
470 field, so skip all its children. */
471 childno += elt_n_children;
474 else if (ada_is_variant_part (parent_type, fieldno))
476 /* In normal situations, the variant part of the record should
477 have been "fixed". Or, in other words, it should have been
478 replaced by the branch of the variant part that is relevant
479 for our value. But there are still situations where this
480 can happen, however (Eg. when our parent is a NULL pointer).
481 We do not support showing this part of the record for now,
482 so just pretend this field does not exist. */
486 if (childno == child_index)
490 /* The name of the child is none other than the field's
491 name, except that we need to strip suffixes from it.
492 For instance, fields with alignment constraints will
493 have an __XVA suffix added to them. */
494 const char *field_name = TYPE_FIELD_NAME (parent_type, fieldno);
495 int child_name_len = ada_name_prefix_len (field_name);
497 *child_name = xstrprintf ("%.*s", child_name_len, field_name);
500 if (child_value && parent_value)
501 ada_varobj_struct_elt (parent_value, parent_type, fieldno,
505 ada_varobj_struct_elt (parent_value, parent_type, fieldno,
510 /* The name of the child is none other than the field's
511 name, except that we need to strip suffixes from it.
512 For instance, fields with alignment constraints will
513 have an __XVA suffix added to them. */
514 const char *field_name = TYPE_FIELD_NAME (parent_type, fieldno);
515 int child_name_len = ada_name_prefix_len (field_name);
518 xstrprintf ("(%s).%.*s", parent_path_expr,
519 child_name_len, field_name);
528 /* Something went wrong. Either we miscounted the number of
529 children, or CHILD_INDEX was too high. But we should never
530 reach here. We don't have enough information to recover
531 nicely, so just raise an assertion failure. */
532 gdb_assert_not_reached ("unexpected code path");
535 /* Same as ada_varobj_describe_child, but limited to pointer objects.
537 Note that CHILD_INDEX is unused in this situation, but still provided
538 for consistency of interface with other routines describing an object's
542 ada_varobj_describe_ptr_child (struct value *parent_value,
543 struct type *parent_type,
544 const char *parent_name,
545 const char *parent_path_expr,
548 struct value **child_value,
549 struct type **child_type,
550 char **child_path_expr)
553 *child_name = xstrprintf ("%s.all", parent_name);
555 if (child_value && parent_value)
556 ada_varobj_ind (parent_value, parent_type, child_value, NULL);
559 ada_varobj_ind (parent_value, parent_type, NULL, child_type);
562 *child_path_expr = xstrprintf ("(%s).all", parent_path_expr);
565 /* Same as ada_varobj_describe_child, limited to simple array objects
566 (TYPE_CODE_ARRAY only).
568 Assumes that the (PARENT_VALUE, PARENT_TYPE) pair is properly decoded.
569 This is done by ada_varobj_describe_child before calling us. */
572 ada_varobj_describe_simple_array_child (struct value *parent_value,
573 struct type *parent_type,
574 const char *parent_name,
575 const char *parent_path_expr,
578 struct value **child_value,
579 struct type **child_type,
580 char **child_path_expr)
582 struct type *index_desc_type;
583 struct type *index_type;
586 gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_ARRAY);
588 index_desc_type = ada_find_parallel_type (parent_type, "___XA");
589 ada_fixup_array_indexes_type (index_desc_type);
591 index_type = TYPE_FIELD_TYPE (index_desc_type, 0);
593 index_type = TYPE_INDEX_TYPE (parent_type);
594 real_index = child_index + ada_discrete_type_low_bound (index_type);
597 *child_name = ada_varobj_scalar_image (index_type, real_index);
599 if (child_value && parent_value)
600 ada_varobj_simple_array_elt (parent_value, parent_type, real_index,
604 ada_varobj_simple_array_elt (parent_value, parent_type, real_index,
609 char *index_img = ada_varobj_scalar_image (index_type, real_index);
610 struct cleanup *cleanups = make_cleanup (xfree, index_img);
612 /* Enumeration litterals by themselves are potentially ambiguous.
613 For instance, consider the following package spec:
616 type Color is (Red, Green, Blue, White);
617 type Blood_Cells is (White, Red);
620 In this case, the litteral "red" for instance, or even
621 the fully-qualified litteral "pck.red" cannot be resolved
622 by itself. Type qualification is needed to determine which
623 enumeration litterals should be used.
625 The following variable will be used to contain the name
626 of the array index type when such type qualification is
628 const char *index_type_name = NULL;
630 /* If the index type is a range type, find the base type. */
631 while (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
632 index_type = TYPE_TARGET_TYPE (index_type);
634 if (TYPE_CODE (index_type) == TYPE_CODE_ENUM
635 || TYPE_CODE (index_type) == TYPE_CODE_BOOL)
637 index_type_name = ada_type_name (index_type);
639 index_type_name = ada_decode (index_type_name);
642 if (index_type_name != NULL)
644 xstrprintf ("(%s)(%.*s'(%s))", parent_path_expr,
645 ada_name_prefix_len (index_type_name),
646 index_type_name, index_img);
649 xstrprintf ("(%s)(%s)", parent_path_expr, index_img);
650 do_cleanups (cleanups);
654 /* See description at declaration above. */
657 ada_varobj_describe_child (struct value *parent_value,
658 struct type *parent_type,
659 const char *parent_name,
660 const char *parent_path_expr,
663 struct value **child_value,
664 struct type **child_type,
665 char **child_path_expr)
667 /* We cannot compute the child's path expression without
668 the parent's path expression. This is a pre-condition
669 for calling this function. */
671 gdb_assert (parent_path_expr != NULL);
673 ada_varobj_decode_var (&parent_value, &parent_type);
674 ada_varobj_adjust_for_child_access (&parent_value, &parent_type);
683 *child_path_expr = NULL;
685 if (ada_is_array_descriptor_type (parent_type)
686 && TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF)
688 ada_varobj_describe_ptr_child (parent_value, parent_type,
689 parent_name, parent_path_expr,
690 child_index, child_name,
691 child_value, child_type,
696 if (TYPE_CODE (parent_type) == TYPE_CODE_ARRAY)
698 ada_varobj_describe_simple_array_child
699 (parent_value, parent_type, parent_name, parent_path_expr,
700 child_index, child_name, child_value, child_type,
705 if (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT)
707 ada_varobj_describe_struct_child (parent_value, parent_type,
708 parent_name, parent_path_expr,
709 child_index, child_name,
710 child_value, child_type,
715 if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
717 ada_varobj_describe_ptr_child (parent_value, parent_type,
718 parent_name, parent_path_expr,
719 child_index, child_name,
720 child_value, child_type,
725 /* It should never happen. But rather than crash, report dummy names
726 and return a NULL child_value. */
728 *child_name = xstrdup ("???");
731 /* Return the name of the child number CHILD_INDEX of the (PARENT_VALUE,
732 PARENT_TYPE) pair. PARENT_NAME is the name of the PARENT.
734 The result should be deallocated after use with xfree. */
737 ada_varobj_get_name_of_child (struct value *parent_value,
738 struct type *parent_type,
739 const char *parent_name, int child_index)
743 ada_varobj_describe_child (parent_value, parent_type, parent_name,
744 NULL, child_index, &child_name, NULL,
749 /* Return the path expression of the child number CHILD_INDEX of
750 the (PARENT_VALUE, PARENT_TYPE) pair. PARENT_NAME is the name
751 of the parent, and PARENT_PATH_EXPR is the parent's path expression.
752 Both must be non-NULL.
754 The result must be deallocated after use with xfree. */
757 ada_varobj_get_path_expr_of_child (struct value *parent_value,
758 struct type *parent_type,
759 const char *parent_name,
760 const char *parent_path_expr,
763 char *child_path_expr;
765 ada_varobj_describe_child (parent_value, parent_type, parent_name,
766 parent_path_expr, child_index, NULL,
767 NULL, NULL, &child_path_expr);
769 return child_path_expr;
772 /* Return the value of child number CHILD_INDEX of the (PARENT_VALUE,
773 PARENT_TYPE) pair. PARENT_NAME is the name of the parent. */
775 static struct value *
776 ada_varobj_get_value_of_child (struct value *parent_value,
777 struct type *parent_type,
778 const char *parent_name, int child_index)
780 struct value *child_value;
782 ada_varobj_describe_child (parent_value, parent_type, parent_name,
783 NULL, child_index, NULL, &child_value,
789 /* Return the type of child number CHILD_INDEX of the (PARENT_VALUE,
790 PARENT_TYPE) pair. */
793 ada_varobj_get_type_of_child (struct value *parent_value,
794 struct type *parent_type,
797 struct type *child_type;
799 ada_varobj_describe_child (parent_value, parent_type, NULL, NULL,
800 child_index, NULL, NULL, &child_type, NULL);
805 /* Return a string that contains the image of the given VALUE, using
806 the print options OPTS as the options for formatting the result.
808 The resulting string must be deallocated after use with xfree. */
811 ada_varobj_get_value_image (struct value *value,
812 struct value_print_options *opts)
815 struct ui_file *buffer;
816 struct cleanup *old_chain;
818 buffer = mem_fileopen ();
819 old_chain = make_cleanup_ui_file_delete (buffer);
821 common_val_print (value, buffer, 0, opts, current_language);
822 result = ui_file_xstrdup (buffer, NULL);
824 do_cleanups (old_chain);
828 /* Assuming that the (VALUE, TYPE) pair designates an array varobj,
829 return a string that is suitable for use in the "value" field of
830 the varobj output. Most of the time, this is the number of elements
831 in the array inside square brackets, but there are situations where
832 it's useful to add more info.
834 OPTS are the print options used when formatting the result.
836 The result should be deallocated after use using xfree. */
839 ada_varobj_get_value_of_array_variable (struct value *value,
841 struct value_print_options *opts)
844 const int numchild = ada_varobj_get_array_number_of_children (value, type);
846 /* If we have a string, provide its contents in the "value" field.
847 Otherwise, the only other way to inspect the contents of the string
848 is by looking at the value of each element, as in any other array,
849 which is not very convenient... */
851 && ada_is_string_type (type)
852 && (opts->format == 0 || opts->format == 's'))
855 struct cleanup *old_chain;
857 str = ada_varobj_get_value_image (value, opts);
858 old_chain = make_cleanup (xfree, str);
859 result = xstrprintf ("[%d] %s", numchild, str);
860 do_cleanups (old_chain);
863 result = xstrprintf ("[%d]", numchild);
868 /* Return a string representation of the (VALUE, TYPE) pair, using
869 the given print options OPTS as our formatting options. */
872 ada_varobj_get_value_of_variable (struct value *value,
874 struct value_print_options *opts)
878 ada_varobj_decode_var (&value, &type);
880 switch (TYPE_CODE (type))
882 case TYPE_CODE_STRUCT:
883 case TYPE_CODE_UNION:
884 result = xstrdup ("{...}");
886 case TYPE_CODE_ARRAY:
887 result = ada_varobj_get_value_of_array_variable (value, type, opts);
891 result = xstrdup ("");
893 result = ada_varobj_get_value_image (value, opts);
900 /* Ada specific callbacks for VAROBJs. */
903 ada_number_of_children (struct varobj *var)
905 return ada_varobj_get_number_of_children (var->value, var->type);
909 ada_name_of_variable (struct varobj *parent)
911 return c_varobj_ops.name_of_variable (parent);
915 ada_name_of_child (struct varobj *parent, int index)
917 return ada_varobj_get_name_of_child (parent->value, parent->type,
918 parent->name, index);
922 ada_path_expr_of_child (struct varobj *child)
924 struct varobj *parent = child->parent;
925 const char *parent_path_expr = varobj_get_path_expr (parent);
927 return ada_varobj_get_path_expr_of_child (parent->value,
934 static struct value *
935 ada_value_of_child (struct varobj *parent, int index)
937 return ada_varobj_get_value_of_child (parent->value, parent->type,
938 parent->name, index);
942 ada_type_of_child (struct varobj *parent, int index)
944 return ada_varobj_get_type_of_child (parent->value, parent->type,
949 ada_value_of_variable (struct varobj *var, enum varobj_display_formats format)
951 struct value_print_options opts;
953 varobj_formatted_print_options (&opts, format);
955 return ada_varobj_get_value_of_variable (var->value, var->type, &opts);
958 /* Implement the "value_is_changeable_p" routine for Ada. */
961 ada_value_is_changeable_p (struct varobj *var)
963 struct type *type = var->value ? value_type (var->value) : var->type;
965 if (ada_is_array_descriptor_type (type)
966 && TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
968 /* This is in reality a pointer to an unconstrained array.
969 its value is changeable. */
973 if (ada_is_string_type (type))
975 /* We display the contents of the string in the array's
976 "value" field. The contents can change, so consider
977 that the array is changeable. */
981 return varobj_default_value_is_changeable_p (var);
984 /* Implement the "value_has_mutated" routine for Ada. */
987 ada_value_has_mutated (struct varobj *var, struct value *new_val,
988 struct type *new_type)
994 /* If the number of fields have changed, then for sure the type
996 if (ada_varobj_get_number_of_children (new_val, new_type)
997 != var->num_children)
1000 /* If the number of fields have remained the same, then we need
1001 to check the name of each field. If they remain the same,
1002 then chances are the type hasn't mutated. This is technically
1003 an incomplete test, as the child's type might have changed
1004 despite the fact that the name remains the same. But we'll
1005 handle this situation by saying that the child has mutated,
1008 If only part (or none!) of the children have been fetched,
1009 then only check the ones we fetched. It does not matter
1010 to the frontend whether a child that it has not fetched yet
1011 has mutated or not. So just assume it hasn't. */
1013 varobj_restrict_range (var->children, &from, &to);
1014 for (i = from; i < to; i++)
1015 if (strcmp (ada_varobj_get_name_of_child (new_val, new_type,
1017 VEC_index (varobj_p, var->children, i)->name) != 0)
1023 /* varobj operations for ada. */
1025 const struct lang_varobj_ops ada_varobj_ops =
1027 ada_number_of_children,
1028 ada_name_of_variable,
1030 ada_path_expr_of_child,
1033 ada_value_of_variable,
1034 ada_value_is_changeable_p,
1035 ada_value_has_mutated