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