]> Git Repo - binutils.git/blob - gdb/varobj.c
* varobj.c (install_new_value): Always update print_value.
[binutils.git] / gdb / varobj.c
1 /* Implementation of the GDB variable objects API.
2
3    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
4    Free Software Foundation, Inc.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2 of the License, or
9    (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 51 Franklin Street, Fifth Floor,
19    Boston, MA 02110-1301, USA.  */
20
21 #include "defs.h"
22 #include "exceptions.h"
23 #include "value.h"
24 #include "expression.h"
25 #include "frame.h"
26 #include "language.h"
27 #include "wrapper.h"
28 #include "gdbcmd.h"
29 #include "block.h"
30
31 #include "gdb_assert.h"
32 #include "gdb_string.h"
33
34 #include "varobj.h"
35 #include "vec.h"
36
37 /* Non-zero if we want to see trace of varobj level stuff.  */
38
39 int varobjdebug = 0;
40 static void
41 show_varobjdebug (struct ui_file *file, int from_tty,
42                   struct cmd_list_element *c, const char *value)
43 {
44   fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
45 }
46
47 /* String representations of gdb's format codes */
48 char *varobj_format_string[] =
49   { "natural", "binary", "decimal", "hexadecimal", "octal" };
50
51 /* String representations of gdb's known languages */
52 char *varobj_language_string[] = { "unknown", "C", "C++", "Java" };
53
54 /* Data structures */
55
56 /* Every root variable has one of these structures saved in its
57    varobj. Members which must be free'd are noted. */
58 struct varobj_root
59 {
60
61   /* Alloc'd expression for this parent. */
62   struct expression *exp;
63
64   /* Block for which this expression is valid */
65   struct block *valid_block;
66
67   /* The frame for this expression */
68   struct frame_id frame;
69
70   /* If 1, "update" always recomputes the frame & valid block
71      using the currently selected frame. */
72   int use_selected_frame;
73
74   /* Language info for this variable and its children */
75   struct language_specific *lang;
76
77   /* The varobj for this root node. */
78   struct varobj *rootvar;
79
80   /* Next root variable */
81   struct varobj_root *next;
82 };
83
84 typedef struct varobj *varobj_p;
85
86 DEF_VEC_P (varobj_p);
87
88 /* Every variable in the system has a structure of this type defined
89    for it. This structure holds all information necessary to manipulate
90    a particular object variable. Members which must be freed are noted. */
91 struct varobj
92 {
93
94   /* Alloc'd name of the variable for this object.. If this variable is a
95      child, then this name will be the child's source name.
96      (bar, not foo.bar) */
97   /* NOTE: This is the "expression" */
98   char *name;
99
100   /* The alloc'd name for this variable's object. This is here for
101      convenience when constructing this object's children. */
102   char *obj_name;
103
104   /* Index of this variable in its parent or -1 */
105   int index;
106
107   /* The type of this variable. This may NEVER be NULL. */
108   struct type *type;
109
110   /* The value of this expression or subexpression.  This may be NULL. 
111      Invariant: if varobj_value_is_changeable_p (this) is non-zero, 
112      the value is either NULL, or not lazy.  */
113   struct value *value;
114
115   /* Did an error occur evaluating the expression or getting its value? */
116   int error;
117
118   /* The number of (immediate) children this variable has */
119   int num_children;
120
121   /* If this object is a child, this points to its immediate parent. */
122   struct varobj *parent;
123
124   /* Children of this object.  */
125   VEC (varobj_p) *children;
126
127   /* Description of the root variable. Points to root variable for children. */
128   struct varobj_root *root;
129
130   /* The format of the output for this object */
131   enum varobj_display_formats format;
132
133   /* Was this variable updated via a varobj_set_value operation */
134   int updated;
135
136   /* Last print value.  */
137   char *print_value;
138 };
139
140 struct cpstack
141 {
142   char *name;
143   struct cpstack *next;
144 };
145
146 /* A list of varobjs */
147
148 struct vlist
149 {
150   struct varobj *var;
151   struct vlist *next;
152 };
153
154 /* Private function prototypes */
155
156 /* Helper functions for the above subcommands. */
157
158 static int delete_variable (struct cpstack **, struct varobj *, int);
159
160 static void delete_variable_1 (struct cpstack **, int *,
161                                struct varobj *, int, int);
162
163 static int install_variable (struct varobj *);
164
165 static void uninstall_variable (struct varobj *);
166
167 static struct varobj *create_child (struct varobj *, int, char *);
168
169 /* Utility routines */
170
171 static struct varobj *new_variable (void);
172
173 static struct varobj *new_root_variable (void);
174
175 static void free_variable (struct varobj *var);
176
177 static struct cleanup *make_cleanup_free_variable (struct varobj *var);
178
179 static struct type *get_type (struct varobj *var);
180
181 static struct type *get_type_deref (struct varobj *var);
182
183 static struct type *get_target_type (struct type *);
184
185 static enum varobj_display_formats variable_default_display (struct varobj *);
186
187 static void cppush (struct cpstack **pstack, char *name);
188
189 static char *cppop (struct cpstack **pstack);
190
191 static int install_new_value (struct varobj *var, struct value *value, 
192                               int initial);
193
194 /* Language-specific routines. */
195
196 static enum varobj_languages variable_language (struct varobj *var);
197
198 static int number_of_children (struct varobj *);
199
200 static char *name_of_variable (struct varobj *);
201
202 static char *name_of_child (struct varobj *, int);
203
204 static struct value *value_of_root (struct varobj **var_handle, int *);
205
206 static struct value *value_of_child (struct varobj *parent, int index);
207
208 static int variable_editable (struct varobj *var);
209
210 static char *my_value_of_variable (struct varobj *var);
211
212 static char *value_get_print_value (struct value *value,
213                                     enum varobj_display_formats format);
214
215 static int varobj_value_is_changeable_p (struct varobj *var);
216
217 static int is_root_p (struct varobj *var);
218
219 /* C implementation */
220
221 static int c_number_of_children (struct varobj *var);
222
223 static char *c_name_of_variable (struct varobj *parent);
224
225 static char *c_name_of_child (struct varobj *parent, int index);
226
227 static struct value *c_value_of_root (struct varobj **var_handle);
228
229 static struct value *c_value_of_child (struct varobj *parent, int index);
230
231 static struct type *c_type_of_child (struct varobj *parent, int index);
232
233 static int c_variable_editable (struct varobj *var);
234
235 static char *c_value_of_variable (struct varobj *var);
236
237 /* C++ implementation */
238
239 static int cplus_number_of_children (struct varobj *var);
240
241 static void cplus_class_num_children (struct type *type, int children[3]);
242
243 static char *cplus_name_of_variable (struct varobj *parent);
244
245 static char *cplus_name_of_child (struct varobj *parent, int index);
246
247 static struct value *cplus_value_of_root (struct varobj **var_handle);
248
249 static struct value *cplus_value_of_child (struct varobj *parent, int index);
250
251 static struct type *cplus_type_of_child (struct varobj *parent, int index);
252
253 static int cplus_variable_editable (struct varobj *var);
254
255 static char *cplus_value_of_variable (struct varobj *var);
256
257 /* Java implementation */
258
259 static int java_number_of_children (struct varobj *var);
260
261 static char *java_name_of_variable (struct varobj *parent);
262
263 static char *java_name_of_child (struct varobj *parent, int index);
264
265 static struct value *java_value_of_root (struct varobj **var_handle);
266
267 static struct value *java_value_of_child (struct varobj *parent, int index);
268
269 static struct type *java_type_of_child (struct varobj *parent, int index);
270
271 static int java_variable_editable (struct varobj *var);
272
273 static char *java_value_of_variable (struct varobj *var);
274
275 /* The language specific vector */
276
277 struct language_specific
278 {
279
280   /* The language of this variable */
281   enum varobj_languages language;
282
283   /* The number of children of PARENT. */
284   int (*number_of_children) (struct varobj * parent);
285
286   /* The name (expression) of a root varobj. */
287   char *(*name_of_variable) (struct varobj * parent);
288
289   /* The name of the INDEX'th child of PARENT. */
290   char *(*name_of_child) (struct varobj * parent, int index);
291
292   /* The ``struct value *'' of the root variable ROOT. */
293   struct value *(*value_of_root) (struct varobj ** root_handle);
294
295   /* The ``struct value *'' of the INDEX'th child of PARENT. */
296   struct value *(*value_of_child) (struct varobj * parent, int index);
297
298   /* The type of the INDEX'th child of PARENT. */
299   struct type *(*type_of_child) (struct varobj * parent, int index);
300
301   /* Is VAR editable? */
302   int (*variable_editable) (struct varobj * var);
303
304   /* The current value of VAR. */
305   char *(*value_of_variable) (struct varobj * var);
306 };
307
308 /* Array of known source language routines. */
309 static struct language_specific languages[vlang_end] = {
310   /* Unknown (try treating as C */
311   {
312    vlang_unknown,
313    c_number_of_children,
314    c_name_of_variable,
315    c_name_of_child,
316    c_value_of_root,
317    c_value_of_child,
318    c_type_of_child,
319    c_variable_editable,
320    c_value_of_variable}
321   ,
322   /* C */
323   {
324    vlang_c,
325    c_number_of_children,
326    c_name_of_variable,
327    c_name_of_child,
328    c_value_of_root,
329    c_value_of_child,
330    c_type_of_child,
331    c_variable_editable,
332    c_value_of_variable}
333   ,
334   /* C++ */
335   {
336    vlang_cplus,
337    cplus_number_of_children,
338    cplus_name_of_variable,
339    cplus_name_of_child,
340    cplus_value_of_root,
341    cplus_value_of_child,
342    cplus_type_of_child,
343    cplus_variable_editable,
344    cplus_value_of_variable}
345   ,
346   /* Java */
347   {
348    vlang_java,
349    java_number_of_children,
350    java_name_of_variable,
351    java_name_of_child,
352    java_value_of_root,
353    java_value_of_child,
354    java_type_of_child,
355    java_variable_editable,
356    java_value_of_variable}
357 };
358
359 /* A little convenience enum for dealing with C++/Java */
360 enum vsections
361 {
362   v_public = 0, v_private, v_protected
363 };
364
365 /* Private data */
366
367 /* Mappings of varobj_display_formats enums to gdb's format codes */
368 static int format_code[] = { 0, 't', 'd', 'x', 'o' };
369
370 /* Header of the list of root variable objects */
371 static struct varobj_root *rootlist;
372 static int rootcount = 0;       /* number of root varobjs in the list */
373
374 /* Prime number indicating the number of buckets in the hash table */
375 /* A prime large enough to avoid too many colisions */
376 #define VAROBJ_TABLE_SIZE 227
377
378 /* Pointer to the varobj hash table (built at run time) */
379 static struct vlist **varobj_table;
380
381 /* Is the variable X one of our "fake" children? */
382 #define CPLUS_FAKE_CHILD(x) \
383 ((x) != NULL && (x)->type == NULL && (x)->value == NULL)
384 \f
385
386 /* API Implementation */
387 static int
388 is_root_p (struct varobj *var)
389 {
390   return (var->root->rootvar == var);
391 }
392
393 /* Creates a varobj (not its children) */
394
395 /* Return the full FRAME which corresponds to the given CORE_ADDR
396    or NULL if no FRAME on the chain corresponds to CORE_ADDR.  */
397
398 static struct frame_info *
399 find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
400 {
401   struct frame_info *frame = NULL;
402
403   if (frame_addr == (CORE_ADDR) 0)
404     return NULL;
405
406   while (1)
407     {
408       frame = get_prev_frame (frame);
409       if (frame == NULL)
410         return NULL;
411       if (get_frame_base_address (frame) == frame_addr)
412         return frame;
413     }
414 }
415
416 struct varobj *
417 varobj_create (char *objname,
418                char *expression, CORE_ADDR frame, enum varobj_type type)
419 {
420   struct varobj *var;
421   struct frame_info *fi;
422   struct frame_info *old_fi = NULL;
423   struct block *block;
424   struct cleanup *old_chain;
425
426   /* Fill out a varobj structure for the (root) variable being constructed. */
427   var = new_root_variable ();
428   old_chain = make_cleanup_free_variable (var);
429
430   if (expression != NULL)
431     {
432       char *p;
433       enum varobj_languages lang;
434       struct value *value;
435
436       /* Parse and evaluate the expression, filling in as much
437          of the variable's data as possible */
438
439       /* Allow creator to specify context of variable */
440       if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
441         fi = deprecated_selected_frame;
442       else
443         /* FIXME: cagney/2002-11-23: This code should be doing a
444            lookup using the frame ID and not just the frame's
445            ``address''.  This, of course, means an interface change.
446            However, with out that interface change ISAs, such as the
447            ia64 with its two stacks, won't work.  Similar goes for the
448            case where there is a frameless function.  */
449         fi = find_frame_addr_in_frame_chain (frame);
450
451       /* frame = -2 means always use selected frame */
452       if (type == USE_SELECTED_FRAME)
453         var->root->use_selected_frame = 1;
454
455       block = NULL;
456       if (fi != NULL)
457         block = get_frame_block (fi, 0);
458
459       p = expression;
460       innermost_block = NULL;
461       /* Wrap the call to parse expression, so we can 
462          return a sensible error. */
463       if (!gdb_parse_exp_1 (&p, block, 0, &var->root->exp))
464         {
465           return NULL;
466         }
467
468       /* Don't allow variables to be created for types. */
469       if (var->root->exp->elts[0].opcode == OP_TYPE)
470         {
471           do_cleanups (old_chain);
472           fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
473                               " as an expression.\n");
474           return NULL;
475         }
476
477       var->format = variable_default_display (var);
478       var->root->valid_block = innermost_block;
479       var->name = savestring (expression, strlen (expression));
480
481       /* When the frame is different from the current frame, 
482          we must select the appropriate frame before parsing
483          the expression, otherwise the value will not be current.
484          Since select_frame is so benign, just call it for all cases. */
485       if (fi != NULL)
486         {
487           var->root->frame = get_frame_id (fi);
488           old_fi = deprecated_selected_frame;
489           select_frame (fi);
490         }
491
492       /* We definitively need to catch errors here.
493          If evaluate_expression succeeds we got the value we wanted.
494          But if it fails, we still go on with a call to evaluate_type()  */
495       if (!gdb_evaluate_expression (var->root->exp, &value))
496         /* Error getting the value.  Try to at least get the
497            right type.  */
498         value = evaluate_type (var->root->exp);
499
500       var->type = value_type (value);
501       install_new_value (var, value, 1 /* Initial assignment */);
502
503       /* Set language info */
504       lang = variable_language (var);
505       var->root->lang = &languages[lang];
506
507       /* Set ourselves as our root */
508       var->root->rootvar = var;
509
510       /* Reset the selected frame */
511       if (fi != NULL)
512         select_frame (old_fi);
513     }
514
515   /* If the variable object name is null, that means this
516      is a temporary variable, so don't install it. */
517
518   if ((var != NULL) && (objname != NULL))
519     {
520       var->obj_name = savestring (objname, strlen (objname));
521
522       /* If a varobj name is duplicated, the install will fail so
523          we must clenup */
524       if (!install_variable (var))
525         {
526           do_cleanups (old_chain);
527           return NULL;
528         }
529     }
530
531   discard_cleanups (old_chain);
532   return var;
533 }
534
535 /* Generates an unique name that can be used for a varobj */
536
537 char *
538 varobj_gen_name (void)
539 {
540   static int id = 0;
541   char *obj_name;
542
543   /* generate a name for this object */
544   id++;
545   obj_name = xstrprintf ("var%d", id);
546
547   return obj_name;
548 }
549
550 /* Given an "objname", returns the pointer to the corresponding varobj
551    or NULL if not found */
552
553 struct varobj *
554 varobj_get_handle (char *objname)
555 {
556   struct vlist *cv;
557   const char *chp;
558   unsigned int index = 0;
559   unsigned int i = 1;
560
561   for (chp = objname; *chp; chp++)
562     {
563       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
564     }
565
566   cv = *(varobj_table + index);
567   while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
568     cv = cv->next;
569
570   if (cv == NULL)
571     error (_("Variable object not found"));
572
573   return cv->var;
574 }
575
576 /* Given the handle, return the name of the object */
577
578 char *
579 varobj_get_objname (struct varobj *var)
580 {
581   return var->obj_name;
582 }
583
584 /* Given the handle, return the expression represented by the object */
585
586 char *
587 varobj_get_expression (struct varobj *var)
588 {
589   return name_of_variable (var);
590 }
591
592 /* Deletes a varobj and all its children if only_children == 0,
593    otherwise deletes only the children; returns a malloc'ed list of all the 
594    (malloc'ed) names of the variables that have been deleted (NULL terminated) */
595
596 int
597 varobj_delete (struct varobj *var, char ***dellist, int only_children)
598 {
599   int delcount;
600   int mycount;
601   struct cpstack *result = NULL;
602   char **cp;
603
604   /* Initialize a stack for temporary results */
605   cppush (&result, NULL);
606
607   if (only_children)
608     /* Delete only the variable children */
609     delcount = delete_variable (&result, var, 1 /* only the children */ );
610   else
611     /* Delete the variable and all its children */
612     delcount = delete_variable (&result, var, 0 /* parent+children */ );
613
614   /* We may have been asked to return a list of what has been deleted */
615   if (dellist != NULL)
616     {
617       *dellist = xmalloc ((delcount + 1) * sizeof (char *));
618
619       cp = *dellist;
620       mycount = delcount;
621       *cp = cppop (&result);
622       while ((*cp != NULL) && (mycount > 0))
623         {
624           mycount--;
625           cp++;
626           *cp = cppop (&result);
627         }
628
629       if (mycount || (*cp != NULL))
630         warning (_("varobj_delete: assertion failed - mycount(=%d) <> 0"),
631                  mycount);
632     }
633
634   return delcount;
635 }
636
637 /* Set/Get variable object display format */
638
639 enum varobj_display_formats
640 varobj_set_display_format (struct varobj *var,
641                            enum varobj_display_formats format)
642 {
643   switch (format)
644     {
645     case FORMAT_NATURAL:
646     case FORMAT_BINARY:
647     case FORMAT_DECIMAL:
648     case FORMAT_HEXADECIMAL:
649     case FORMAT_OCTAL:
650       var->format = format;
651       break;
652
653     default:
654       var->format = variable_default_display (var);
655     }
656
657   return var->format;
658 }
659
660 enum varobj_display_formats
661 varobj_get_display_format (struct varobj *var)
662 {
663   return var->format;
664 }
665
666 int
667 varobj_get_num_children (struct varobj *var)
668 {
669   if (var->num_children == -1)
670     var->num_children = number_of_children (var);
671
672   return var->num_children;
673 }
674
675 /* Creates a list of the immediate children of a variable object;
676    the return code is the number of such children or -1 on error */
677
678 int
679 varobj_list_children (struct varobj *var, struct varobj ***childlist)
680 {
681   struct varobj *child;
682   char *name;
683   int i;
684
685   /* sanity check: have we been passed a pointer? */
686   if (childlist == NULL)
687     return -1;
688
689   *childlist = NULL;
690
691   if (var->num_children == -1)
692     var->num_children = number_of_children (var);
693
694   /* If that failed, give up.  */
695   if (var->num_children == -1)
696     return -1;
697
698   /* If we're called when the list of children is not yet initialized,
699      allocate enough elements in it.  */
700   while (VEC_length (varobj_p, var->children) < var->num_children)
701     VEC_safe_push (varobj_p, var->children, NULL);
702
703   /* List of children */
704   *childlist = xmalloc ((var->num_children + 1) * sizeof (struct varobj *));
705
706   for (i = 0; i < var->num_children; i++)
707     {
708       varobj_p existing;
709
710       /* Mark as the end in case we bail out */
711       *((*childlist) + i) = NULL;
712
713       existing = VEC_index (varobj_p, var->children, i);
714
715       if (existing == NULL)
716         {
717           /* Either it's the first call to varobj_list_children for
718              this variable object, and the child was never created,
719              or it was explicitly deleted by the client.  */
720           name = name_of_child (var, i);
721           existing = create_child (var, i, name);
722           VEC_replace (varobj_p, var->children, i, existing);
723         }
724
725       *((*childlist) + i) = existing;
726     }
727
728   /* End of list is marked by a NULL pointer */
729   *((*childlist) + i) = NULL;
730
731   return var->num_children;
732 }
733
734 /* Obtain the type of an object Variable as a string similar to the one gdb
735    prints on the console */
736
737 char *
738 varobj_get_type (struct varobj *var)
739 {
740   struct value *val;
741   struct cleanup *old_chain;
742   struct ui_file *stb;
743   char *thetype;
744   long length;
745
746   /* For the "fake" variables, do not return a type. (It's type is
747      NULL, too.) */
748   if (CPLUS_FAKE_CHILD (var))
749     return NULL;
750
751   stb = mem_fileopen ();
752   old_chain = make_cleanup_ui_file_delete (stb);
753
754   /* To print the type, we simply create a zero ``struct value *'' and
755      cast it to our type. We then typeprint this variable. */
756   val = value_zero (var->type, not_lval);
757   type_print (value_type (val), "", stb, -1);
758
759   thetype = ui_file_xstrdup (stb, &length);
760   do_cleanups (old_chain);
761   return thetype;
762 }
763
764 /* Obtain the type of an object variable.  */
765
766 struct type *
767 varobj_get_gdb_type (struct varobj *var)
768 {
769   return var->type;
770 }
771
772 enum varobj_languages
773 varobj_get_language (struct varobj *var)
774 {
775   return variable_language (var);
776 }
777
778 int
779 varobj_get_attributes (struct varobj *var)
780 {
781   int attributes = 0;
782
783   if (variable_editable (var))
784     /* FIXME: define masks for attributes */
785     attributes |= 0x00000001;   /* Editable */
786
787   return attributes;
788 }
789
790 char *
791 varobj_get_value (struct varobj *var)
792 {
793   return my_value_of_variable (var);
794 }
795
796 /* Set the value of an object variable (if it is editable) to the
797    value of the given expression */
798 /* Note: Invokes functions that can call error() */
799
800 int
801 varobj_set_value (struct varobj *var, char *expression)
802 {
803   struct value *val;
804   int offset = 0;
805   int error = 0;
806
807   /* The argument "expression" contains the variable's new value.
808      We need to first construct a legal expression for this -- ugh! */
809   /* Does this cover all the bases? */
810   struct expression *exp;
811   struct value *value;
812   int saved_input_radix = input_radix;
813
814   if (var->value != NULL && variable_editable (var) && !var->error)
815     {
816       char *s = expression;
817       int i;
818
819       input_radix = 10;         /* ALWAYS reset to decimal temporarily */
820       exp = parse_exp_1 (&s, 0, 0);
821       if (!gdb_evaluate_expression (exp, &value))
822         {
823           /* We cannot proceed without a valid expression. */
824           xfree (exp);
825           return 0;
826         }
827
828       /* All types that are editable must also be changeable.  */
829       gdb_assert (varobj_value_is_changeable_p (var));
830
831       /* The value of a changeable variable object must not be lazy.  */
832       gdb_assert (!value_lazy (var->value));
833
834       /* Need to coerce the input.  We want to check if the
835          value of the variable object will be different
836          after assignment, and the first thing value_assign
837          does is coerce the input.
838          For example, if we are assigning an array to a pointer variable we
839          should compare the pointer with the the array's address, not with the
840          array's content.  */
841       value = coerce_array (value);
842
843       /* The new value may be lazy.  gdb_value_assign, or 
844          rather value_contents, will take care of this.
845          If fetching of the new value will fail, gdb_value_assign
846          with catch the exception.  */
847       if (!gdb_value_assign (var->value, value, &val))
848         return 0;
849      
850       /* If the value has changed, record it, so that next -var-update can
851          report this change.  If a variable had a value of '1', we've set it
852          to '333' and then set again to '1', when -var-update will report this
853          variable as changed -- because the first assignment has set the
854          'updated' flag.  There's no need to optimize that, because return value
855          of -var-update should be considered an approximation.  */
856       var->updated = install_new_value (var, val, 0 /* Compare values. */);
857       input_radix = saved_input_radix;
858       return 1;
859     }
860
861   return 0;
862 }
863
864 /* Returns a malloc'ed list with all root variable objects */
865 int
866 varobj_list (struct varobj ***varlist)
867 {
868   struct varobj **cv;
869   struct varobj_root *croot;
870   int mycount = rootcount;
871
872   /* Alloc (rootcount + 1) entries for the result */
873   *varlist = xmalloc ((rootcount + 1) * sizeof (struct varobj *));
874
875   cv = *varlist;
876   croot = rootlist;
877   while ((croot != NULL) && (mycount > 0))
878     {
879       *cv = croot->rootvar;
880       mycount--;
881       cv++;
882       croot = croot->next;
883     }
884   /* Mark the end of the list */
885   *cv = NULL;
886
887   if (mycount || (croot != NULL))
888     warning
889       ("varobj_list: assertion failed - wrong tally of root vars (%d:%d)",
890        rootcount, mycount);
891
892   return rootcount;
893 }
894
895 /* Assign a new value to a variable object.  If INITIAL is non-zero,
896    this is the first assignement after the variable object was just
897    created, or changed type.  In that case, just assign the value 
898    and return 0.
899    Otherwise, assign the value and if type_changeable returns non-zero,
900    find if the new value is different from the current value.
901    Return 1 if so, and 0 if the values are equal.  
902
903    The VALUE parameter should not be released -- the function will
904    take care of releasing it when needed.  */
905 static int
906 install_new_value (struct varobj *var, struct value *value, int initial)
907
908   int changeable;
909   int need_to_fetch;
910   int changed = 0;
911
912   var->error = 0;
913   /* We need to know the varobj's type to decide if the value should
914      be fetched or not.  C++ fake children (public/protected/private) don't have
915      a type. */
916   gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
917   changeable = varobj_value_is_changeable_p (var);
918   need_to_fetch = changeable;
919
920   /* We are not interested in the address of references, and given
921      that in C++ a reference is not rebindable, it cannot
922      meaningfully change.  So, get hold of the real value.  */
923   if (value)
924     {
925       value = coerce_ref (value);
926       release_value (value);
927     }
928
929   if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
930     /* For unions, we need to fetch the value implicitly because
931        of implementation of union member fetch.  When gdb
932        creates a value for a field and the value of the enclosing
933        structure is not lazy,  it immediately copies the necessary
934        bytes from the enclosing values.  If the enclosing value is
935        lazy, the call to value_fetch_lazy on the field will read
936        the data from memory.  For unions, that means we'll read the
937        same memory more than once, which is not desirable.  So
938        fetch now.  */
939     need_to_fetch = 1;
940
941   /* The new value might be lazy.  If the type is changeable,
942      that is we'll be comparing values of this type, fetch the
943      value now.  Otherwise, on the next update the old value
944      will be lazy, which means we've lost that old value.  */
945   if (need_to_fetch && value && value_lazy (value))
946     {
947       if (!gdb_value_fetch_lazy (value))
948         {
949           var->error = 1;
950           /* Set the value to NULL, so that for the next -var-update,
951              we don't try to compare the new value with this value,
952              that we couldn't even read.  */
953           value = NULL;
954         }
955       else
956         var->error = 0;
957     }
958
959   /* If the type is changeable, compare the old and the new values.
960      If this is the initial assignment, we don't have any old value
961      to compare with.  */
962   if (initial)
963     var->print_value = value_get_print_value (value, var->format);
964   else if (changeable)
965     {
966       /* If the value of the varobj was changed by -var-set-value, then the 
967          value in the varobj and in the target is the same.  However, that value
968          is different from the value that the varobj had after the previous
969          -var-update. So need to the varobj as changed.  */
970       if (var->updated)
971         {
972           xfree (var->print_value);
973           var->print_value = value_get_print_value (value, var->format);
974           changed = 1;
975         }
976       else 
977         {
978           /* Try to compare the values.  That requires that both
979              values are non-lazy.  */
980           
981           /* Quick comparison of NULL values.  */
982           if (var->value == NULL && value == NULL)
983             /* Equal. */
984             ;
985           else if (var->value == NULL || value == NULL)
986             {
987               xfree (var->print_value);
988               var->print_value = value_get_print_value (value, var->format);
989               changed = 1;
990             }
991           else
992             {
993               char *print_value;
994               gdb_assert (!value_lazy (var->value));
995               gdb_assert (!value_lazy (value));
996               print_value = value_get_print_value (value, var->format);
997
998               gdb_assert (var->print_value != NULL && print_value != NULL);
999               if (strcmp (var->print_value, print_value) != 0)
1000                 {
1001                   xfree (var->print_value);
1002                   var->print_value = print_value;
1003                   changed = 1;
1004                 }
1005               else
1006                 xfree (print_value);
1007             }
1008         }
1009     }
1010
1011   /* We must always keep the new value, since children depend on it.  */
1012   if (var->value != NULL)
1013     value_free (var->value);
1014   var->value = value;
1015   var->updated = 0;
1016
1017   gdb_assert (!var->value || value_type (var->value));
1018
1019   return changed;
1020 }
1021
1022 /* Update the values for a variable and its children.  This is a
1023    two-pronged attack.  First, re-parse the value for the root's
1024    expression to see if it's changed.  Then go all the way
1025    through its children, reconstructing them and noting if they've
1026    changed.
1027    Return value:
1028     -1 if there was an error updating the varobj
1029     -2 if the type changed
1030     Otherwise it is the number of children + parent changed
1031
1032    Only root variables can be updated... 
1033
1034    NOTE: This function may delete the caller's varobj. If it
1035    returns -2, then it has done this and VARP will be modified
1036    to point to the new varobj. */
1037
1038 int
1039 varobj_update (struct varobj **varp, struct varobj ***changelist)
1040 {
1041   int changed = 0;
1042   int error = 0;
1043   int type_changed;
1044   int i;
1045   int vleft;
1046   struct varobj *v;
1047   struct varobj **cv;
1048   struct varobj **templist = NULL;
1049   struct value *new;
1050   VEC (varobj_p) *stack = NULL;
1051   VEC (varobj_p) *result = NULL;
1052   struct frame_id old_fid;
1053   struct frame_info *fi;
1054
1055   /* sanity check: have we been passed a pointer? */
1056   if (changelist == NULL)
1057     return -1;
1058
1059   /*  Only root variables can be updated... */
1060   if (!is_root_p (*varp))
1061     /* Not a root var */
1062     return -1;
1063
1064   /* Save the selected stack frame, since we will need to change it
1065      in order to evaluate expressions. */
1066   old_fid = get_frame_id (deprecated_selected_frame);
1067
1068   /* Update the root variable. value_of_root can return NULL
1069      if the variable is no longer around, i.e. we stepped out of
1070      the frame in which a local existed. We are letting the 
1071      value_of_root variable dispose of the varobj if the type
1072      has changed. */
1073   type_changed = 1;
1074   new = value_of_root (varp, &type_changed);
1075
1076   /* Restore selected frame */
1077   fi = frame_find_by_id (old_fid);
1078   if (fi)
1079     select_frame (fi);
1080
1081   if (new == NULL)
1082     {
1083       (*varp)->error = 1;
1084       return -1;
1085     }
1086
1087   /* If this is a "use_selected_frame" varobj, and its type has changed,
1088      them note that it's changed. */
1089   if (type_changed)
1090     VEC_safe_push (varobj_p, result, *varp);
1091
1092   if (install_new_value ((*varp), new, type_changed))
1093     {
1094       /* If type_changed is 1, install_new_value will never return
1095          non-zero, so we'll never report the same variable twice.  */
1096       gdb_assert (!type_changed);
1097       VEC_safe_push (varobj_p, result, *varp);
1098     }
1099
1100   VEC_safe_push (varobj_p, stack, *varp);
1101
1102   /* Walk through the children, reconstructing them all. */
1103   while (!VEC_empty (varobj_p, stack))
1104     {
1105       v = VEC_pop (varobj_p, stack);
1106
1107       /* Push any children.  Use reverse order so that the first
1108          child is popped from the work stack first, and so
1109          will be added to result first.  This does not
1110          affect correctness, just "nicer".  */
1111       for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
1112         {
1113           varobj_p c = VEC_index (varobj_p, v->children, i);
1114           /* Child may be NULL if explicitly deleted by -var-delete.  */
1115           if (c != NULL)
1116             VEC_safe_push (varobj_p, stack, c);
1117         }
1118
1119       /* Update this variable, unless it's a root, which is already
1120          updated.  */
1121       if (v != *varp)
1122         {         
1123           new = value_of_child (v->parent, v->index);
1124           if (install_new_value (v, new, 0 /* type not changed */))
1125             {
1126               /* Note that it's changed */
1127               VEC_safe_push (varobj_p, result, v);
1128               v->updated = 0;
1129             }
1130         }
1131     }
1132
1133   /* Alloc (changed + 1) list entries */
1134   changed = VEC_length (varobj_p, result);
1135   *changelist = xmalloc ((changed + 1) * sizeof (struct varobj *));
1136   cv = *changelist;
1137
1138   for (i = 0; i < changed; ++i)
1139     {
1140       *cv = VEC_index (varobj_p, result, i);
1141       gdb_assert (*cv != NULL);
1142       ++cv;
1143     }
1144   *cv = 0;
1145
1146   if (type_changed)
1147     return -2;
1148   else
1149     return changed;
1150 }
1151 \f
1152
1153 /* Helper functions */
1154
1155 /*
1156  * Variable object construction/destruction
1157  */
1158
1159 static int
1160 delete_variable (struct cpstack **resultp, struct varobj *var,
1161                  int only_children_p)
1162 {
1163   int delcount = 0;
1164
1165   delete_variable_1 (resultp, &delcount, var,
1166                      only_children_p, 1 /* remove_from_parent_p */ );
1167
1168   return delcount;
1169 }
1170
1171 /* Delete the variable object VAR and its children */
1172 /* IMPORTANT NOTE: If we delete a variable which is a child
1173    and the parent is not removed we dump core.  It must be always
1174    initially called with remove_from_parent_p set */
1175 static void
1176 delete_variable_1 (struct cpstack **resultp, int *delcountp,
1177                    struct varobj *var, int only_children_p,
1178                    int remove_from_parent_p)
1179 {
1180   int i;
1181
1182   /* Delete any children of this variable, too. */
1183   for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
1184     {   
1185       varobj_p child = VEC_index (varobj_p, var->children, i);
1186       if (!remove_from_parent_p)
1187         child->parent = NULL;
1188       delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
1189     }
1190   VEC_free (varobj_p, var->children);
1191
1192   /* if we were called to delete only the children we are done here */
1193   if (only_children_p)
1194     return;
1195
1196   /* Otherwise, add it to the list of deleted ones and proceed to do so */
1197   /* If the name is null, this is a temporary variable, that has not
1198      yet been installed, don't report it, it belongs to the caller... */
1199   if (var->obj_name != NULL)
1200     {
1201       cppush (resultp, xstrdup (var->obj_name));
1202       *delcountp = *delcountp + 1;
1203     }
1204
1205   /* If this variable has a parent, remove it from its parent's list */
1206   /* OPTIMIZATION: if the parent of this variable is also being deleted, 
1207      (as indicated by remove_from_parent_p) we don't bother doing an
1208      expensive list search to find the element to remove when we are
1209      discarding the list afterwards */
1210   if ((remove_from_parent_p) && (var->parent != NULL))
1211     {
1212       VEC_replace (varobj_p, var->parent->children, var->index, NULL);
1213     }
1214
1215   if (var->obj_name != NULL)
1216     uninstall_variable (var);
1217
1218   /* Free memory associated with this variable */
1219   free_variable (var);
1220 }
1221
1222 /* Install the given variable VAR with the object name VAR->OBJ_NAME. */
1223 static int
1224 install_variable (struct varobj *var)
1225 {
1226   struct vlist *cv;
1227   struct vlist *newvl;
1228   const char *chp;
1229   unsigned int index = 0;
1230   unsigned int i = 1;
1231
1232   for (chp = var->obj_name; *chp; chp++)
1233     {
1234       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1235     }
1236
1237   cv = *(varobj_table + index);
1238   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1239     cv = cv->next;
1240
1241   if (cv != NULL)
1242     error (_("Duplicate variable object name"));
1243
1244   /* Add varobj to hash table */
1245   newvl = xmalloc (sizeof (struct vlist));
1246   newvl->next = *(varobj_table + index);
1247   newvl->var = var;
1248   *(varobj_table + index) = newvl;
1249
1250   /* If root, add varobj to root list */
1251   if (is_root_p (var))
1252     {
1253       /* Add to list of root variables */
1254       if (rootlist == NULL)
1255         var->root->next = NULL;
1256       else
1257         var->root->next = rootlist;
1258       rootlist = var->root;
1259       rootcount++;
1260     }
1261
1262   return 1;                     /* OK */
1263 }
1264
1265 /* Unistall the object VAR. */
1266 static void
1267 uninstall_variable (struct varobj *var)
1268 {
1269   struct vlist *cv;
1270   struct vlist *prev;
1271   struct varobj_root *cr;
1272   struct varobj_root *prer;
1273   const char *chp;
1274   unsigned int index = 0;
1275   unsigned int i = 1;
1276
1277   /* Remove varobj from hash table */
1278   for (chp = var->obj_name; *chp; chp++)
1279     {
1280       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1281     }
1282
1283   cv = *(varobj_table + index);
1284   prev = NULL;
1285   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1286     {
1287       prev = cv;
1288       cv = cv->next;
1289     }
1290
1291   if (varobjdebug)
1292     fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
1293
1294   if (cv == NULL)
1295     {
1296       warning
1297         ("Assertion failed: Could not find variable object \"%s\" to delete",
1298          var->obj_name);
1299       return;
1300     }
1301
1302   if (prev == NULL)
1303     *(varobj_table + index) = cv->next;
1304   else
1305     prev->next = cv->next;
1306
1307   xfree (cv);
1308
1309   /* If root, remove varobj from root list */
1310   if (is_root_p (var))
1311     {
1312       /* Remove from list of root variables */
1313       if (rootlist == var->root)
1314         rootlist = var->root->next;
1315       else
1316         {
1317           prer = NULL;
1318           cr = rootlist;
1319           while ((cr != NULL) && (cr->rootvar != var))
1320             {
1321               prer = cr;
1322               cr = cr->next;
1323             }
1324           if (cr == NULL)
1325             {
1326               warning
1327                 ("Assertion failed: Could not find varobj \"%s\" in root list",
1328                  var->obj_name);
1329               return;
1330             }
1331           if (prer == NULL)
1332             rootlist = NULL;
1333           else
1334             prer->next = cr->next;
1335         }
1336       rootcount--;
1337     }
1338
1339 }
1340
1341 /* Create and install a child of the parent of the given name */
1342 static struct varobj *
1343 create_child (struct varobj *parent, int index, char *name)
1344 {
1345   struct varobj *child;
1346   char *childs_name;
1347   struct value *value;
1348
1349   child = new_variable ();
1350
1351   /* name is allocated by name_of_child */
1352   child->name = name;
1353   child->index = index;
1354   value = value_of_child (parent, index);
1355   child->parent = parent;
1356   child->root = parent->root;
1357   childs_name = xstrprintf ("%s.%s", parent->obj_name, name);
1358   child->obj_name = childs_name;
1359   install_variable (child);
1360
1361   /* Compute the type of the child.  Must do this before
1362      calling install_new_value.  */
1363   if (value != NULL)
1364     /* If the child had no evaluation errors, var->value
1365        will be non-NULL and contain a valid type. */
1366     child->type = value_type (value);
1367   else
1368     /* Otherwise, we must compute the type. */
1369     child->type = (*child->root->lang->type_of_child) (child->parent, 
1370                                                        child->index);
1371   install_new_value (child, value, 1);
1372
1373   if ((!CPLUS_FAKE_CHILD (child) && child->value == NULL) || parent->error)
1374     child->error = 1;
1375
1376   return child;
1377 }
1378 \f
1379
1380 /*
1381  * Miscellaneous utility functions.
1382  */
1383
1384 /* Allocate memory and initialize a new variable */
1385 static struct varobj *
1386 new_variable (void)
1387 {
1388   struct varobj *var;
1389
1390   var = (struct varobj *) xmalloc (sizeof (struct varobj));
1391   var->name = NULL;
1392   var->obj_name = NULL;
1393   var->index = -1;
1394   var->type = NULL;
1395   var->value = NULL;
1396   var->error = 0;
1397   var->num_children = -1;
1398   var->parent = NULL;
1399   var->children = NULL;
1400   var->format = 0;
1401   var->root = NULL;
1402   var->updated = 0;
1403   var->print_value = NULL;
1404
1405   return var;
1406 }
1407
1408 /* Allocate memory and initialize a new root variable */
1409 static struct varobj *
1410 new_root_variable (void)
1411 {
1412   struct varobj *var = new_variable ();
1413   var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));;
1414   var->root->lang = NULL;
1415   var->root->exp = NULL;
1416   var->root->valid_block = NULL;
1417   var->root->frame = null_frame_id;
1418   var->root->use_selected_frame = 0;
1419   var->root->rootvar = NULL;
1420
1421   return var;
1422 }
1423
1424 /* Free any allocated memory associated with VAR. */
1425 static void
1426 free_variable (struct varobj *var)
1427 {
1428   /* Free the expression if this is a root variable. */
1429   if (is_root_p (var))
1430     {
1431       free_current_contents (&var->root->exp);
1432       xfree (var->root);
1433     }
1434
1435   xfree (var->name);
1436   xfree (var->obj_name);
1437   xfree (var->print_value);
1438   xfree (var);
1439 }
1440
1441 static void
1442 do_free_variable_cleanup (void *var)
1443 {
1444   free_variable (var);
1445 }
1446
1447 static struct cleanup *
1448 make_cleanup_free_variable (struct varobj *var)
1449 {
1450   return make_cleanup (do_free_variable_cleanup, var);
1451 }
1452
1453 /* This returns the type of the variable. It also skips past typedefs
1454    to return the real type of the variable.
1455
1456    NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
1457    except within get_target_type and get_type. */
1458 static struct type *
1459 get_type (struct varobj *var)
1460 {
1461   struct type *type;
1462   type = var->type;
1463
1464   if (type != NULL)
1465     type = check_typedef (type);
1466
1467   return type;
1468 }
1469
1470 /* This returns the type of the variable, dereferencing references, pointers
1471    and references to pointers, too. */
1472 static struct type *
1473 get_type_deref (struct varobj *var)
1474 {
1475   struct type *type;
1476
1477   type = get_type (var);
1478
1479   if (type)
1480     {
1481       if (TYPE_CODE (type) == TYPE_CODE_REF)
1482         type = get_target_type (type);
1483       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1484         type = get_target_type (type);
1485     }
1486
1487   return type;
1488 }
1489
1490 /* This returns the target type (or NULL) of TYPE, also skipping
1491    past typedefs, just like get_type ().
1492
1493    NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
1494    except within get_target_type and get_type. */
1495 static struct type *
1496 get_target_type (struct type *type)
1497 {
1498   if (type != NULL)
1499     {
1500       type = TYPE_TARGET_TYPE (type);
1501       if (type != NULL)
1502         type = check_typedef (type);
1503     }
1504
1505   return type;
1506 }
1507
1508 /* What is the default display for this variable? We assume that
1509    everything is "natural". Any exceptions? */
1510 static enum varobj_display_formats
1511 variable_default_display (struct varobj *var)
1512 {
1513   return FORMAT_NATURAL;
1514 }
1515
1516 /* FIXME: The following should be generic for any pointer */
1517 static void
1518 cppush (struct cpstack **pstack, char *name)
1519 {
1520   struct cpstack *s;
1521
1522   s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
1523   s->name = name;
1524   s->next = *pstack;
1525   *pstack = s;
1526 }
1527
1528 /* FIXME: The following should be generic for any pointer */
1529 static char *
1530 cppop (struct cpstack **pstack)
1531 {
1532   struct cpstack *s;
1533   char *v;
1534
1535   if ((*pstack)->name == NULL && (*pstack)->next == NULL)
1536     return NULL;
1537
1538   s = *pstack;
1539   v = s->name;
1540   *pstack = (*pstack)->next;
1541   xfree (s);
1542
1543   return v;
1544 }
1545 \f
1546 /*
1547  * Language-dependencies
1548  */
1549
1550 /* Common entry points */
1551
1552 /* Get the language of variable VAR. */
1553 static enum varobj_languages
1554 variable_language (struct varobj *var)
1555 {
1556   enum varobj_languages lang;
1557
1558   switch (var->root->exp->language_defn->la_language)
1559     {
1560     default:
1561     case language_c:
1562       lang = vlang_c;
1563       break;
1564     case language_cplus:
1565       lang = vlang_cplus;
1566       break;
1567     case language_java:
1568       lang = vlang_java;
1569       break;
1570     }
1571
1572   return lang;
1573 }
1574
1575 /* Return the number of children for a given variable.
1576    The result of this function is defined by the language
1577    implementation. The number of children returned by this function
1578    is the number of children that the user will see in the variable
1579    display. */
1580 static int
1581 number_of_children (struct varobj *var)
1582 {
1583   return (*var->root->lang->number_of_children) (var);;
1584 }
1585
1586 /* What is the expression for the root varobj VAR? Returns a malloc'd string. */
1587 static char *
1588 name_of_variable (struct varobj *var)
1589 {
1590   return (*var->root->lang->name_of_variable) (var);
1591 }
1592
1593 /* What is the name of the INDEX'th child of VAR? Returns a malloc'd string. */
1594 static char *
1595 name_of_child (struct varobj *var, int index)
1596 {
1597   return (*var->root->lang->name_of_child) (var, index);
1598 }
1599
1600 /* What is the ``struct value *'' of the root variable VAR? 
1601    TYPE_CHANGED controls what to do if the type of a
1602    use_selected_frame = 1 variable changes.  On input,
1603    TYPE_CHANGED = 1 means discard the old varobj, and replace
1604    it with this one.  TYPE_CHANGED = 0 means leave it around.
1605    NB: In both cases, var_handle will point to the new varobj,
1606    so if you use TYPE_CHANGED = 0, you will have to stash the
1607    old varobj pointer away somewhere before calling this.
1608    On return, TYPE_CHANGED will be 1 if the type has changed, and 
1609    0 otherwise. */
1610 static struct value *
1611 value_of_root (struct varobj **var_handle, int *type_changed)
1612 {
1613   struct varobj *var;
1614
1615   if (var_handle == NULL)
1616     return NULL;
1617
1618   var = *var_handle;
1619
1620   /* This should really be an exception, since this should
1621      only get called with a root variable. */
1622
1623   if (!is_root_p (var))
1624     return NULL;
1625
1626   if (var->root->use_selected_frame)
1627     {
1628       struct varobj *tmp_var;
1629       char *old_type, *new_type;
1630       old_type = varobj_get_type (var);
1631       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
1632                                USE_SELECTED_FRAME);
1633       if (tmp_var == NULL)
1634         {
1635           return NULL;
1636         }
1637       new_type = varobj_get_type (tmp_var);
1638       if (strcmp (old_type, new_type) == 0)
1639         {
1640           varobj_delete (tmp_var, NULL, 0);
1641           *type_changed = 0;
1642         }
1643       else
1644         {
1645           if (*type_changed)
1646             {
1647               tmp_var->obj_name =
1648                 savestring (var->obj_name, strlen (var->obj_name));
1649               varobj_delete (var, NULL, 0);
1650             }
1651           else
1652             {
1653               tmp_var->obj_name = varobj_gen_name ();
1654             }
1655           install_variable (tmp_var);
1656           *var_handle = tmp_var;
1657           var = *var_handle;
1658           *type_changed = 1;
1659         }
1660     }
1661   else
1662     {
1663       *type_changed = 0;
1664     }
1665
1666   return (*var->root->lang->value_of_root) (var_handle);
1667 }
1668
1669 /* What is the ``struct value *'' for the INDEX'th child of PARENT? */
1670 static struct value *
1671 value_of_child (struct varobj *parent, int index)
1672 {
1673   struct value *value;
1674
1675   value = (*parent->root->lang->value_of_child) (parent, index);
1676
1677   return value;
1678 }
1679
1680 /* Is this variable editable? Use the variable's type to make
1681    this determination. */
1682 static int
1683 variable_editable (struct varobj *var)
1684 {
1685   return (*var->root->lang->variable_editable) (var);
1686 }
1687
1688 /* GDB already has a command called "value_of_variable". Sigh. */
1689 static char *
1690 my_value_of_variable (struct varobj *var)
1691 {
1692   return (*var->root->lang->value_of_variable) (var);
1693 }
1694
1695 static char *
1696 value_get_print_value (struct value *value, enum varobj_display_formats format)
1697 {
1698   long dummy;
1699   struct ui_file *stb;
1700   struct cleanup *old_chain;
1701   char *thevalue;
1702
1703   if (value == NULL)
1704     return NULL;
1705
1706   stb = mem_fileopen ();
1707   old_chain = make_cleanup_ui_file_delete (stb);
1708
1709   common_val_print (value, stb, format_code[(int) format], 1, 0, 0);
1710   thevalue = ui_file_xstrdup (stb, &dummy);
1711
1712   do_cleanups (old_chain);
1713   return thevalue;
1714 }
1715
1716 /* Return non-zero if changes in value of VAR
1717    must be detected and reported by -var-update.
1718    Return zero is -var-update should never report
1719    changes of such values.  This makes sense for structures
1720    (since the changes in children values will be reported separately),
1721    or for artifical objects (like 'public' pseudo-field in C++).
1722
1723    Return value of 0 means that gdb need not call value_fetch_lazy
1724    for the value of this variable object.  */
1725 static int
1726 varobj_value_is_changeable_p (struct varobj *var)
1727 {
1728   int r;
1729   struct type *type;
1730
1731   if (CPLUS_FAKE_CHILD (var))
1732     return 0;
1733
1734   type = get_type (var);
1735
1736   switch (TYPE_CODE (type))
1737     {
1738     case TYPE_CODE_STRUCT:
1739     case TYPE_CODE_UNION:
1740     case TYPE_CODE_ARRAY:
1741       r = 0;
1742       break;
1743
1744     default:
1745       r = 1;
1746     }
1747
1748   return r;
1749 }
1750
1751 /* C */
1752 static int
1753 c_number_of_children (struct varobj *var)
1754 {
1755   struct type *type;
1756   struct type *target;
1757   int children;
1758
1759   type = get_type (var);
1760   target = get_target_type (type);
1761   children = 0;
1762
1763   switch (TYPE_CODE (type))
1764     {
1765     case TYPE_CODE_ARRAY:
1766       if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
1767           && TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED)
1768         children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
1769       else
1770         /* If we don't know how many elements there are, don't display
1771            any.  */
1772         children = 0;
1773       break;
1774
1775     case TYPE_CODE_STRUCT:
1776     case TYPE_CODE_UNION:
1777       children = TYPE_NFIELDS (type);
1778       break;
1779
1780     case TYPE_CODE_PTR:
1781       /* This is where things get complicated. All pointers have one child.
1782          Except, of course, for struct and union ptr, which we automagically
1783          dereference for the user, and function ptrs which have no children.
1784          We also don't dereference void* as we don't know what to show.
1785          We can show char* so we allow it to be dereferenced.  If you decide
1786          to test for it, please mind that a little magic is necessary to
1787          properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and 
1788          TYPE_NAME == "char" */
1789
1790       switch (TYPE_CODE (target))
1791         {
1792         case TYPE_CODE_STRUCT:
1793         case TYPE_CODE_UNION:
1794           children = TYPE_NFIELDS (target);
1795           break;
1796
1797         case TYPE_CODE_FUNC:
1798         case TYPE_CODE_VOID:
1799           children = 0;
1800           break;
1801
1802         default:
1803           children = 1;
1804         }
1805       break;
1806
1807     default:
1808       /* Other types have no children */
1809       break;
1810     }
1811
1812   return children;
1813 }
1814
1815 static char *
1816 c_name_of_variable (struct varobj *parent)
1817 {
1818   return savestring (parent->name, strlen (parent->name));
1819 }
1820
1821 /* Return the value of element TYPE_INDEX of a structure
1822    value VALUE.  VALUE's type should be a structure,
1823    or union, or a typedef to struct/union.  
1824
1825    Returns NULL if getting the value fails.  Never throws.  */
1826 static struct value *
1827 value_struct_element_index (struct value *value, int type_index)
1828 {
1829   struct value *result = NULL;
1830   volatile struct gdb_exception e;
1831
1832   struct type *type = value_type (value);
1833   type = check_typedef (type);
1834
1835   gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1836               || TYPE_CODE (type) == TYPE_CODE_UNION);
1837
1838   TRY_CATCH (e, RETURN_MASK_ERROR)
1839     {
1840       if (TYPE_FIELD_STATIC (type, type_index))
1841         result = value_static_field (type, type_index);
1842       else
1843         result = value_primitive_field (value, 0, type_index, type);
1844     }
1845   if (e.reason < 0)
1846     {
1847       return NULL;
1848     }
1849   else
1850     {
1851       return result;
1852     }
1853 }
1854
1855 /* Obtain the information about child INDEX of the variable
1856    object PARENT.  
1857    If CNAME is not null, sets *CNAME to the name of the child relative
1858    to the parent.
1859    If CVALUE is not null, sets *CVALUE to the value of the child.
1860    If CTYPE is not null, sets *CTYPE to the type of the child.
1861
1862    If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
1863    information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
1864    to NULL.  */
1865 static void 
1866 c_describe_child (struct varobj *parent, int index,
1867                   char **cname, struct value **cvalue, struct type **ctype)
1868 {
1869   struct value *value = parent->value;
1870   struct type *type = get_type (parent);
1871
1872   if (cname)
1873     *cname = NULL;
1874   if (cvalue)
1875     *cvalue = NULL;
1876   if (ctype)
1877     *ctype = NULL;
1878
1879   /* Pointers to structures are treated just like
1880      structures when accessing children.  */
1881   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1882     {
1883       struct type *target_type = get_target_type (type);
1884       if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
1885           || TYPE_CODE (target_type) == TYPE_CODE_UNION)
1886         {
1887           if (value)
1888             gdb_value_ind (value, &value);        
1889           type = target_type;
1890         }
1891     }
1892       
1893   switch (TYPE_CODE (type))
1894     {
1895     case TYPE_CODE_ARRAY:
1896       if (cname)
1897         *cname = xstrprintf ("%d", index
1898                              + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
1899
1900       if (cvalue && value)
1901         {
1902           int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
1903           struct value *indval = 
1904             value_from_longest (builtin_type_int, (LONGEST) real_index);
1905           gdb_value_subscript (value, indval, cvalue);
1906         }
1907
1908       if (ctype)
1909         *ctype = get_target_type (type);
1910
1911       break;
1912
1913     case TYPE_CODE_STRUCT:
1914     case TYPE_CODE_UNION:
1915       if (cname)
1916         {
1917           char *string = TYPE_FIELD_NAME (type, index);
1918           *cname = savestring (string, strlen (string));
1919         }
1920
1921       if (cvalue && value)
1922         {
1923           /* For C, varobj index is the same as type index.  */
1924           *cvalue = value_struct_element_index (value, index);
1925         }
1926
1927       if (ctype)
1928         *ctype = TYPE_FIELD_TYPE (type, index);
1929
1930       break;
1931
1932     case TYPE_CODE_PTR:
1933       if (cname)
1934         *cname = xstrprintf ("*%s", parent->name);
1935
1936       if (cvalue && value)
1937         gdb_value_ind (value, cvalue);
1938
1939       if (ctype)
1940         *ctype = get_target_type (type);
1941       
1942       break;
1943
1944     default:
1945       /* This should not happen */
1946       if (cname)
1947         *cname = xstrdup ("???");
1948       /* Don't set value and type, we don't know then. */
1949     }
1950 }
1951
1952 static char *
1953 c_name_of_child (struct varobj *parent, int index)
1954 {
1955   char *name;
1956   c_describe_child (parent, index, &name, NULL, NULL);
1957   return name;
1958 }
1959
1960 static struct value *
1961 c_value_of_root (struct varobj **var_handle)
1962 {
1963   struct value *new_val = NULL;
1964   struct varobj *var = *var_handle;
1965   struct frame_info *fi;
1966   int within_scope;
1967
1968   /*  Only root variables can be updated... */
1969   if (!is_root_p (var))
1970     /* Not a root var */
1971     return NULL;
1972
1973
1974   /* Determine whether the variable is still around. */
1975   if (var->root->valid_block == NULL)
1976     within_scope = 1;
1977   else
1978     {
1979       reinit_frame_cache ();
1980       fi = frame_find_by_id (var->root->frame);
1981       within_scope = fi != NULL;
1982       /* FIXME: select_frame could fail */
1983       if (fi)
1984         {
1985           CORE_ADDR pc = get_frame_pc (fi);
1986           if (pc <  BLOCK_START (var->root->valid_block) ||
1987               pc >= BLOCK_END (var->root->valid_block))
1988             within_scope = 0;
1989           else
1990             select_frame (fi);
1991         }         
1992     }
1993
1994   if (within_scope)
1995     {
1996       /* We need to catch errors here, because if evaluate
1997          expression fails we just want to make val->error = 1 and
1998          go on */
1999       if (gdb_evaluate_expression (var->root->exp, &new_val))
2000         {
2001           var->error = 0;
2002           release_value (new_val);
2003         }
2004       else
2005         var->error = 1;
2006
2007       return new_val;
2008     }
2009
2010   return NULL;
2011 }
2012
2013 static struct value *
2014 c_value_of_child (struct varobj *parent, int index)
2015 {
2016   struct value *value = NULL;
2017   c_describe_child (parent, index, NULL, &value, NULL);
2018   if (value != NULL)
2019     release_value (value);
2020
2021   return value;
2022 }
2023
2024 static struct type *
2025 c_type_of_child (struct varobj *parent, int index)
2026 {
2027   struct type *type = NULL;
2028   c_describe_child (parent, index, NULL, NULL, &type);
2029   return type;
2030 }
2031
2032 static int
2033 c_variable_editable (struct varobj *var)
2034 {
2035   switch (TYPE_CODE (get_type (var)))
2036     {
2037     case TYPE_CODE_STRUCT:
2038     case TYPE_CODE_UNION:
2039     case TYPE_CODE_ARRAY:
2040     case TYPE_CODE_FUNC:
2041     case TYPE_CODE_METHOD:
2042       return 0;
2043       break;
2044
2045     default:
2046       return 1;
2047       break;
2048     }
2049 }
2050
2051 static char *
2052 c_value_of_variable (struct varobj *var)
2053 {
2054   /* BOGUS: if val_print sees a struct/class, or a reference to one,
2055      it will print out its children instead of "{...}".  So we need to
2056      catch that case explicitly.  */
2057   struct type *type = get_type (var);
2058
2059   /* Strip top-level references. */
2060   while (TYPE_CODE (type) == TYPE_CODE_REF)
2061     type = check_typedef (TYPE_TARGET_TYPE (type));
2062
2063   switch (TYPE_CODE (type))
2064     {
2065     case TYPE_CODE_STRUCT:
2066     case TYPE_CODE_UNION:
2067       return xstrdup ("{...}");
2068       /* break; */
2069
2070     case TYPE_CODE_ARRAY:
2071       {
2072         char *number;
2073         number = xstrprintf ("[%d]", var->num_children);
2074         return (number);
2075       }
2076       /* break; */
2077
2078     default:
2079       {
2080         if (var->value == NULL)
2081           {
2082             /* This can happen if we attempt to get the value of a struct
2083                member when the parent is an invalid pointer. This is an
2084                error condition, so we should tell the caller. */
2085             return NULL;
2086           }
2087         else
2088           {
2089             gdb_assert (varobj_value_is_changeable_p (var));
2090             gdb_assert (!value_lazy (var->value));
2091             return value_get_print_value (var->value, var->format);
2092           }
2093       }
2094     }
2095 }
2096 \f
2097
2098 /* C++ */
2099
2100 static int
2101 cplus_number_of_children (struct varobj *var)
2102 {
2103   struct type *type;
2104   int children, dont_know;
2105
2106   dont_know = 1;
2107   children = 0;
2108
2109   if (!CPLUS_FAKE_CHILD (var))
2110     {
2111       type = get_type_deref (var);
2112
2113       if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
2114           ((TYPE_CODE (type)) == TYPE_CODE_UNION))
2115         {
2116           int kids[3];
2117
2118           cplus_class_num_children (type, kids);
2119           if (kids[v_public] != 0)
2120             children++;
2121           if (kids[v_private] != 0)
2122             children++;
2123           if (kids[v_protected] != 0)
2124             children++;
2125
2126           /* Add any baseclasses */
2127           children += TYPE_N_BASECLASSES (type);
2128           dont_know = 0;
2129
2130           /* FIXME: save children in var */
2131         }
2132     }
2133   else
2134     {
2135       int kids[3];
2136
2137       type = get_type_deref (var->parent);
2138
2139       cplus_class_num_children (type, kids);
2140       if (strcmp (var->name, "public") == 0)
2141         children = kids[v_public];
2142       else if (strcmp (var->name, "private") == 0)
2143         children = kids[v_private];
2144       else
2145         children = kids[v_protected];
2146       dont_know = 0;
2147     }
2148
2149   if (dont_know)
2150     children = c_number_of_children (var);
2151
2152   return children;
2153 }
2154
2155 /* Compute # of public, private, and protected variables in this class.
2156    That means we need to descend into all baseclasses and find out
2157    how many are there, too. */
2158 static void
2159 cplus_class_num_children (struct type *type, int children[3])
2160 {
2161   int i;
2162
2163   children[v_public] = 0;
2164   children[v_private] = 0;
2165   children[v_protected] = 0;
2166
2167   for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
2168     {
2169       /* If we have a virtual table pointer, omit it. */
2170       if (TYPE_VPTR_BASETYPE (type) == type && TYPE_VPTR_FIELDNO (type) == i)
2171         continue;
2172
2173       if (TYPE_FIELD_PROTECTED (type, i))
2174         children[v_protected]++;
2175       else if (TYPE_FIELD_PRIVATE (type, i))
2176         children[v_private]++;
2177       else
2178         children[v_public]++;
2179     }
2180 }
2181
2182 static char *
2183 cplus_name_of_variable (struct varobj *parent)
2184 {
2185   return c_name_of_variable (parent);
2186 }
2187
2188 static char *
2189 cplus_name_of_child (struct varobj *parent, int index)
2190 {
2191   char *name;
2192   struct type *type;
2193
2194   if (CPLUS_FAKE_CHILD (parent))
2195     {
2196       /* Looking for children of public, private, or protected. */
2197       type = get_type_deref (parent->parent);
2198     }
2199   else
2200     type = get_type_deref (parent);
2201
2202   name = NULL;
2203   switch (TYPE_CODE (type))
2204     {
2205     case TYPE_CODE_STRUCT:
2206     case TYPE_CODE_UNION:
2207       if (CPLUS_FAKE_CHILD (parent))
2208         {
2209           /* The fields of the class type are ordered as they
2210              appear in the class.  We are given an index for a
2211              particular access control type ("public","protected",
2212              or "private").  We must skip over fields that don't
2213              have the access control we are looking for to properly
2214              find the indexed field. */
2215           int type_index = TYPE_N_BASECLASSES (type);
2216           if (strcmp (parent->name, "private") == 0)
2217             {
2218               while (index >= 0)
2219                 {
2220                   if (TYPE_VPTR_BASETYPE (type) == type
2221                       && type_index == TYPE_VPTR_FIELDNO (type))
2222                     ; /* ignore vptr */
2223                   else if (TYPE_FIELD_PRIVATE (type, type_index))
2224                     --index;
2225                   ++type_index;
2226                 }
2227               --type_index;
2228             }
2229           else if (strcmp (parent->name, "protected") == 0)
2230             {
2231               while (index >= 0)
2232                 {
2233                   if (TYPE_VPTR_BASETYPE (type) == type
2234                       && type_index == TYPE_VPTR_FIELDNO (type))
2235                     ; /* ignore vptr */
2236                   else if (TYPE_FIELD_PROTECTED (type, type_index))
2237                     --index;
2238                   ++type_index;
2239                 }
2240               --type_index;
2241             }
2242           else
2243             {
2244               while (index >= 0)
2245                 {
2246                   if (TYPE_VPTR_BASETYPE (type) == type
2247                       && type_index == TYPE_VPTR_FIELDNO (type))
2248                     ; /* ignore vptr */
2249                   else if (!TYPE_FIELD_PRIVATE (type, type_index) &&
2250                       !TYPE_FIELD_PROTECTED (type, type_index))
2251                     --index;
2252                   ++type_index;
2253                 }
2254               --type_index;
2255             }
2256
2257           name = TYPE_FIELD_NAME (type, type_index);
2258         }
2259       else if (index < TYPE_N_BASECLASSES (type))
2260         /* We are looking up the name of a base class */
2261         name = TYPE_FIELD_NAME (type, index);
2262       else
2263         {
2264           int children[3];
2265           cplus_class_num_children(type, children);
2266
2267           /* Everything beyond the baseclasses can
2268              only be "public", "private", or "protected"
2269
2270              The special "fake" children are always output by varobj in
2271              this order. So if INDEX == 2, it MUST be "protected". */
2272           index -= TYPE_N_BASECLASSES (type);
2273           switch (index)
2274             {
2275             case 0:
2276               if (children[v_public] > 0)
2277                 name = "public";
2278               else if (children[v_private] > 0)
2279                 name = "private";
2280               else 
2281                 name = "protected";
2282               break;
2283             case 1:
2284               if (children[v_public] > 0)
2285                 {
2286                   if (children[v_private] > 0)
2287                     name = "private";
2288                   else
2289                     name = "protected";
2290                 }
2291               else if (children[v_private] > 0)
2292                 name = "protected";
2293               break;
2294             case 2:
2295               /* Must be protected */
2296               name = "protected";
2297               break;
2298             default:
2299               /* error! */
2300               break;
2301             }
2302         }
2303       break;
2304
2305     default:
2306       break;
2307     }
2308
2309   if (name == NULL)
2310     return c_name_of_child (parent, index);
2311   else
2312     {
2313       if (name != NULL)
2314         name = savestring (name, strlen (name));
2315     }
2316
2317   return name;
2318 }
2319
2320 static struct value *
2321 cplus_value_of_root (struct varobj **var_handle)
2322 {
2323   return c_value_of_root (var_handle);
2324 }
2325
2326 static struct value *
2327 cplus_value_of_child (struct varobj *parent, int index)
2328 {
2329   struct type *type;
2330   struct value *value;
2331
2332   if (CPLUS_FAKE_CHILD (parent))
2333     type = get_type_deref (parent->parent);
2334   else
2335     type = get_type_deref (parent);
2336
2337   value = NULL;
2338
2339   if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
2340       ((TYPE_CODE (type)) == TYPE_CODE_UNION))
2341     {
2342       if (CPLUS_FAKE_CHILD (parent))
2343         {
2344           char *name;
2345           struct value *temp = parent->parent->value;
2346
2347           if (temp == NULL)
2348             return NULL;
2349
2350           name = name_of_child (parent, index);
2351           gdb_value_struct_elt (NULL, &value, &temp, NULL, name, NULL,
2352                                 "cplus_structure");
2353           if (value != NULL)
2354             release_value (value);
2355
2356           xfree (name);
2357         }
2358       else if (index >= TYPE_N_BASECLASSES (type))
2359         {
2360           /* public, private, or protected */
2361           return NULL;
2362         }
2363       else
2364         {
2365           /* Baseclass */
2366           if (parent->value != NULL)
2367             {
2368               struct value *temp = NULL;
2369
2370               /* No special processing for references is needed --
2371                  value_cast below handles references.  */
2372               if (TYPE_CODE (value_type (parent->value)) == TYPE_CODE_PTR)
2373                 {
2374                   if (!gdb_value_ind (parent->value, &temp))
2375                     return NULL;
2376                 }
2377               else
2378                 temp = parent->value;
2379
2380               if (temp != NULL)
2381                 {
2382                   value = value_cast (TYPE_FIELD_TYPE (type, index), temp);
2383                   release_value (value);
2384                 }
2385               else
2386                 {
2387                   /* We failed to evaluate the parent's value, so don't even
2388                      bother trying to evaluate this child. */
2389                   return NULL;
2390                 }
2391             }
2392         }
2393     }
2394
2395   if (value == NULL)
2396     return c_value_of_child (parent, index);
2397
2398   return value;
2399 }
2400
2401 static struct type *
2402 cplus_type_of_child (struct varobj *parent, int index)
2403 {
2404   struct type *type, *t;
2405
2406   if (CPLUS_FAKE_CHILD (parent))
2407     {
2408       /* Looking for the type of a child of public, private, or protected. */
2409       t = get_type_deref (parent->parent);
2410     }
2411   else
2412     t = get_type_deref (parent);
2413
2414   type = NULL;
2415   switch (TYPE_CODE (t))
2416     {
2417     case TYPE_CODE_STRUCT:
2418     case TYPE_CODE_UNION:
2419       if (CPLUS_FAKE_CHILD (parent))
2420         {
2421           char *name = cplus_name_of_child (parent, index);
2422           type = lookup_struct_elt_type (t, name, 0);
2423           xfree (name);
2424         }
2425       else if (index < TYPE_N_BASECLASSES (t))
2426         type = TYPE_FIELD_TYPE (t, index);
2427       else
2428         {
2429           /* special */
2430           return NULL;
2431         }
2432       break;
2433
2434     default:
2435       break;
2436     }
2437
2438   if (type == NULL)
2439     return c_type_of_child (parent, index);
2440
2441   return type;
2442 }
2443
2444 static int
2445 cplus_variable_editable (struct varobj *var)
2446 {
2447   if (CPLUS_FAKE_CHILD (var))
2448     return 0;
2449
2450   return c_variable_editable (var);
2451 }
2452
2453 static char *
2454 cplus_value_of_variable (struct varobj *var)
2455 {
2456
2457   /* If we have one of our special types, don't print out
2458      any value. */
2459   if (CPLUS_FAKE_CHILD (var))
2460     return xstrdup ("");
2461
2462   return c_value_of_variable (var);
2463 }
2464 \f
2465 /* Java */
2466
2467 static int
2468 java_number_of_children (struct varobj *var)
2469 {
2470   return cplus_number_of_children (var);
2471 }
2472
2473 static char *
2474 java_name_of_variable (struct varobj *parent)
2475 {
2476   char *p, *name;
2477
2478   name = cplus_name_of_variable (parent);
2479   /* If  the name has "-" in it, it is because we
2480      needed to escape periods in the name... */
2481   p = name;
2482
2483   while (*p != '\000')
2484     {
2485       if (*p == '-')
2486         *p = '.';
2487       p++;
2488     }
2489
2490   return name;
2491 }
2492
2493 static char *
2494 java_name_of_child (struct varobj *parent, int index)
2495 {
2496   char *name, *p;
2497
2498   name = cplus_name_of_child (parent, index);
2499   /* Escape any periods in the name... */
2500   p = name;
2501
2502   while (*p != '\000')
2503     {
2504       if (*p == '.')
2505         *p = '-';
2506       p++;
2507     }
2508
2509   return name;
2510 }
2511
2512 static struct value *
2513 java_value_of_root (struct varobj **var_handle)
2514 {
2515   return cplus_value_of_root (var_handle);
2516 }
2517
2518 static struct value *
2519 java_value_of_child (struct varobj *parent, int index)
2520 {
2521   return cplus_value_of_child (parent, index);
2522 }
2523
2524 static struct type *
2525 java_type_of_child (struct varobj *parent, int index)
2526 {
2527   return cplus_type_of_child (parent, index);
2528 }
2529
2530 static int
2531 java_variable_editable (struct varobj *var)
2532 {
2533   return cplus_variable_editable (var);
2534 }
2535
2536 static char *
2537 java_value_of_variable (struct varobj *var)
2538 {
2539   return cplus_value_of_variable (var);
2540 }
2541 \f
2542 extern void _initialize_varobj (void);
2543 void
2544 _initialize_varobj (void)
2545 {
2546   int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
2547
2548   varobj_table = xmalloc (sizeof_table);
2549   memset (varobj_table, 0, sizeof_table);
2550
2551   add_setshow_zinteger_cmd ("debugvarobj", class_maintenance,
2552                             &varobjdebug, _("\
2553 Set varobj debugging."), _("\
2554 Show varobj debugging."), _("\
2555 When non-zero, varobj debugging is enabled."),
2556                             NULL,
2557                             show_varobjdebug,
2558                             &setlist, &showlist);
2559 }
This page took 0.164983 seconds and 4 git commands to generate.