Merge branch 'vendor/NCURSES'
[dragonfly.git] / contrib / gdb-7 / gdb / varobj.c
1 /* Implementation of the GDB variable objects API.
2
3    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
4    2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
18
19 #include "defs.h"
20 #include "exceptions.h"
21 #include "value.h"
22 #include "expression.h"
23 #include "frame.h"
24 #include "language.h"
25 #include "wrapper.h"
26 #include "gdbcmd.h"
27 #include "block.h"
28 #include "valprint.h"
29
30 #include "gdb_assert.h"
31 #include "gdb_string.h"
32 #include "gdb_regex.h"
33
34 #include "varobj.h"
35 #include "vec.h"
36 #include "gdbthread.h"
37 #include "inferior.h"
38
39 #if HAVE_PYTHON
40 #include "python/python.h"
41 #include "python/python-internal.h"
42 #else
43 typedef int PyObject;
44 #endif
45
46 /* Non-zero if we want to see trace of varobj level stuff.  */
47
48 int varobjdebug = 0;
49 static void
50 show_varobjdebug (struct ui_file *file, int from_tty,
51                   struct cmd_list_element *c, const char *value)
52 {
53   fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
54 }
55
56 /* String representations of gdb's format codes */
57 char *varobj_format_string[] =
58   { "natural", "binary", "decimal", "hexadecimal", "octal" };
59
60 /* String representations of gdb's known languages */
61 char *varobj_language_string[] = { "unknown", "C", "C++", "Java" };
62
63 /* True if we want to allow Python-based pretty-printing.  */
64 static int pretty_printing = 0;
65
66 void
67 varobj_enable_pretty_printing (void)
68 {
69   pretty_printing = 1;
70 }
71
72 /* Data structures */
73
74 /* Every root variable has one of these structures saved in its
75    varobj. Members which must be free'd are noted. */
76 struct varobj_root
77 {
78
79   /* Alloc'd expression for this parent. */
80   struct expression *exp;
81
82   /* Block for which this expression is valid */
83   struct block *valid_block;
84
85   /* The frame for this expression.  This field is set iff valid_block is
86      not NULL.  */
87   struct frame_id frame;
88
89   /* The thread ID that this varobj_root belong to.  This field
90      is only valid if valid_block is not NULL.  
91      When not 0, indicates which thread 'frame' belongs to.
92      When 0, indicates that the thread list was empty when the varobj_root
93      was created.  */
94   int thread_id;
95
96   /* If 1, the -var-update always recomputes the value in the
97      current thread and frame.  Otherwise, variable object is
98      always updated in the specific scope/thread/frame  */
99   int floating;
100
101   /* Flag that indicates validity: set to 0 when this varobj_root refers 
102      to symbols that do not exist anymore.  */
103   int is_valid;
104
105   /* Language info for this variable and its children */
106   struct language_specific *lang;
107
108   /* The varobj for this root node. */
109   struct varobj *rootvar;
110
111   /* Next root variable */
112   struct varobj_root *next;
113 };
114
115 /* Every variable in the system has a structure of this type defined
116    for it. This structure holds all information necessary to manipulate
117    a particular object variable. Members which must be freed are noted. */
118 struct varobj
119 {
120
121   /* Alloc'd name of the variable for this object.. If this variable is a
122      child, then this name will be the child's source name.
123      (bar, not foo.bar) */
124   /* NOTE: This is the "expression" */
125   char *name;
126
127   /* Alloc'd expression for this child.  Can be used to create a
128      root variable corresponding to this child.  */
129   char *path_expr;
130
131   /* The alloc'd name for this variable's object. This is here for
132      convenience when constructing this object's children. */
133   char *obj_name;
134
135   /* Index of this variable in its parent or -1 */
136   int index;
137
138   /* The type of this variable.  This can be NULL
139      for artifial variable objects -- currently, the "accessibility" 
140      variable objects in C++.  */
141   struct type *type;
142
143   /* The value of this expression or subexpression.  A NULL value
144      indicates there was an error getting this value.
145      Invariant: if varobj_value_is_changeable_p (this) is non-zero, 
146      the value is either NULL, or not lazy.  */
147   struct value *value;
148
149   /* The number of (immediate) children this variable has */
150   int num_children;
151
152   /* If this object is a child, this points to its immediate parent. */
153   struct varobj *parent;
154
155   /* Children of this object.  */
156   VEC (varobj_p) *children;
157
158   /* Whether the children of this varobj were requested.  This field is
159      used to decide if dynamic varobj should recompute their children.
160      In the event that the frontend never asked for the children, we
161      can avoid that.  */
162   int children_requested;
163
164   /* Description of the root variable. Points to root variable for children. */
165   struct varobj_root *root;
166
167   /* The format of the output for this object */
168   enum varobj_display_formats format;
169
170   /* Was this variable updated via a varobj_set_value operation */
171   int updated;
172
173   /* Last print value.  */
174   char *print_value;
175
176   /* Is this variable frozen.  Frozen variables are never implicitly
177      updated by -var-update * 
178      or -var-update <direct-or-indirect-parent>.  */
179   int frozen;
180
181   /* Is the value of this variable intentionally not fetched?  It is
182      not fetched if either the variable is frozen, or any parents is
183      frozen.  */
184   int not_fetched;
185
186   /* Sub-range of children which the MI consumer has requested.  If
187      FROM < 0 or TO < 0, means that all children have been
188      requested.  */
189   int from;
190   int to;
191
192   /* The pretty-printer constructor.  If NULL, then the default
193      pretty-printer will be looked up.  If None, then no
194      pretty-printer will be installed.  */
195   PyObject *constructor;
196
197   /* The pretty-printer that has been constructed.  If NULL, then a
198      new printer object is needed, and one will be constructed.  */
199   PyObject *pretty_printer;
200
201   /* The iterator returned by the printer's 'children' method, or NULL
202      if not available.  */
203   PyObject *child_iter;
204
205   /* We request one extra item from the iterator, so that we can
206      report to the caller whether there are more items than we have
207      already reported.  However, we don't want to install this value
208      when we read it, because that will mess up future updates.  So,
209      we stash it here instead.  */
210   PyObject *saved_item;
211 };
212
213 struct cpstack
214 {
215   char *name;
216   struct cpstack *next;
217 };
218
219 /* A list of varobjs */
220
221 struct vlist
222 {
223   struct varobj *var;
224   struct vlist *next;
225 };
226
227 /* Private function prototypes */
228
229 /* Helper functions for the above subcommands. */
230
231 static int delete_variable (struct cpstack **, struct varobj *, int);
232
233 static void delete_variable_1 (struct cpstack **, int *,
234                                struct varobj *, int, int);
235
236 static int install_variable (struct varobj *);
237
238 static void uninstall_variable (struct varobj *);
239
240 static struct varobj *create_child (struct varobj *, int, char *);
241
242 static struct varobj *
243 create_child_with_value (struct varobj *parent, int index, const char *name,
244                          struct value *value);
245
246 /* Utility routines */
247
248 static struct varobj *new_variable (void);
249
250 static struct varobj *new_root_variable (void);
251
252 static void free_variable (struct varobj *var);
253
254 static struct cleanup *make_cleanup_free_variable (struct varobj *var);
255
256 static struct type *get_type (struct varobj *var);
257
258 static struct type *get_value_type (struct varobj *var);
259
260 static struct type *get_target_type (struct type *);
261
262 static enum varobj_display_formats variable_default_display (struct varobj *);
263
264 static void cppush (struct cpstack **pstack, char *name);
265
266 static char *cppop (struct cpstack **pstack);
267
268 static int install_new_value (struct varobj *var, struct value *value, 
269                               int initial);
270
271 /* Language-specific routines. */
272
273 static enum varobj_languages variable_language (struct varobj *var);
274
275 static int number_of_children (struct varobj *);
276
277 static char *name_of_variable (struct varobj *);
278
279 static char *name_of_child (struct varobj *, int);
280
281 static struct value *value_of_root (struct varobj **var_handle, int *);
282
283 static struct value *value_of_child (struct varobj *parent, int index);
284
285 static char *my_value_of_variable (struct varobj *var,
286                                    enum varobj_display_formats format);
287
288 static char *value_get_print_value (struct value *value,
289                                     enum varobj_display_formats format,
290                                     struct varobj *var);
291
292 static int varobj_value_is_changeable_p (struct varobj *var);
293
294 static int is_root_p (struct varobj *var);
295
296 static struct varobj *
297 varobj_add_child (struct varobj *var, const char *name, struct value *value);
298
299 /* C implementation */
300
301 static int c_number_of_children (struct varobj *var);
302
303 static char *c_name_of_variable (struct varobj *parent);
304
305 static char *c_name_of_child (struct varobj *parent, int index);
306
307 static char *c_path_expr_of_child (struct varobj *child);
308
309 static struct value *c_value_of_root (struct varobj **var_handle);
310
311 static struct value *c_value_of_child (struct varobj *parent, int index);
312
313 static struct type *c_type_of_child (struct varobj *parent, int index);
314
315 static char *c_value_of_variable (struct varobj *var,
316                                   enum varobj_display_formats format);
317
318 /* C++ implementation */
319
320 static int cplus_number_of_children (struct varobj *var);
321
322 static void cplus_class_num_children (struct type *type, int children[3]);
323
324 static char *cplus_name_of_variable (struct varobj *parent);
325
326 static char *cplus_name_of_child (struct varobj *parent, int index);
327
328 static char *cplus_path_expr_of_child (struct varobj *child);
329
330 static struct value *cplus_value_of_root (struct varobj **var_handle);
331
332 static struct value *cplus_value_of_child (struct varobj *parent, int index);
333
334 static struct type *cplus_type_of_child (struct varobj *parent, int index);
335
336 static char *cplus_value_of_variable (struct varobj *var,
337                                       enum varobj_display_formats format);
338
339 /* Java implementation */
340
341 static int java_number_of_children (struct varobj *var);
342
343 static char *java_name_of_variable (struct varobj *parent);
344
345 static char *java_name_of_child (struct varobj *parent, int index);
346
347 static char *java_path_expr_of_child (struct varobj *child);
348
349 static struct value *java_value_of_root (struct varobj **var_handle);
350
351 static struct value *java_value_of_child (struct varobj *parent, int index);
352
353 static struct type *java_type_of_child (struct varobj *parent, int index);
354
355 static char *java_value_of_variable (struct varobj *var,
356                                      enum varobj_display_formats format);
357
358 /* The language specific vector */
359
360 struct language_specific
361 {
362
363   /* The language of this variable */
364   enum varobj_languages language;
365
366   /* The number of children of PARENT. */
367   int (*number_of_children) (struct varobj * parent);
368
369   /* The name (expression) of a root varobj. */
370   char *(*name_of_variable) (struct varobj * parent);
371
372   /* The name of the INDEX'th child of PARENT. */
373   char *(*name_of_child) (struct varobj * parent, int index);
374
375   /* Returns the rooted expression of CHILD, which is a variable
376      obtain that has some parent.  */
377   char *(*path_expr_of_child) (struct varobj * child);
378
379   /* The ``struct value *'' of the root variable ROOT. */
380   struct value *(*value_of_root) (struct varobj ** root_handle);
381
382   /* The ``struct value *'' of the INDEX'th child of PARENT. */
383   struct value *(*value_of_child) (struct varobj * parent, int index);
384
385   /* The type of the INDEX'th child of PARENT. */
386   struct type *(*type_of_child) (struct varobj * parent, int index);
387
388   /* The current value of VAR. */
389   char *(*value_of_variable) (struct varobj * var,
390                               enum varobj_display_formats format);
391 };
392
393 /* Array of known source language routines. */
394 static struct language_specific languages[vlang_end] = {
395   /* Unknown (try treating as C */
396   {
397    vlang_unknown,
398    c_number_of_children,
399    c_name_of_variable,
400    c_name_of_child,
401    c_path_expr_of_child,
402    c_value_of_root,
403    c_value_of_child,
404    c_type_of_child,
405    c_value_of_variable}
406   ,
407   /* C */
408   {
409    vlang_c,
410    c_number_of_children,
411    c_name_of_variable,
412    c_name_of_child,
413    c_path_expr_of_child,
414    c_value_of_root,
415    c_value_of_child,
416    c_type_of_child,
417    c_value_of_variable}
418   ,
419   /* C++ */
420   {
421    vlang_cplus,
422    cplus_number_of_children,
423    cplus_name_of_variable,
424    cplus_name_of_child,
425    cplus_path_expr_of_child,
426    cplus_value_of_root,
427    cplus_value_of_child,
428    cplus_type_of_child,
429    cplus_value_of_variable}
430   ,
431   /* Java */
432   {
433    vlang_java,
434    java_number_of_children,
435    java_name_of_variable,
436    java_name_of_child,
437    java_path_expr_of_child,
438    java_value_of_root,
439    java_value_of_child,
440    java_type_of_child,
441    java_value_of_variable}
442 };
443
444 /* A little convenience enum for dealing with C++/Java */
445 enum vsections
446 {
447   v_public = 0, v_private, v_protected
448 };
449
450 /* Private data */
451
452 /* Mappings of varobj_display_formats enums to gdb's format codes */
453 static int format_code[] = { 0, 't', 'd', 'x', 'o' };
454
455 /* Header of the list of root variable objects */
456 static struct varobj_root *rootlist;
457
458 /* Prime number indicating the number of buckets in the hash table */
459 /* A prime large enough to avoid too many colisions */
460 #define VAROBJ_TABLE_SIZE 227
461
462 /* Pointer to the varobj hash table (built at run time) */
463 static struct vlist **varobj_table;
464
465 /* Is the variable X one of our "fake" children? */
466 #define CPLUS_FAKE_CHILD(x) \
467 ((x) != NULL && (x)->type == NULL && (x)->value == NULL)
468 \f
469
470 /* API Implementation */
471 static int
472 is_root_p (struct varobj *var)
473 {
474   return (var->root->rootvar == var);
475 }
476
477 #ifdef HAVE_PYTHON
478 /* Helper function to install a Python environment suitable for
479    use during operations on VAR.  */
480 struct cleanup *
481 varobj_ensure_python_env (struct varobj *var)
482 {
483   return ensure_python_env (var->root->exp->gdbarch,
484                             var->root->exp->language_defn);
485 }
486 #endif
487
488 /* Creates a varobj (not its children) */
489
490 /* Return the full FRAME which corresponds to the given CORE_ADDR
491    or NULL if no FRAME on the chain corresponds to CORE_ADDR.  */
492
493 static struct frame_info *
494 find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
495 {
496   struct frame_info *frame = NULL;
497
498   if (frame_addr == (CORE_ADDR) 0)
499     return NULL;
500
501   for (frame = get_current_frame ();
502        frame != NULL;
503        frame = get_prev_frame (frame))
504     {
505       /* The CORE_ADDR we get as argument was parsed from a string GDB
506          output as $fp.  This output got truncated to gdbarch_addr_bit.
507          Truncate the frame base address in the same manner before
508          comparing it against our argument.  */
509       CORE_ADDR frame_base = get_frame_base_address (frame);
510       int addr_bit = gdbarch_addr_bit (get_frame_arch (frame));
511       if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
512         frame_base &= ((CORE_ADDR) 1 << addr_bit) - 1;
513
514       if (frame_base == frame_addr)
515         return frame;
516     }
517
518   return NULL;
519 }
520
521 struct varobj *
522 varobj_create (char *objname,
523                char *expression, CORE_ADDR frame, enum varobj_type type)
524 {
525   struct varobj *var;
526   struct frame_info *fi;
527   struct frame_info *old_fi = NULL;
528   struct block *block;
529   struct cleanup *old_chain;
530
531   /* Fill out a varobj structure for the (root) variable being constructed. */
532   var = new_root_variable ();
533   old_chain = make_cleanup_free_variable (var);
534
535   if (expression != NULL)
536     {
537       char *p;
538       enum varobj_languages lang;
539       struct value *value = NULL;
540
541       /* Parse and evaluate the expression, filling in as much of the
542          variable's data as possible.  */
543
544       if (has_stack_frames ())
545         {
546           /* Allow creator to specify context of variable */
547           if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
548             fi = get_selected_frame (NULL);
549           else
550             /* FIXME: cagney/2002-11-23: This code should be doing a
551                lookup using the frame ID and not just the frame's
552                ``address''.  This, of course, means an interface
553                change.  However, with out that interface change ISAs,
554                such as the ia64 with its two stacks, won't work.
555                Similar goes for the case where there is a frameless
556                function.  */
557             fi = find_frame_addr_in_frame_chain (frame);
558         }
559       else
560         fi = NULL;
561
562       /* frame = -2 means always use selected frame */
563       if (type == USE_SELECTED_FRAME)
564         var->root->floating = 1;
565
566       block = NULL;
567       if (fi != NULL)
568         block = get_frame_block (fi, 0);
569
570       p = expression;
571       innermost_block = NULL;
572       /* Wrap the call to parse expression, so we can 
573          return a sensible error. */
574       if (!gdb_parse_exp_1 (&p, block, 0, &var->root->exp))
575         {
576           return NULL;
577         }
578
579       /* Don't allow variables to be created for types. */
580       if (var->root->exp->elts[0].opcode == OP_TYPE)
581         {
582           do_cleanups (old_chain);
583           fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
584                               " as an expression.\n");
585           return NULL;
586         }
587
588       var->format = variable_default_display (var);
589       var->root->valid_block = innermost_block;
590       var->name = xstrdup (expression);
591       /* For a root var, the name and the expr are the same.  */
592       var->path_expr = xstrdup (expression);
593
594       /* When the frame is different from the current frame, 
595          we must select the appropriate frame before parsing
596          the expression, otherwise the value will not be current.
597          Since select_frame is so benign, just call it for all cases. */
598       if (innermost_block)
599         {
600           /* User could specify explicit FRAME-ADDR which was not found but
601              EXPRESSION is frame specific and we would not be able to evaluate
602              it correctly next time.  With VALID_BLOCK set we must also set
603              FRAME and THREAD_ID.  */
604           if (fi == NULL)
605             error (_("Failed to find the specified frame"));
606
607           var->root->frame = get_frame_id (fi);
608           var->root->thread_id = pid_to_thread_id (inferior_ptid);
609           old_fi = get_selected_frame (NULL);
610           select_frame (fi);     
611         }
612
613       /* We definitely need to catch errors here.
614          If evaluate_expression succeeds we got the value we wanted.
615          But if it fails, we still go on with a call to evaluate_type()  */
616       if (!gdb_evaluate_expression (var->root->exp, &value))
617         {
618           /* Error getting the value.  Try to at least get the
619              right type.  */
620           struct value *type_only_value = evaluate_type (var->root->exp);
621           var->type = value_type (type_only_value);
622         }
623       else 
624         var->type = value_type (value);
625
626       install_new_value (var, value, 1 /* Initial assignment */);
627
628       /* Set language info */
629       lang = variable_language (var);
630       var->root->lang = &languages[lang];
631
632       /* Set ourselves as our root */
633       var->root->rootvar = var;
634
635       /* Reset the selected frame */
636       if (old_fi != NULL)
637         select_frame (old_fi);
638     }
639
640   /* If the variable object name is null, that means this
641      is a temporary variable, so don't install it. */
642
643   if ((var != NULL) && (objname != NULL))
644     {
645       var->obj_name = xstrdup (objname);
646
647       /* If a varobj name is duplicated, the install will fail so
648          we must clenup */
649       if (!install_variable (var))
650         {
651           do_cleanups (old_chain);
652           return NULL;
653         }
654     }
655
656   discard_cleanups (old_chain);
657   return var;
658 }
659
660 /* Generates an unique name that can be used for a varobj */
661
662 char *
663 varobj_gen_name (void)
664 {
665   static int id = 0;
666   char *obj_name;
667
668   /* generate a name for this object */
669   id++;
670   obj_name = xstrprintf ("var%d", id);
671
672   return obj_name;
673 }
674
675 /* Given an OBJNAME, returns the pointer to the corresponding varobj.  Call
676    error if OBJNAME cannot be found.  */
677
678 struct varobj *
679 varobj_get_handle (char *objname)
680 {
681   struct vlist *cv;
682   const char *chp;
683   unsigned int index = 0;
684   unsigned int i = 1;
685
686   for (chp = objname; *chp; chp++)
687     {
688       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
689     }
690
691   cv = *(varobj_table + index);
692   while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
693     cv = cv->next;
694
695   if (cv == NULL)
696     error (_("Variable object not found"));
697
698   return cv->var;
699 }
700
701 /* Given the handle, return the name of the object */
702
703 char *
704 varobj_get_objname (struct varobj *var)
705 {
706   return var->obj_name;
707 }
708
709 /* Given the handle, return the expression represented by the object */
710
711 char *
712 varobj_get_expression (struct varobj *var)
713 {
714   return name_of_variable (var);
715 }
716
717 /* Deletes a varobj and all its children if only_children == 0,
718    otherwise deletes only the children; returns a malloc'ed list of all the 
719    (malloc'ed) names of the variables that have been deleted (NULL terminated) */
720
721 int
722 varobj_delete (struct varobj *var, char ***dellist, int only_children)
723 {
724   int delcount;
725   int mycount;
726   struct cpstack *result = NULL;
727   char **cp;
728
729   /* Initialize a stack for temporary results */
730   cppush (&result, NULL);
731
732   if (only_children)
733     /* Delete only the variable children */
734     delcount = delete_variable (&result, var, 1 /* only the children */ );
735   else
736     /* Delete the variable and all its children */
737     delcount = delete_variable (&result, var, 0 /* parent+children */ );
738
739   /* We may have been asked to return a list of what has been deleted */
740   if (dellist != NULL)
741     {
742       *dellist = xmalloc ((delcount + 1) * sizeof (char *));
743
744       cp = *dellist;
745       mycount = delcount;
746       *cp = cppop (&result);
747       while ((*cp != NULL) && (mycount > 0))
748         {
749           mycount--;
750           cp++;
751           *cp = cppop (&result);
752         }
753
754       if (mycount || (*cp != NULL))
755         warning (_("varobj_delete: assertion failed - mycount(=%d) <> 0"),
756                  mycount);
757     }
758
759   return delcount;
760 }
761
762 /* Convenience function for varobj_set_visualizer.  Instantiate a
763    pretty-printer for a given value.  */
764 static PyObject *
765 instantiate_pretty_printer (PyObject *constructor, struct value *value)
766 {
767 #if HAVE_PYTHON
768   PyObject *val_obj = NULL; 
769   PyObject *printer;
770
771   val_obj = value_to_value_object (value);
772   if (! val_obj)
773     return NULL;
774
775   printer = PyObject_CallFunctionObjArgs (constructor, val_obj, NULL);
776   Py_DECREF (val_obj);
777   return printer;
778 #endif
779   return NULL;
780 }
781
782 /* Set/Get variable object display format */
783
784 enum varobj_display_formats
785 varobj_set_display_format (struct varobj *var,
786                            enum varobj_display_formats format)
787 {
788   switch (format)
789     {
790     case FORMAT_NATURAL:
791     case FORMAT_BINARY:
792     case FORMAT_DECIMAL:
793     case FORMAT_HEXADECIMAL:
794     case FORMAT_OCTAL:
795       var->format = format;
796       break;
797
798     default:
799       var->format = variable_default_display (var);
800     }
801
802   if (varobj_value_is_changeable_p (var) 
803       && var->value && !value_lazy (var->value))
804     {
805       xfree (var->print_value);
806       var->print_value = value_get_print_value (var->value, var->format, var);
807     }
808
809   return var->format;
810 }
811
812 enum varobj_display_formats
813 varobj_get_display_format (struct varobj *var)
814 {
815   return var->format;
816 }
817
818 char *
819 varobj_get_display_hint (struct varobj *var)
820 {
821   char *result = NULL;
822
823 #if HAVE_PYTHON
824   struct cleanup *back_to = varobj_ensure_python_env (var);
825
826   if (var->pretty_printer)
827     result = gdbpy_get_display_hint (var->pretty_printer);
828
829   do_cleanups (back_to);
830 #endif
831
832   return result;
833 }
834
835 /* Return true if the varobj has items after TO, false otherwise.  */
836
837 int
838 varobj_has_more (struct varobj *var, int to)
839 {
840   if (VEC_length (varobj_p, var->children) > to)
841     return 1;
842   return ((to == -1 || VEC_length (varobj_p, var->children) == to)
843           && var->saved_item != NULL);
844 }
845
846 /* If the variable object is bound to a specific thread, that
847    is its evaluation can always be done in context of a frame
848    inside that thread, returns GDB id of the thread -- which
849    is always positive.  Otherwise, returns -1. */
850 int
851 varobj_get_thread_id (struct varobj *var)
852 {
853   if (var->root->valid_block && var->root->thread_id > 0)
854     return var->root->thread_id;
855   else
856     return -1;
857 }
858
859 void
860 varobj_set_frozen (struct varobj *var, int frozen)
861 {
862   /* When a variable is unfrozen, we don't fetch its value.
863      The 'not_fetched' flag remains set, so next -var-update
864      won't complain.
865
866      We don't fetch the value, because for structures the client
867      should do -var-update anyway.  It would be bad to have different
868      client-size logic for structure and other types.  */
869   var->frozen = frozen;
870 }
871
872 int
873 varobj_get_frozen (struct varobj *var)
874 {
875   return var->frozen;
876 }
877
878 /* A helper function that restricts a range to what is actually
879    available in a VEC.  This follows the usual rules for the meaning
880    of FROM and TO -- if either is negative, the entire range is
881    used.  */
882
883 static void
884 restrict_range (VEC (varobj_p) *children, int *from, int *to)
885 {
886   if (*from < 0 || *to < 0)
887     {
888       *from = 0;
889       *to = VEC_length (varobj_p, children);
890     }
891   else
892     {
893       if (*from > VEC_length (varobj_p, children))
894         *from = VEC_length (varobj_p, children);
895       if (*to > VEC_length (varobj_p, children))
896         *to = VEC_length (varobj_p, children);
897       if (*from > *to)
898         *from = *to;
899     }
900 }
901
902 /* A helper for update_dynamic_varobj_children that installs a new
903    child when needed.  */
904
905 static void
906 install_dynamic_child (struct varobj *var,
907                        VEC (varobj_p) **changed,
908                        VEC (varobj_p) **new,
909                        VEC (varobj_p) **unchanged,
910                        int *cchanged,
911                        int index,
912                        const char *name,
913                        struct value *value)
914 {
915   if (VEC_length (varobj_p, var->children) < index + 1)
916     {
917       /* There's no child yet.  */
918       struct varobj *child = varobj_add_child (var, name, value);
919       if (new)
920         {
921           VEC_safe_push (varobj_p, *new, child);
922           *cchanged = 1;
923         }
924     }
925   else 
926     {
927       varobj_p existing = VEC_index (varobj_p, var->children, index);
928       if (install_new_value (existing, value, 0))
929         {
930           if (changed)
931             VEC_safe_push (varobj_p, *changed, existing);
932         }
933       else if (unchanged)
934         VEC_safe_push (varobj_p, *unchanged, existing);
935     }
936 }
937
938 #if HAVE_PYTHON
939
940 static int
941 dynamic_varobj_has_child_method (struct varobj *var)
942 {
943   struct cleanup *back_to;
944   PyObject *printer = var->pretty_printer;
945   int result;
946
947   back_to = varobj_ensure_python_env (var);
948   result = PyObject_HasAttr (printer, gdbpy_children_cst);
949   do_cleanups (back_to);
950   return result;
951 }
952
953 #endif
954
955 static int
956 update_dynamic_varobj_children (struct varobj *var,
957                                 VEC (varobj_p) **changed,
958                                 VEC (varobj_p) **new,
959                                 VEC (varobj_p) **unchanged,
960                                 int *cchanged,
961                                 int update_children,
962                                 int from,
963                                 int to)
964 {
965 #if HAVE_PYTHON
966   struct cleanup *back_to;
967   PyObject *children;
968   int i;
969   PyObject *printer = var->pretty_printer;
970
971   back_to = varobj_ensure_python_env (var);
972
973   *cchanged = 0;
974   if (!PyObject_HasAttr (printer, gdbpy_children_cst))
975     {
976       do_cleanups (back_to);
977       return 0;
978     }
979
980   if (update_children || !var->child_iter)
981     {
982       children = PyObject_CallMethodObjArgs (printer, gdbpy_children_cst,
983                                              NULL);
984
985       if (!children)
986         {
987           gdbpy_print_stack ();
988           error (_("Null value returned for children"));
989         }
990
991       make_cleanup_py_decref (children);
992
993       if (!PyIter_Check (children))
994         error (_("Returned value is not iterable"));
995
996       Py_XDECREF (var->child_iter);
997       var->child_iter = PyObject_GetIter (children);
998       if (!var->child_iter)
999         {
1000           gdbpy_print_stack ();
1001           error (_("Could not get children iterator"));
1002         }
1003
1004       Py_XDECREF (var->saved_item);
1005       var->saved_item = NULL;
1006
1007       i = 0;
1008     }
1009   else
1010     i = VEC_length (varobj_p, var->children);
1011
1012   /* We ask for one extra child, so that MI can report whether there
1013      are more children.  */
1014   for (; to < 0 || i < to + 1; ++i)
1015     {
1016       PyObject *item;
1017
1018       /* See if there was a leftover from last time.  */
1019       if (var->saved_item)
1020         {
1021           item = var->saved_item;
1022           var->saved_item = NULL;
1023         }
1024       else
1025         item = PyIter_Next (var->child_iter);
1026
1027       if (!item)
1028         break;
1029
1030       /* We don't want to push the extra child on any report list.  */
1031       if (to < 0 || i < to)
1032         {
1033           PyObject *py_v;
1034           char *name;
1035           struct value *v;
1036           struct cleanup *inner;
1037           int can_mention = from < 0 || i >= from;
1038
1039           inner = make_cleanup_py_decref (item);
1040
1041           if (!PyArg_ParseTuple (item, "sO", &name, &py_v))
1042             error (_("Invalid item from the child list"));
1043
1044           v = convert_value_from_python (py_v);
1045           install_dynamic_child (var, can_mention ? changed : NULL,
1046                                  can_mention ? new : NULL,
1047                                  can_mention ? unchanged : NULL,
1048                                  can_mention ? cchanged : NULL, i, name, v);
1049           do_cleanups (inner);
1050         }
1051       else
1052         {
1053           Py_XDECREF (var->saved_item);
1054           var->saved_item = item;
1055
1056           /* We want to truncate the child list just before this
1057              element.  */
1058           break;
1059         }
1060     }
1061
1062   if (i < VEC_length (varobj_p, var->children))
1063     {
1064       int j;
1065       *cchanged = 1;
1066       for (j = i; j < VEC_length (varobj_p, var->children); ++j)
1067         varobj_delete (VEC_index (varobj_p, var->children, j), NULL, 0);
1068       VEC_truncate (varobj_p, var->children, i);
1069     }
1070
1071   /* If there are fewer children than requested, note that the list of
1072      children changed.  */
1073   if (to >= 0 && VEC_length (varobj_p, var->children) < to)
1074     *cchanged = 1;
1075
1076   var->num_children = VEC_length (varobj_p, var->children);
1077  
1078   do_cleanups (back_to);
1079
1080   return 1;
1081 #else
1082   gdb_assert (0 && "should never be called if Python is not enabled");
1083 #endif
1084 }
1085
1086 int
1087 varobj_get_num_children (struct varobj *var)
1088 {
1089   if (var->num_children == -1)
1090     {
1091       if (var->pretty_printer)
1092         {
1093           int dummy;
1094
1095           /* If we have a dynamic varobj, don't report -1 children.
1096              So, try to fetch some children first.  */
1097           update_dynamic_varobj_children (var, NULL, NULL, NULL, &dummy,
1098                                           0, 0, 0);
1099         }
1100       else
1101         var->num_children = number_of_children (var);
1102     }
1103
1104   return var->num_children >= 0 ? var->num_children : 0;
1105 }
1106
1107 /* Creates a list of the immediate children of a variable object;
1108    the return code is the number of such children or -1 on error */
1109
1110 VEC (varobj_p)*
1111 varobj_list_children (struct varobj *var, int *from, int *to)
1112 {
1113   struct varobj *child;
1114   char *name;
1115   int i, children_changed;
1116
1117   var->children_requested = 1;
1118
1119   if (var->pretty_printer)
1120     {
1121       /* This, in theory, can result in the number of children changing without
1122          frontend noticing.  But well, calling -var-list-children on the same
1123          varobj twice is not something a sane frontend would do.  */
1124       update_dynamic_varobj_children (var, NULL, NULL, NULL, &children_changed,
1125                                       0, 0, *to);
1126       restrict_range (var->children, from, to);
1127       return var->children;
1128     }
1129
1130   if (var->num_children == -1)
1131     var->num_children = number_of_children (var);
1132
1133   /* If that failed, give up.  */
1134   if (var->num_children == -1)
1135     return var->children;
1136
1137   /* If we're called when the list of children is not yet initialized,
1138      allocate enough elements in it.  */
1139   while (VEC_length (varobj_p, var->children) < var->num_children)
1140     VEC_safe_push (varobj_p, var->children, NULL);
1141
1142   for (i = 0; i < var->num_children; i++)
1143     {
1144       varobj_p existing = VEC_index (varobj_p, var->children, i);
1145
1146       if (existing == NULL)
1147         {
1148           /* Either it's the first call to varobj_list_children for
1149              this variable object, and the child was never created,
1150              or it was explicitly deleted by the client.  */
1151           name = name_of_child (var, i);
1152           existing = create_child (var, i, name);
1153           VEC_replace (varobj_p, var->children, i, existing);
1154         }
1155     }
1156
1157   restrict_range (var->children, from, to);
1158   return var->children;
1159 }
1160
1161 static struct varobj *
1162 varobj_add_child (struct varobj *var, const char *name, struct value *value)
1163 {
1164   varobj_p v = create_child_with_value (var, 
1165                                         VEC_length (varobj_p, var->children), 
1166                                         name, value);
1167   VEC_safe_push (varobj_p, var->children, v);
1168   return v;
1169 }
1170
1171 /* Obtain the type of an object Variable as a string similar to the one gdb
1172    prints on the console */
1173
1174 char *
1175 varobj_get_type (struct varobj *var)
1176 {
1177   /* For the "fake" variables, do not return a type. (It's type is
1178      NULL, too.)
1179      Do not return a type for invalid variables as well.  */
1180   if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
1181     return NULL;
1182
1183   return type_to_string (var->type);
1184 }
1185
1186 /* Obtain the type of an object variable.  */
1187
1188 struct type *
1189 varobj_get_gdb_type (struct varobj *var)
1190 {
1191   return var->type;
1192 }
1193
1194 /* Return a pointer to the full rooted expression of varobj VAR.
1195    If it has not been computed yet, compute it.  */
1196 char *
1197 varobj_get_path_expr (struct varobj *var)
1198 {
1199   if (var->path_expr != NULL)
1200     return var->path_expr;
1201   else 
1202     {
1203       /* For root varobjs, we initialize path_expr
1204          when creating varobj, so here it should be
1205          child varobj.  */
1206       gdb_assert (!is_root_p (var));
1207       return (*var->root->lang->path_expr_of_child) (var);
1208     }
1209 }
1210
1211 enum varobj_languages
1212 varobj_get_language (struct varobj *var)
1213 {
1214   return variable_language (var);
1215 }
1216
1217 int
1218 varobj_get_attributes (struct varobj *var)
1219 {
1220   int attributes = 0;
1221
1222   if (varobj_editable_p (var))
1223     /* FIXME: define masks for attributes */
1224     attributes |= 0x00000001;   /* Editable */
1225
1226   return attributes;
1227 }
1228
1229 int
1230 varobj_pretty_printed_p (struct varobj *var)
1231 {
1232   return var->pretty_printer != NULL;
1233 }
1234
1235 char *
1236 varobj_get_formatted_value (struct varobj *var,
1237                             enum varobj_display_formats format)
1238 {
1239   return my_value_of_variable (var, format);
1240 }
1241
1242 char *
1243 varobj_get_value (struct varobj *var)
1244 {
1245   return my_value_of_variable (var, var->format);
1246 }
1247
1248 /* Set the value of an object variable (if it is editable) to the
1249    value of the given expression */
1250 /* Note: Invokes functions that can call error() */
1251
1252 int
1253 varobj_set_value (struct varobj *var, char *expression)
1254 {
1255   struct value *val;
1256   int offset = 0;
1257   int error = 0;
1258
1259   /* The argument "expression" contains the variable's new value.
1260      We need to first construct a legal expression for this -- ugh! */
1261   /* Does this cover all the bases? */
1262   struct expression *exp;
1263   struct value *value;
1264   int saved_input_radix = input_radix;
1265   char *s = expression;
1266   int i;
1267
1268   gdb_assert (varobj_editable_p (var));
1269
1270   input_radix = 10;             /* ALWAYS reset to decimal temporarily */
1271   exp = parse_exp_1 (&s, 0, 0);
1272   if (!gdb_evaluate_expression (exp, &value))
1273     {
1274       /* We cannot proceed without a valid expression. */
1275       xfree (exp);
1276       return 0;
1277     }
1278
1279   /* All types that are editable must also be changeable.  */
1280   gdb_assert (varobj_value_is_changeable_p (var));
1281
1282   /* The value of a changeable variable object must not be lazy.  */
1283   gdb_assert (!value_lazy (var->value));
1284
1285   /* Need to coerce the input.  We want to check if the
1286      value of the variable object will be different
1287      after assignment, and the first thing value_assign
1288      does is coerce the input.
1289      For example, if we are assigning an array to a pointer variable we
1290      should compare the pointer with the the array's address, not with the
1291      array's content.  */
1292   value = coerce_array (value);
1293
1294   /* The new value may be lazy.  gdb_value_assign, or 
1295      rather value_contents, will take care of this.
1296      If fetching of the new value will fail, gdb_value_assign
1297      with catch the exception.  */
1298   if (!gdb_value_assign (var->value, value, &val))
1299     return 0;
1300      
1301   /* If the value has changed, record it, so that next -var-update can
1302      report this change.  If a variable had a value of '1', we've set it
1303      to '333' and then set again to '1', when -var-update will report this
1304      variable as changed -- because the first assignment has set the
1305      'updated' flag.  There's no need to optimize that, because return value
1306      of -var-update should be considered an approximation.  */
1307   var->updated = install_new_value (var, val, 0 /* Compare values. */);
1308   input_radix = saved_input_radix;
1309   return 1;
1310 }
1311
1312 #if HAVE_PYTHON
1313
1314 /* A helper function to install a constructor function and visualizer
1315    in a varobj.  */
1316
1317 static void
1318 install_visualizer (struct varobj *var, PyObject *constructor,
1319                     PyObject *visualizer)
1320 {
1321   Py_XDECREF (var->constructor);
1322   var->constructor = constructor;
1323
1324   Py_XDECREF (var->pretty_printer);
1325   var->pretty_printer = visualizer;
1326
1327   Py_XDECREF (var->child_iter);
1328   var->child_iter = NULL;
1329 }
1330
1331 /* Install the default visualizer for VAR.  */
1332
1333 static void
1334 install_default_visualizer (struct varobj *var)
1335 {
1336   if (pretty_printing)
1337     {
1338       PyObject *pretty_printer = NULL;
1339
1340       if (var->value)
1341         {
1342           pretty_printer = gdbpy_get_varobj_pretty_printer (var->value);
1343           if (! pretty_printer)
1344             {
1345               gdbpy_print_stack ();
1346               error (_("Cannot instantiate printer for default visualizer"));
1347             }
1348         }
1349       
1350       if (pretty_printer == Py_None)
1351         {
1352           Py_DECREF (pretty_printer);
1353           pretty_printer = NULL;
1354         }
1355   
1356       install_visualizer (var, NULL, pretty_printer);
1357     }
1358 }
1359
1360 /* Instantiate and install a visualizer for VAR using CONSTRUCTOR to
1361    make a new object.  */
1362
1363 static void
1364 construct_visualizer (struct varobj *var, PyObject *constructor)
1365 {
1366   PyObject *pretty_printer;
1367
1368   Py_INCREF (constructor);
1369   if (constructor == Py_None)
1370     pretty_printer = NULL;
1371   else
1372     {
1373       pretty_printer = instantiate_pretty_printer (constructor, var->value);
1374       if (! pretty_printer)
1375         {
1376           gdbpy_print_stack ();
1377           Py_DECREF (constructor);
1378           constructor = Py_None;
1379           Py_INCREF (constructor);
1380         }
1381
1382       if (pretty_printer == Py_None)
1383         {
1384           Py_DECREF (pretty_printer);
1385           pretty_printer = NULL;
1386         }
1387     }
1388
1389   install_visualizer (var, constructor, pretty_printer);
1390 }
1391
1392 #endif /* HAVE_PYTHON */
1393
1394 /* A helper function for install_new_value.  This creates and installs
1395    a visualizer for VAR, if appropriate.  */
1396
1397 static void
1398 install_new_value_visualizer (struct varobj *var)
1399 {
1400 #if HAVE_PYTHON
1401   /* If the constructor is None, then we want the raw value.  If VAR
1402      does not have a value, just skip this.  */
1403   if (var->constructor != Py_None && var->value)
1404     {
1405       struct cleanup *cleanup;
1406       PyObject *pretty_printer = NULL;
1407
1408       cleanup = varobj_ensure_python_env (var);
1409
1410       if (!var->constructor)
1411         install_default_visualizer (var);
1412       else
1413         construct_visualizer (var, var->constructor);
1414
1415       do_cleanups (cleanup);
1416     }
1417 #else
1418   /* Do nothing.  */
1419 #endif
1420 }
1421
1422 /* Assign a new value to a variable object.  If INITIAL is non-zero,
1423    this is the first assignement after the variable object was just
1424    created, or changed type.  In that case, just assign the value 
1425    and return 0.
1426    Otherwise, assign the new value, and return 1 if the value is different
1427    from the current one, 0 otherwise. The comparison is done on textual
1428    representation of value. Therefore, some types need not be compared. E.g.
1429    for structures the reported value is always "{...}", so no comparison is
1430    necessary here. If the old value was NULL and new one is not, or vice versa,
1431    we always return 1.
1432
1433    The VALUE parameter should not be released -- the function will
1434    take care of releasing it when needed.  */
1435 static int
1436 install_new_value (struct varobj *var, struct value *value, int initial)
1437
1438   int changeable;
1439   int need_to_fetch;
1440   int changed = 0;
1441   int intentionally_not_fetched = 0;
1442   char *print_value = NULL;
1443
1444   /* We need to know the varobj's type to decide if the value should
1445      be fetched or not.  C++ fake children (public/protected/private) don't have
1446      a type. */
1447   gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
1448   changeable = varobj_value_is_changeable_p (var);
1449
1450   /* If the type has custom visualizer, we consider it to be always
1451      changeable. FIXME: need to make sure this behaviour will not
1452      mess up read-sensitive values.  */
1453   if (var->pretty_printer)
1454     changeable = 1;
1455
1456   need_to_fetch = changeable;
1457
1458   /* We are not interested in the address of references, and given
1459      that in C++ a reference is not rebindable, it cannot
1460      meaningfully change.  So, get hold of the real value.  */
1461   if (value)
1462     value = coerce_ref (value);
1463
1464   if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
1465     /* For unions, we need to fetch the value implicitly because
1466        of implementation of union member fetch.  When gdb
1467        creates a value for a field and the value of the enclosing
1468        structure is not lazy,  it immediately copies the necessary
1469        bytes from the enclosing values.  If the enclosing value is
1470        lazy, the call to value_fetch_lazy on the field will read
1471        the data from memory.  For unions, that means we'll read the
1472        same memory more than once, which is not desirable.  So
1473        fetch now.  */
1474     need_to_fetch = 1;
1475
1476   /* The new value might be lazy.  If the type is changeable,
1477      that is we'll be comparing values of this type, fetch the
1478      value now.  Otherwise, on the next update the old value
1479      will be lazy, which means we've lost that old value.  */
1480   if (need_to_fetch && value && value_lazy (value))
1481     {
1482       struct varobj *parent = var->parent;
1483       int frozen = var->frozen;
1484       for (; !frozen && parent; parent = parent->parent)
1485         frozen |= parent->frozen;
1486
1487       if (frozen && initial)
1488         {
1489           /* For variables that are frozen, or are children of frozen
1490              variables, we don't do fetch on initial assignment.
1491              For non-initial assignemnt we do the fetch, since it means we're
1492              explicitly asked to compare the new value with the old one.  */
1493           intentionally_not_fetched = 1;
1494         }
1495       else if (!gdb_value_fetch_lazy (value))
1496         {
1497           /* Set the value to NULL, so that for the next -var-update,
1498              we don't try to compare the new value with this value,
1499              that we couldn't even read.  */
1500           value = NULL;
1501         }
1502     }
1503
1504
1505   /* Below, we'll be comparing string rendering of old and new
1506      values.  Don't get string rendering if the value is
1507      lazy -- if it is, the code above has decided that the value
1508      should not be fetched.  */
1509   if (value && !value_lazy (value) && !var->pretty_printer)
1510     print_value = value_get_print_value (value, var->format, var);
1511
1512   /* If the type is changeable, compare the old and the new values.
1513      If this is the initial assignment, we don't have any old value
1514      to compare with.  */
1515   if (!initial && changeable)
1516     {
1517       /* If the value of the varobj was changed by -var-set-value, then the 
1518          value in the varobj and in the target is the same.  However, that value
1519          is different from the value that the varobj had after the previous
1520          -var-update. So need to the varobj as changed.  */
1521       if (var->updated)
1522         {
1523           changed = 1;
1524         }
1525       else if (! var->pretty_printer)
1526         {
1527           /* Try to compare the values.  That requires that both
1528              values are non-lazy.  */
1529           if (var->not_fetched && value_lazy (var->value))
1530             {
1531               /* This is a frozen varobj and the value was never read.
1532                  Presumably, UI shows some "never read" indicator.
1533                  Now that we've fetched the real value, we need to report
1534                  this varobj as changed so that UI can show the real
1535                  value.  */
1536               changed = 1;
1537             }
1538           else  if (var->value == NULL && value == NULL)
1539             /* Equal. */
1540             ;
1541           else if (var->value == NULL || value == NULL)
1542             {
1543               changed = 1;
1544             }
1545           else
1546             {
1547               gdb_assert (!value_lazy (var->value));
1548               gdb_assert (!value_lazy (value));
1549
1550               gdb_assert (var->print_value != NULL && print_value != NULL);
1551               if (strcmp (var->print_value, print_value) != 0)
1552                 changed = 1;
1553             }
1554         }
1555     }
1556
1557   if (!initial && !changeable)
1558     {
1559       /* For values that are not changeable, we don't compare the values.
1560          However, we want to notice if a value was not NULL and now is NULL,
1561          or vise versa, so that we report when top-level varobjs come in scope
1562          and leave the scope.  */
1563       changed = (var->value != NULL) != (value != NULL);
1564     }
1565
1566   /* We must always keep the new value, since children depend on it.  */
1567   if (var->value != NULL && var->value != value)
1568     value_free (var->value);
1569   var->value = value;
1570   if (value != NULL)
1571     value_incref (value);
1572   if (value && value_lazy (value) && intentionally_not_fetched)
1573     var->not_fetched = 1;
1574   else
1575     var->not_fetched = 0;
1576   var->updated = 0;
1577
1578   install_new_value_visualizer (var);
1579
1580   /* If we installed a pretty-printer, re-compare the printed version
1581      to see if the variable changed.  */
1582   if (var->pretty_printer)
1583     {
1584       xfree (print_value);
1585       print_value = value_get_print_value (var->value, var->format, var);
1586       if (!var->print_value || strcmp (var->print_value, print_value) != 0)
1587         changed = 1;
1588     }
1589   if (var->print_value)
1590     xfree (var->print_value);
1591   var->print_value = print_value;
1592
1593   gdb_assert (!var->value || value_type (var->value));
1594
1595   return changed;
1596 }
1597
1598 /* Return the requested range for a varobj.  VAR is the varobj.  FROM
1599    and TO are out parameters; *FROM and *TO will be set to the
1600    selected sub-range of VAR.  If no range was selected using
1601    -var-set-update-range, then both will be -1.  */
1602 void
1603 varobj_get_child_range (struct varobj *var, int *from, int *to)
1604 {
1605   *from = var->from;
1606   *to = var->to;
1607 }
1608
1609 /* Set the selected sub-range of children of VAR to start at index
1610    FROM and end at index TO.  If either FROM or TO is less than zero,
1611    this is interpreted as a request for all children.  */
1612 void
1613 varobj_set_child_range (struct varobj *var, int from, int to)
1614 {
1615   var->from = from;
1616   var->to = to;
1617 }
1618
1619 void 
1620 varobj_set_visualizer (struct varobj *var, const char *visualizer)
1621 {
1622 #if HAVE_PYTHON
1623   PyObject *mainmod, *globals, *pretty_printer, *constructor;
1624   struct cleanup *back_to, *value;
1625
1626   back_to = varobj_ensure_python_env (var);
1627
1628   mainmod = PyImport_AddModule ("__main__");
1629   globals = PyModule_GetDict (mainmod);
1630   Py_INCREF (globals);
1631   make_cleanup_py_decref (globals);
1632
1633   constructor = PyRun_String (visualizer, Py_eval_input, globals, globals);
1634
1635   if (! constructor)
1636     {
1637       gdbpy_print_stack ();
1638       error (_("Could not evaluate visualizer expression: %s"), visualizer);
1639     }
1640
1641   construct_visualizer (var, constructor);
1642   Py_XDECREF (constructor);
1643
1644   /* If there are any children now, wipe them.  */
1645   varobj_delete (var, NULL, 1 /* children only */);
1646   var->num_children = -1;
1647
1648   do_cleanups (back_to);
1649 #else
1650   error (_("Python support required"));
1651 #endif
1652 }
1653
1654 /* Update the values for a variable and its children.  This is a
1655    two-pronged attack.  First, re-parse the value for the root's
1656    expression to see if it's changed.  Then go all the way
1657    through its children, reconstructing them and noting if they've
1658    changed.
1659
1660    The EXPLICIT parameter specifies if this call is result
1661    of MI request to update this specific variable, or 
1662    result of implicit -var-update *. For implicit request, we don't
1663    update frozen variables.
1664
1665    NOTE: This function may delete the caller's varobj. If it
1666    returns TYPE_CHANGED, then it has done this and VARP will be modified
1667    to point to the new varobj.  */
1668
1669 VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit)
1670 {
1671   int changed = 0;
1672   int type_changed = 0;
1673   int i;
1674   int vleft;
1675   struct varobj *v;
1676   struct varobj **cv;
1677   struct varobj **templist = NULL;
1678   struct value *new;
1679   VEC (varobj_update_result) *stack = NULL;
1680   VEC (varobj_update_result) *result = NULL;
1681   struct frame_info *fi;
1682
1683   /* Frozen means frozen -- we don't check for any change in
1684      this varobj, including its going out of scope, or
1685      changing type.  One use case for frozen varobjs is
1686      retaining previously evaluated expressions, and we don't
1687      want them to be reevaluated at all.  */
1688   if (!explicit && (*varp)->frozen)
1689     return result;
1690
1691   if (!(*varp)->root->is_valid)
1692     {
1693       varobj_update_result r = {*varp};
1694       r.status = VAROBJ_INVALID;
1695       VEC_safe_push (varobj_update_result, result, &r);
1696       return result;
1697     }
1698
1699   if ((*varp)->root->rootvar == *varp)
1700     {
1701       varobj_update_result r = {*varp};
1702       r.status = VAROBJ_IN_SCOPE;
1703
1704       /* Update the root variable. value_of_root can return NULL
1705          if the variable is no longer around, i.e. we stepped out of
1706          the frame in which a local existed. We are letting the 
1707          value_of_root variable dispose of the varobj if the type
1708          has changed.  */
1709       new = value_of_root (varp, &type_changed);
1710       r.varobj = *varp;
1711
1712       r.type_changed = type_changed;
1713       if (install_new_value ((*varp), new, type_changed))
1714         r.changed = 1;
1715       
1716       if (new == NULL)
1717         r.status = VAROBJ_NOT_IN_SCOPE;
1718       r.value_installed = 1;
1719
1720       if (r.status == VAROBJ_NOT_IN_SCOPE)
1721         {
1722           if (r.type_changed || r.changed)
1723             VEC_safe_push (varobj_update_result, result, &r);
1724           return result;
1725         }
1726             
1727       VEC_safe_push (varobj_update_result, stack, &r);
1728     }
1729   else
1730     {
1731       varobj_update_result r = {*varp};
1732       VEC_safe_push (varobj_update_result, stack, &r);
1733     }
1734
1735   /* Walk through the children, reconstructing them all.  */
1736   while (!VEC_empty (varobj_update_result, stack))
1737     {
1738       varobj_update_result r = *(VEC_last (varobj_update_result, stack));
1739       struct varobj *v = r.varobj;
1740
1741       VEC_pop (varobj_update_result, stack);
1742
1743       /* Update this variable, unless it's a root, which is already
1744          updated.  */
1745       if (!r.value_installed)
1746         {         
1747           new = value_of_child (v->parent, v->index);
1748           if (install_new_value (v, new, 0 /* type not changed */))
1749             {
1750               r.changed = 1;
1751               v->updated = 0;
1752             }
1753         }
1754
1755       /* We probably should not get children of a varobj that has a
1756          pretty-printer, but for which -var-list-children was never
1757          invoked.    */
1758       if (v->pretty_printer)
1759         {
1760           VEC (varobj_p) *changed = 0, *new = 0, *unchanged = 0;
1761           int i, children_changed = 0;
1762
1763           if (v->frozen)
1764             continue;
1765
1766           if (!v->children_requested)
1767             {
1768               int dummy;
1769
1770               /* If we initially did not have potential children, but
1771                  now we do, consider the varobj as changed.
1772                  Otherwise, if children were never requested, consider
1773                  it as unchanged -- presumably, such varobj is not yet
1774                  expanded in the UI, so we need not bother getting
1775                  it.  */
1776               if (!varobj_has_more (v, 0))
1777                 {
1778                   update_dynamic_varobj_children (v, NULL, NULL, NULL,
1779                                                   &dummy, 0, 0, 0);
1780                   if (varobj_has_more (v, 0))
1781                     r.changed = 1;
1782                 }
1783
1784               if (r.changed)
1785                 VEC_safe_push (varobj_update_result, result, &r);
1786
1787               continue;
1788             }
1789
1790           /* If update_dynamic_varobj_children returns 0, then we have
1791              a non-conforming pretty-printer, so we skip it.  */
1792           if (update_dynamic_varobj_children (v, &changed, &new, &unchanged,
1793                                               &children_changed, 1,
1794                                               v->from, v->to))
1795             {
1796               if (children_changed || new)
1797                 {
1798                   r.children_changed = 1;
1799                   r.new = new;
1800                 }
1801               /* Push in reverse order so that the first child is
1802                  popped from the work stack first, and so will be
1803                  added to result first.  This does not affect
1804                  correctness, just "nicer".  */
1805               for (i = VEC_length (varobj_p, changed) - 1; i >= 0; --i)
1806                 {
1807                   varobj_p tmp = VEC_index (varobj_p, changed, i);
1808                   varobj_update_result r = {tmp};
1809                   r.changed = 1;
1810                   r.value_installed = 1;
1811                   VEC_safe_push (varobj_update_result, stack, &r);
1812                 }
1813               for (i = VEC_length (varobj_p, unchanged) - 1; i >= 0; --i)
1814                 {
1815                   varobj_p tmp = VEC_index (varobj_p, unchanged, i);
1816                   if (!tmp->frozen)
1817                     {
1818                       varobj_update_result r = {tmp};
1819                       r.value_installed = 1;
1820                       VEC_safe_push (varobj_update_result, stack, &r);
1821                     }
1822                 }
1823               if (r.changed || r.children_changed)
1824                 VEC_safe_push (varobj_update_result, result, &r);
1825
1826               /* Free CHANGED and UNCHANGED, but not NEW, because NEW
1827                  has been put into the result vector.  */
1828               VEC_free (varobj_p, changed);
1829               VEC_free (varobj_p, unchanged);
1830
1831               continue;
1832             }
1833         }
1834
1835       /* Push any children.  Use reverse order so that the first
1836          child is popped from the work stack first, and so
1837          will be added to result first.  This does not
1838          affect correctness, just "nicer".  */
1839       for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
1840         {
1841           varobj_p c = VEC_index (varobj_p, v->children, i);
1842           /* Child may be NULL if explicitly deleted by -var-delete.  */
1843           if (c != NULL && !c->frozen)
1844             {
1845               varobj_update_result r = {c};
1846               VEC_safe_push (varobj_update_result, stack, &r);
1847             }
1848         }
1849
1850       if (r.changed || r.type_changed)
1851         VEC_safe_push (varobj_update_result, result, &r);
1852     }
1853
1854   VEC_free (varobj_update_result, stack);
1855
1856   return result;
1857 }
1858 \f
1859
1860 /* Helper functions */
1861
1862 /*
1863  * Variable object construction/destruction
1864  */
1865
1866 static int
1867 delete_variable (struct cpstack **resultp, struct varobj *var,
1868                  int only_children_p)
1869 {
1870   int delcount = 0;
1871
1872   delete_variable_1 (resultp, &delcount, var,
1873                      only_children_p, 1 /* remove_from_parent_p */ );
1874
1875   return delcount;
1876 }
1877
1878 /* Delete the variable object VAR and its children */
1879 /* IMPORTANT NOTE: If we delete a variable which is a child
1880    and the parent is not removed we dump core.  It must be always
1881    initially called with remove_from_parent_p set */
1882 static void
1883 delete_variable_1 (struct cpstack **resultp, int *delcountp,
1884                    struct varobj *var, int only_children_p,
1885                    int remove_from_parent_p)
1886 {
1887   int i;
1888
1889   /* Delete any children of this variable, too. */
1890   for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
1891     {   
1892       varobj_p child = VEC_index (varobj_p, var->children, i);
1893       if (!child)
1894         continue;
1895       if (!remove_from_parent_p)
1896         child->parent = NULL;
1897       delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
1898     }
1899   VEC_free (varobj_p, var->children);
1900
1901   /* if we were called to delete only the children we are done here */
1902   if (only_children_p)
1903     return;
1904
1905   /* Otherwise, add it to the list of deleted ones and proceed to do so */
1906   /* If the name is null, this is a temporary variable, that has not
1907      yet been installed, don't report it, it belongs to the caller... */
1908   if (var->obj_name != NULL)
1909     {
1910       cppush (resultp, xstrdup (var->obj_name));
1911       *delcountp = *delcountp + 1;
1912     }
1913
1914   /* If this variable has a parent, remove it from its parent's list */
1915   /* OPTIMIZATION: if the parent of this variable is also being deleted, 
1916      (as indicated by remove_from_parent_p) we don't bother doing an
1917      expensive list search to find the element to remove when we are
1918      discarding the list afterwards */
1919   if ((remove_from_parent_p) && (var->parent != NULL))
1920     {
1921       VEC_replace (varobj_p, var->parent->children, var->index, NULL);
1922     }
1923
1924   if (var->obj_name != NULL)
1925     uninstall_variable (var);
1926
1927   /* Free memory associated with this variable */
1928   free_variable (var);
1929 }
1930
1931 /* Install the given variable VAR with the object name VAR->OBJ_NAME. */
1932 static int
1933 install_variable (struct varobj *var)
1934 {
1935   struct vlist *cv;
1936   struct vlist *newvl;
1937   const char *chp;
1938   unsigned int index = 0;
1939   unsigned int i = 1;
1940
1941   for (chp = var->obj_name; *chp; chp++)
1942     {
1943       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1944     }
1945
1946   cv = *(varobj_table + index);
1947   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1948     cv = cv->next;
1949
1950   if (cv != NULL)
1951     error (_("Duplicate variable object name"));
1952
1953   /* Add varobj to hash table */
1954   newvl = xmalloc (sizeof (struct vlist));
1955   newvl->next = *(varobj_table + index);
1956   newvl->var = var;
1957   *(varobj_table + index) = newvl;
1958
1959   /* If root, add varobj to root list */
1960   if (is_root_p (var))
1961     {
1962       /* Add to list of root variables */
1963       if (rootlist == NULL)
1964         var->root->next = NULL;
1965       else
1966         var->root->next = rootlist;
1967       rootlist = var->root;
1968     }
1969
1970   return 1;                     /* OK */
1971 }
1972
1973 /* Unistall the object VAR. */
1974 static void
1975 uninstall_variable (struct varobj *var)
1976 {
1977   struct vlist *cv;
1978   struct vlist *prev;
1979   struct varobj_root *cr;
1980   struct varobj_root *prer;
1981   const char *chp;
1982   unsigned int index = 0;
1983   unsigned int i = 1;
1984
1985   /* Remove varobj from hash table */
1986   for (chp = var->obj_name; *chp; chp++)
1987     {
1988       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1989     }
1990
1991   cv = *(varobj_table + index);
1992   prev = NULL;
1993   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1994     {
1995       prev = cv;
1996       cv = cv->next;
1997     }
1998
1999   if (varobjdebug)
2000     fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
2001
2002   if (cv == NULL)
2003     {
2004       warning
2005         ("Assertion failed: Could not find variable object \"%s\" to delete",
2006          var->obj_name);
2007       return;
2008     }
2009
2010   if (prev == NULL)
2011     *(varobj_table + index) = cv->next;
2012   else
2013     prev->next = cv->next;
2014
2015   xfree (cv);
2016
2017   /* If root, remove varobj from root list */
2018   if (is_root_p (var))
2019     {
2020       /* Remove from list of root variables */
2021       if (rootlist == var->root)
2022         rootlist = var->root->next;
2023       else
2024         {
2025           prer = NULL;
2026           cr = rootlist;
2027           while ((cr != NULL) && (cr->rootvar != var))
2028             {
2029               prer = cr;
2030               cr = cr->next;
2031             }
2032           if (cr == NULL)
2033             {
2034               warning
2035                 ("Assertion failed: Could not find varobj \"%s\" in root list",
2036                  var->obj_name);
2037               return;
2038             }
2039           if (prer == NULL)
2040             rootlist = NULL;
2041           else
2042             prer->next = cr->next;
2043         }
2044     }
2045
2046 }
2047
2048 /* Create and install a child of the parent of the given name */
2049 static struct varobj *
2050 create_child (struct varobj *parent, int index, char *name)
2051 {
2052   return create_child_with_value (parent, index, name, 
2053                                   value_of_child (parent, index));
2054 }
2055
2056 static struct varobj *
2057 create_child_with_value (struct varobj *parent, int index, const char *name,
2058                          struct value *value)
2059 {
2060   struct varobj *child;
2061   char *childs_name;
2062
2063   child = new_variable ();
2064
2065   /* name is allocated by name_of_child */
2066   /* FIXME: xstrdup should not be here.  */
2067   child->name = xstrdup (name);
2068   child->index = index;
2069   child->parent = parent;
2070   child->root = parent->root;
2071   childs_name = xstrprintf ("%s.%s", parent->obj_name, name);
2072   child->obj_name = childs_name;
2073   install_variable (child);
2074
2075   /* Compute the type of the child.  Must do this before
2076      calling install_new_value.  */
2077   if (value != NULL)
2078     /* If the child had no evaluation errors, var->value
2079        will be non-NULL and contain a valid type. */
2080     child->type = value_type (value);
2081   else
2082     /* Otherwise, we must compute the type. */
2083     child->type = (*child->root->lang->type_of_child) (child->parent, 
2084                                                        child->index);
2085   install_new_value (child, value, 1);
2086
2087   return child;
2088 }
2089 \f
2090
2091 /*
2092  * Miscellaneous utility functions.
2093  */
2094
2095 /* Allocate memory and initialize a new variable */
2096 static struct varobj *
2097 new_variable (void)
2098 {
2099   struct varobj *var;
2100
2101   var = (struct varobj *) xmalloc (sizeof (struct varobj));
2102   var->name = NULL;
2103   var->path_expr = NULL;
2104   var->obj_name = NULL;
2105   var->index = -1;
2106   var->type = NULL;
2107   var->value = NULL;
2108   var->num_children = -1;
2109   var->parent = NULL;
2110   var->children = NULL;
2111   var->format = 0;
2112   var->root = NULL;
2113   var->updated = 0;
2114   var->print_value = NULL;
2115   var->frozen = 0;
2116   var->not_fetched = 0;
2117   var->children_requested = 0;
2118   var->from = -1;
2119   var->to = -1;
2120   var->constructor = 0;
2121   var->pretty_printer = 0;
2122   var->child_iter = 0;
2123   var->saved_item = 0;
2124
2125   return var;
2126 }
2127
2128 /* Allocate memory and initialize a new root variable */
2129 static struct varobj *
2130 new_root_variable (void)
2131 {
2132   struct varobj *var = new_variable ();
2133   var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));;
2134   var->root->lang = NULL;
2135   var->root->exp = NULL;
2136   var->root->valid_block = NULL;
2137   var->root->frame = null_frame_id;
2138   var->root->floating = 0;
2139   var->root->rootvar = NULL;
2140   var->root->is_valid = 1;
2141
2142   return var;
2143 }
2144
2145 /* Free any allocated memory associated with VAR. */
2146 static void
2147 free_variable (struct varobj *var)
2148 {
2149 #if HAVE_PYTHON
2150   if (var->pretty_printer)
2151     {
2152       struct cleanup *cleanup = varobj_ensure_python_env (var);
2153       Py_XDECREF (var->constructor);
2154       Py_XDECREF (var->pretty_printer);
2155       Py_XDECREF (var->child_iter);
2156       Py_XDECREF (var->saved_item);
2157       do_cleanups (cleanup);
2158     }
2159 #endif
2160
2161   value_free (var->value);
2162
2163   /* Free the expression if this is a root variable. */
2164   if (is_root_p (var))
2165     {
2166       xfree (var->root->exp);
2167       xfree (var->root);
2168     }
2169
2170   xfree (var->name);
2171   xfree (var->obj_name);
2172   xfree (var->print_value);
2173   xfree (var->path_expr);
2174   xfree (var);
2175 }
2176
2177 static void
2178 do_free_variable_cleanup (void *var)
2179 {
2180   free_variable (var);
2181 }
2182
2183 static struct cleanup *
2184 make_cleanup_free_variable (struct varobj *var)
2185 {
2186   return make_cleanup (do_free_variable_cleanup, var);
2187 }
2188
2189 /* This returns the type of the variable. It also skips past typedefs
2190    to return the real type of the variable.
2191
2192    NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
2193    except within get_target_type and get_type. */
2194 static struct type *
2195 get_type (struct varobj *var)
2196 {
2197   struct type *type;
2198   type = var->type;
2199
2200   if (type != NULL)
2201     type = check_typedef (type);
2202
2203   return type;
2204 }
2205
2206 /* Return the type of the value that's stored in VAR,
2207    or that would have being stored there if the
2208    value were accessible.  
2209
2210    This differs from VAR->type in that VAR->type is always
2211    the true type of the expession in the source language.
2212    The return value of this function is the type we're
2213    actually storing in varobj, and using for displaying
2214    the values and for comparing previous and new values.
2215
2216    For example, top-level references are always stripped.  */
2217 static struct type *
2218 get_value_type (struct varobj *var)
2219 {
2220   struct type *type;
2221
2222   if (var->value)
2223     type = value_type (var->value);
2224   else
2225     type = var->type;
2226
2227   type = check_typedef (type);
2228
2229   if (TYPE_CODE (type) == TYPE_CODE_REF)
2230     type = get_target_type (type);
2231
2232   type = check_typedef (type);
2233
2234   return type;
2235 }
2236
2237 /* This returns the target type (or NULL) of TYPE, also skipping
2238    past typedefs, just like get_type ().
2239
2240    NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
2241    except within get_target_type and get_type. */
2242 static struct type *
2243 get_target_type (struct type *type)
2244 {
2245   if (type != NULL)
2246     {
2247       type = TYPE_TARGET_TYPE (type);
2248       if (type != NULL)
2249         type = check_typedef (type);
2250     }
2251
2252   return type;
2253 }
2254
2255 /* What is the default display for this variable? We assume that
2256    everything is "natural". Any exceptions? */
2257 static enum varobj_display_formats
2258 variable_default_display (struct varobj *var)
2259 {
2260   return FORMAT_NATURAL;
2261 }
2262
2263 /* FIXME: The following should be generic for any pointer */
2264 static void
2265 cppush (struct cpstack **pstack, char *name)
2266 {
2267   struct cpstack *s;
2268
2269   s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
2270   s->name = name;
2271   s->next = *pstack;
2272   *pstack = s;
2273 }
2274
2275 /* FIXME: The following should be generic for any pointer */
2276 static char *
2277 cppop (struct cpstack **pstack)
2278 {
2279   struct cpstack *s;
2280   char *v;
2281
2282   if ((*pstack)->name == NULL && (*pstack)->next == NULL)
2283     return NULL;
2284
2285   s = *pstack;
2286   v = s->name;
2287   *pstack = (*pstack)->next;
2288   xfree (s);
2289
2290   return v;
2291 }
2292 \f
2293 /*
2294  * Language-dependencies
2295  */
2296
2297 /* Common entry points */
2298
2299 /* Get the language of variable VAR. */
2300 static enum varobj_languages
2301 variable_language (struct varobj *var)
2302 {
2303   enum varobj_languages lang;
2304
2305   switch (var->root->exp->language_defn->la_language)
2306     {
2307     default:
2308     case language_c:
2309       lang = vlang_c;
2310       break;
2311     case language_cplus:
2312       lang = vlang_cplus;
2313       break;
2314     case language_java:
2315       lang = vlang_java;
2316       break;
2317     }
2318
2319   return lang;
2320 }
2321
2322 /* Return the number of children for a given variable.
2323    The result of this function is defined by the language
2324    implementation. The number of children returned by this function
2325    is the number of children that the user will see in the variable
2326    display. */
2327 static int
2328 number_of_children (struct varobj *var)
2329 {
2330   return (*var->root->lang->number_of_children) (var);;
2331 }
2332
2333 /* What is the expression for the root varobj VAR? Returns a malloc'd string. */
2334 static char *
2335 name_of_variable (struct varobj *var)
2336 {
2337   return (*var->root->lang->name_of_variable) (var);
2338 }
2339
2340 /* What is the name of the INDEX'th child of VAR? Returns a malloc'd string. */
2341 static char *
2342 name_of_child (struct varobj *var, int index)
2343 {
2344   return (*var->root->lang->name_of_child) (var, index);
2345 }
2346
2347 /* What is the ``struct value *'' of the root variable VAR?
2348    For floating variable object, evaluation can get us a value
2349    of different type from what is stored in varobj already.  In
2350    that case:
2351    - *type_changed will be set to 1
2352    - old varobj will be freed, and new one will be
2353    created, with the same name.
2354    - *var_handle will be set to the new varobj 
2355    Otherwise, *type_changed will be set to 0.  */
2356 static struct value *
2357 value_of_root (struct varobj **var_handle, int *type_changed)
2358 {
2359   struct varobj *var;
2360
2361   if (var_handle == NULL)
2362     return NULL;
2363
2364   var = *var_handle;
2365
2366   /* This should really be an exception, since this should
2367      only get called with a root variable. */
2368
2369   if (!is_root_p (var))
2370     return NULL;
2371
2372   if (var->root->floating)
2373     {
2374       struct varobj *tmp_var;
2375       char *old_type, *new_type;
2376
2377       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2378                                USE_SELECTED_FRAME);
2379       if (tmp_var == NULL)
2380         {
2381           return NULL;
2382         }
2383       old_type = varobj_get_type (var);
2384       new_type = varobj_get_type (tmp_var);
2385       if (strcmp (old_type, new_type) == 0)
2386         {
2387           /* The expression presently stored inside var->root->exp
2388              remembers the locations of local variables relatively to
2389              the frame where the expression was created (in DWARF location
2390              button, for example).  Naturally, those locations are not
2391              correct in other frames, so update the expression.  */
2392
2393          struct expression *tmp_exp = var->root->exp;
2394          var->root->exp = tmp_var->root->exp;
2395          tmp_var->root->exp = tmp_exp;
2396
2397           varobj_delete (tmp_var, NULL, 0);
2398           *type_changed = 0;
2399         }
2400       else
2401         {
2402           tmp_var->obj_name = xstrdup (var->obj_name);
2403           tmp_var->from = var->from;
2404           tmp_var->to = var->to;
2405           varobj_delete (var, NULL, 0);
2406
2407           install_variable (tmp_var);
2408           *var_handle = tmp_var;
2409           var = *var_handle;
2410           *type_changed = 1;
2411         }
2412       xfree (old_type);
2413       xfree (new_type);
2414     }
2415   else
2416     {
2417       *type_changed = 0;
2418     }
2419
2420   return (*var->root->lang->value_of_root) (var_handle);
2421 }
2422
2423 /* What is the ``struct value *'' for the INDEX'th child of PARENT? */
2424 static struct value *
2425 value_of_child (struct varobj *parent, int index)
2426 {
2427   struct value *value;
2428
2429   value = (*parent->root->lang->value_of_child) (parent, index);
2430
2431   return value;
2432 }
2433
2434 /* GDB already has a command called "value_of_variable". Sigh. */
2435 static char *
2436 my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2437 {
2438   if (var->root->is_valid)
2439     {
2440       if (var->pretty_printer)
2441         return value_get_print_value (var->value, var->format, var);
2442       return (*var->root->lang->value_of_variable) (var, format);
2443     }
2444   else
2445     return NULL;
2446 }
2447
2448 static char *
2449 value_get_print_value (struct value *value, enum varobj_display_formats format,
2450                        struct varobj *var)
2451 {
2452   struct ui_file *stb;
2453   struct cleanup *old_chain;
2454   gdb_byte *thevalue = NULL;
2455   struct value_print_options opts;
2456   int len = 0;
2457
2458   if (value == NULL)
2459     return NULL;
2460
2461 #if HAVE_PYTHON
2462   {
2463     struct cleanup *back_to = varobj_ensure_python_env (var);
2464     PyObject *value_formatter = var->pretty_printer;
2465
2466     if (value_formatter)
2467       {
2468         /* First check to see if we have any children at all.  If so,
2469            we simply return {...}.  */
2470         if (dynamic_varobj_has_child_method (var))
2471           return xstrdup ("{...}");
2472
2473         if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
2474           {
2475             char *hint;
2476             struct value *replacement;
2477             int string_print = 0;
2478             PyObject *output = NULL;
2479
2480             hint = gdbpy_get_display_hint (value_formatter);
2481             if (hint)
2482               {
2483                 if (!strcmp (hint, "string"))
2484                   string_print = 1;
2485                 xfree (hint);
2486               }
2487
2488             output = apply_varobj_pretty_printer (value_formatter,
2489                                                   &replacement);
2490             if (output)
2491               {
2492                 PyObject *py_str
2493                   = python_string_to_target_python_string (output);
2494                 if (py_str)
2495                   {
2496                     char *s = PyString_AsString (py_str);
2497                     len = PyString_Size (py_str);
2498                     thevalue = xmemdup (s, len + 1, len + 1);
2499                     Py_DECREF (py_str);
2500                   }
2501                 Py_DECREF (output);
2502               }
2503             if (thevalue && !string_print)
2504               {
2505                 do_cleanups (back_to);
2506                 return thevalue;
2507               }
2508             if (replacement)
2509               value = replacement;
2510           }
2511       }
2512     do_cleanups (back_to);
2513   }
2514 #endif
2515
2516   stb = mem_fileopen ();
2517   old_chain = make_cleanup_ui_file_delete (stb);
2518
2519   get_formatted_print_options (&opts, format_code[(int) format]);
2520   opts.deref_ref = 0;
2521   opts.raw = 1;
2522   if (thevalue)
2523     {
2524       struct gdbarch *gdbarch = get_type_arch (value_type (value));
2525       make_cleanup (xfree, thevalue);
2526       LA_PRINT_STRING (stb, builtin_type (gdbarch)->builtin_char,
2527                        thevalue, len, 0, &opts);
2528     }
2529   else
2530     common_val_print (value, stb, 0, &opts, current_language);
2531   thevalue = ui_file_xstrdup (stb, NULL);
2532
2533   do_cleanups (old_chain);
2534   return thevalue;
2535 }
2536
2537 int
2538 varobj_editable_p (struct varobj *var)
2539 {
2540   struct type *type;
2541   struct value *value;
2542
2543   if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
2544     return 0;
2545
2546   type = get_value_type (var);
2547
2548   switch (TYPE_CODE (type))
2549     {
2550     case TYPE_CODE_STRUCT:
2551     case TYPE_CODE_UNION:
2552     case TYPE_CODE_ARRAY:
2553     case TYPE_CODE_FUNC:
2554     case TYPE_CODE_METHOD:
2555       return 0;
2556       break;
2557
2558     default:
2559       return 1;
2560       break;
2561     }
2562 }
2563
2564 /* Return non-zero if changes in value of VAR
2565    must be detected and reported by -var-update.
2566    Return zero is -var-update should never report
2567    changes of such values.  This makes sense for structures
2568    (since the changes in children values will be reported separately),
2569    or for artifical objects (like 'public' pseudo-field in C++).
2570
2571    Return value of 0 means that gdb need not call value_fetch_lazy
2572    for the value of this variable object.  */
2573 static int
2574 varobj_value_is_changeable_p (struct varobj *var)
2575 {
2576   int r;
2577   struct type *type;
2578
2579   if (CPLUS_FAKE_CHILD (var))
2580     return 0;
2581
2582   type = get_value_type (var);
2583
2584   switch (TYPE_CODE (type))
2585     {
2586     case TYPE_CODE_STRUCT:
2587     case TYPE_CODE_UNION:
2588     case TYPE_CODE_ARRAY:
2589       r = 0;
2590       break;
2591
2592     default:
2593       r = 1;
2594     }
2595
2596   return r;
2597 }
2598
2599 /* Return 1 if that varobj is floating, that is is always evaluated in the
2600    selected frame, and not bound to thread/frame.  Such variable objects
2601    are created using '@' as frame specifier to -var-create.  */
2602 int
2603 varobj_floating_p (struct varobj *var)
2604 {
2605   return var->root->floating;
2606 }
2607
2608 /* Given the value and the type of a variable object,
2609    adjust the value and type to those necessary
2610    for getting children of the variable object.
2611    This includes dereferencing top-level references
2612    to all types and dereferencing pointers to
2613    structures.  
2614
2615    Both TYPE and *TYPE should be non-null. VALUE
2616    can be null if we want to only translate type.
2617    *VALUE can be null as well -- if the parent
2618    value is not known.  
2619
2620    If WAS_PTR is not NULL, set *WAS_PTR to 0 or 1
2621    depending on whether pointer was dereferenced
2622    in this function.  */
2623 static void
2624 adjust_value_for_child_access (struct value **value,
2625                                   struct type **type,
2626                                   int *was_ptr)
2627 {
2628   gdb_assert (type && *type);
2629
2630   if (was_ptr)
2631     *was_ptr = 0;
2632
2633   *type = check_typedef (*type);
2634   
2635   /* The type of value stored in varobj, that is passed
2636      to us, is already supposed to be
2637      reference-stripped.  */
2638
2639   gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF);
2640
2641   /* Pointers to structures are treated just like
2642      structures when accessing children.  Don't
2643      dererences pointers to other types.  */
2644   if (TYPE_CODE (*type) == TYPE_CODE_PTR)
2645     {
2646       struct type *target_type = get_target_type (*type);
2647       if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
2648           || TYPE_CODE (target_type) == TYPE_CODE_UNION)
2649         {
2650           if (value && *value)
2651             {
2652               int success = gdb_value_ind (*value, value);        
2653               if (!success)
2654                 *value = NULL;
2655             }
2656           *type = target_type;
2657           if (was_ptr)
2658             *was_ptr = 1;
2659         }
2660     }
2661
2662   /* The 'get_target_type' function calls check_typedef on
2663      result, so we can immediately check type code.  No
2664      need to call check_typedef here.  */
2665 }
2666
2667 /* C */
2668 static int
2669 c_number_of_children (struct varobj *var)
2670 {
2671   struct type *type = get_value_type (var);
2672   int children = 0;
2673   struct type *target;
2674
2675   adjust_value_for_child_access (NULL, &type, NULL);
2676   target = get_target_type (type);
2677
2678   switch (TYPE_CODE (type))
2679     {
2680     case TYPE_CODE_ARRAY:
2681       if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
2682           && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
2683         children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
2684       else
2685         /* If we don't know how many elements there are, don't display
2686            any.  */
2687         children = 0;
2688       break;
2689
2690     case TYPE_CODE_STRUCT:
2691     case TYPE_CODE_UNION:
2692       children = TYPE_NFIELDS (type);
2693       break;
2694
2695     case TYPE_CODE_PTR:
2696       /* The type here is a pointer to non-struct. Typically, pointers
2697          have one child, except for function ptrs, which have no children,
2698          and except for void*, as we don't know what to show.
2699
2700          We can show char* so we allow it to be dereferenced.  If you decide
2701          to test for it, please mind that a little magic is necessary to
2702          properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and 
2703          TYPE_NAME == "char" */
2704       if (TYPE_CODE (target) == TYPE_CODE_FUNC
2705           || TYPE_CODE (target) == TYPE_CODE_VOID)
2706         children = 0;
2707       else
2708         children = 1;
2709       break;
2710
2711     default:
2712       /* Other types have no children */
2713       break;
2714     }
2715
2716   return children;
2717 }
2718
2719 static char *
2720 c_name_of_variable (struct varobj *parent)
2721 {
2722   return xstrdup (parent->name);
2723 }
2724
2725 /* Return the value of element TYPE_INDEX of a structure
2726    value VALUE.  VALUE's type should be a structure,
2727    or union, or a typedef to struct/union.  
2728
2729    Returns NULL if getting the value fails.  Never throws.  */
2730 static struct value *
2731 value_struct_element_index (struct value *value, int type_index)
2732 {
2733   struct value *result = NULL;
2734   volatile struct gdb_exception e;
2735
2736   struct type *type = value_type (value);
2737   type = check_typedef (type);
2738
2739   gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
2740               || TYPE_CODE (type) == TYPE_CODE_UNION);
2741
2742   TRY_CATCH (e, RETURN_MASK_ERROR)
2743     {
2744       if (field_is_static (&TYPE_FIELD (type, type_index)))
2745         result = value_static_field (type, type_index);
2746       else
2747         result = value_primitive_field (value, 0, type_index, type);
2748     }
2749   if (e.reason < 0)
2750     {
2751       return NULL;
2752     }
2753   else
2754     {
2755       return result;
2756     }
2757 }
2758
2759 /* Obtain the information about child INDEX of the variable
2760    object PARENT.  
2761    If CNAME is not null, sets *CNAME to the name of the child relative
2762    to the parent.
2763    If CVALUE is not null, sets *CVALUE to the value of the child.
2764    If CTYPE is not null, sets *CTYPE to the type of the child.
2765
2766    If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
2767    information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
2768    to NULL.  */
2769 static void 
2770 c_describe_child (struct varobj *parent, int index,
2771                   char **cname, struct value **cvalue, struct type **ctype,
2772                   char **cfull_expression)
2773 {
2774   struct value *value = parent->value;
2775   struct type *type = get_value_type (parent);
2776   char *parent_expression = NULL;
2777   int was_ptr;
2778
2779   if (cname)
2780     *cname = NULL;
2781   if (cvalue)
2782     *cvalue = NULL;
2783   if (ctype)
2784     *ctype = NULL;
2785   if (cfull_expression)
2786     {
2787       *cfull_expression = NULL;
2788       parent_expression = varobj_get_path_expr (parent);
2789     }
2790   adjust_value_for_child_access (&value, &type, &was_ptr);
2791       
2792   switch (TYPE_CODE (type))
2793     {
2794     case TYPE_CODE_ARRAY:
2795       if (cname)
2796         *cname = xstrprintf ("%d", index
2797                              + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
2798
2799       if (cvalue && value)
2800         {
2801           int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
2802           gdb_value_subscript (value, real_index, cvalue);
2803         }
2804
2805       if (ctype)
2806         *ctype = get_target_type (type);
2807
2808       if (cfull_expression)
2809         *cfull_expression = xstrprintf ("(%s)[%d]", parent_expression, 
2810                                         index
2811                                         + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
2812
2813
2814       break;
2815
2816     case TYPE_CODE_STRUCT:
2817     case TYPE_CODE_UNION:
2818       if (cname)
2819         *cname = xstrdup (TYPE_FIELD_NAME (type, index));
2820
2821       if (cvalue && value)
2822         {
2823           /* For C, varobj index is the same as type index.  */
2824           *cvalue = value_struct_element_index (value, index);
2825         }
2826
2827       if (ctype)
2828         *ctype = TYPE_FIELD_TYPE (type, index);
2829
2830       if (cfull_expression)
2831         {
2832           char *join = was_ptr ? "->" : ".";
2833           *cfull_expression = xstrprintf ("(%s)%s%s", parent_expression, join,
2834                                           TYPE_FIELD_NAME (type, index));
2835         }
2836
2837       break;
2838
2839     case TYPE_CODE_PTR:
2840       if (cname)
2841         *cname = xstrprintf ("*%s", parent->name);
2842
2843       if (cvalue && value)
2844         {
2845           int success = gdb_value_ind (value, cvalue);
2846           if (!success)
2847             *cvalue = NULL;
2848         }
2849
2850       /* Don't use get_target_type because it calls
2851          check_typedef and here, we want to show the true
2852          declared type of the variable.  */
2853       if (ctype)
2854         *ctype = TYPE_TARGET_TYPE (type);
2855
2856       if (cfull_expression)
2857         *cfull_expression = xstrprintf ("*(%s)", parent_expression);
2858       
2859       break;
2860
2861     default:
2862       /* This should not happen */
2863       if (cname)
2864         *cname = xstrdup ("???");
2865       if (cfull_expression)
2866         *cfull_expression = xstrdup ("???");
2867       /* Don't set value and type, we don't know then. */
2868     }
2869 }
2870
2871 static char *
2872 c_name_of_child (struct varobj *parent, int index)
2873 {
2874   char *name;
2875   c_describe_child (parent, index, &name, NULL, NULL, NULL);
2876   return name;
2877 }
2878
2879 static char *
2880 c_path_expr_of_child (struct varobj *child)
2881 {
2882   c_describe_child (child->parent, child->index, NULL, NULL, NULL, 
2883                     &child->path_expr);
2884   return child->path_expr;
2885 }
2886
2887 /* If frame associated with VAR can be found, switch
2888    to it and return 1.  Otherwise, return 0.  */
2889 static int
2890 check_scope (struct varobj *var)
2891 {
2892   struct frame_info *fi;
2893   int scope;
2894
2895   fi = frame_find_by_id (var->root->frame);
2896   scope = fi != NULL;
2897
2898   if (fi)
2899     {
2900       CORE_ADDR pc = get_frame_pc (fi);
2901       if (pc <  BLOCK_START (var->root->valid_block) ||
2902           pc >= BLOCK_END (var->root->valid_block))
2903         scope = 0;
2904       else
2905         select_frame (fi);
2906     }
2907   return scope;
2908 }
2909
2910 static struct value *
2911 c_value_of_root (struct varobj **var_handle)
2912 {
2913   struct value *new_val = NULL;
2914   struct varobj *var = *var_handle;
2915   struct frame_info *fi;
2916   int within_scope = 0;
2917   struct cleanup *back_to;
2918                                                                  
2919   /*  Only root variables can be updated... */
2920   if (!is_root_p (var))
2921     /* Not a root var */
2922     return NULL;
2923
2924   back_to = make_cleanup_restore_current_thread ();
2925
2926   /* Determine whether the variable is still around. */
2927   if (var->root->valid_block == NULL || var->root->floating)
2928     within_scope = 1;
2929   else if (var->root->thread_id == 0)
2930     {
2931       /* The program was single-threaded when the variable object was
2932          created.  Technically, it's possible that the program became
2933          multi-threaded since then, but we don't support such
2934          scenario yet.  */
2935       within_scope = check_scope (var);   
2936     }
2937   else
2938     {
2939       ptid_t ptid = thread_id_to_pid (var->root->thread_id);
2940       if (in_thread_list (ptid))
2941         {
2942           switch_to_thread (ptid);
2943           within_scope = check_scope (var);
2944         }
2945     }
2946
2947   if (within_scope)
2948     {
2949       /* We need to catch errors here, because if evaluate
2950          expression fails we want to just return NULL.  */
2951       gdb_evaluate_expression (var->root->exp, &new_val);
2952       return new_val;
2953     }
2954
2955   do_cleanups (back_to);
2956
2957   return NULL;
2958 }
2959
2960 static struct value *
2961 c_value_of_child (struct varobj *parent, int index)
2962 {
2963   struct value *value = NULL;
2964   c_describe_child (parent, index, NULL, &value, NULL, NULL);
2965
2966   return value;
2967 }
2968
2969 static struct type *
2970 c_type_of_child (struct varobj *parent, int index)
2971 {
2972   struct type *type = NULL;
2973   c_describe_child (parent, index, NULL, NULL, &type, NULL);
2974   return type;
2975 }
2976
2977 static char *
2978 c_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2979 {
2980   /* BOGUS: if val_print sees a struct/class, or a reference to one,
2981      it will print out its children instead of "{...}".  So we need to
2982      catch that case explicitly.  */
2983   struct type *type = get_type (var);
2984
2985   /* If we have a custom formatter, return whatever string it has
2986      produced.  */
2987   if (var->pretty_printer && var->print_value)
2988     return xstrdup (var->print_value);
2989   
2990   /* Strip top-level references. */
2991   while (TYPE_CODE (type) == TYPE_CODE_REF)
2992     type = check_typedef (TYPE_TARGET_TYPE (type));
2993
2994   switch (TYPE_CODE (type))
2995     {
2996     case TYPE_CODE_STRUCT:
2997     case TYPE_CODE_UNION:
2998       return xstrdup ("{...}");
2999       /* break; */
3000
3001     case TYPE_CODE_ARRAY:
3002       {
3003         char *number;
3004         number = xstrprintf ("[%d]", var->num_children);
3005         return (number);
3006       }
3007       /* break; */
3008
3009     default:
3010       {
3011         if (var->value == NULL)
3012           {
3013             /* This can happen if we attempt to get the value of a struct
3014                member when the parent is an invalid pointer. This is an
3015                error condition, so we should tell the caller. */
3016             return NULL;
3017           }
3018         else
3019           {
3020             if (var->not_fetched && value_lazy (var->value))
3021               /* Frozen variable and no value yet.  We don't
3022                  implicitly fetch the value.  MI response will
3023                  use empty string for the value, which is OK.  */
3024               return NULL;
3025
3026             gdb_assert (varobj_value_is_changeable_p (var));
3027             gdb_assert (!value_lazy (var->value));
3028             
3029             /* If the specified format is the current one,
3030                we can reuse print_value */
3031             if (format == var->format)
3032               return xstrdup (var->print_value);
3033             else
3034               return value_get_print_value (var->value, format, var);
3035           }
3036       }
3037     }
3038 }
3039 \f
3040
3041 /* C++ */
3042
3043 static int
3044 cplus_number_of_children (struct varobj *var)
3045 {
3046   struct type *type;
3047   int children, dont_know;
3048
3049   dont_know = 1;
3050   children = 0;
3051
3052   if (!CPLUS_FAKE_CHILD (var))
3053     {
3054       type = get_value_type (var);
3055       adjust_value_for_child_access (NULL, &type, NULL);
3056
3057       if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
3058           ((TYPE_CODE (type)) == TYPE_CODE_UNION))
3059         {
3060           int kids[3];
3061
3062           cplus_class_num_children (type, kids);
3063           if (kids[v_public] != 0)
3064             children++;
3065           if (kids[v_private] != 0)
3066             children++;
3067           if (kids[v_protected] != 0)
3068             children++;
3069
3070           /* Add any baseclasses */
3071           children += TYPE_N_BASECLASSES (type);
3072           dont_know = 0;
3073
3074           /* FIXME: save children in var */
3075         }
3076     }
3077   else
3078     {
3079       int kids[3];
3080
3081       type = get_value_type (var->parent);
3082       adjust_value_for_child_access (NULL, &type, NULL);
3083
3084       cplus_class_num_children (type, kids);
3085       if (strcmp (var->name, "public") == 0)
3086         children = kids[v_public];
3087       else if (strcmp (var->name, "private") == 0)
3088         children = kids[v_private];
3089       else
3090         children = kids[v_protected];
3091       dont_know = 0;
3092     }
3093
3094   if (dont_know)
3095     children = c_number_of_children (var);
3096
3097   return children;
3098 }
3099
3100 /* Compute # of public, private, and protected variables in this class.
3101    That means we need to descend into all baseclasses and find out
3102    how many are there, too. */
3103 static void
3104 cplus_class_num_children (struct type *type, int children[3])
3105 {
3106   int i;
3107
3108   children[v_public] = 0;
3109   children[v_private] = 0;
3110   children[v_protected] = 0;
3111
3112   for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
3113     {
3114       /* If we have a virtual table pointer, omit it. */
3115       if (TYPE_VPTR_BASETYPE (type) == type && TYPE_VPTR_FIELDNO (type) == i)
3116         continue;
3117
3118       if (TYPE_FIELD_PROTECTED (type, i))
3119         children[v_protected]++;
3120       else if (TYPE_FIELD_PRIVATE (type, i))
3121         children[v_private]++;
3122       else
3123         children[v_public]++;
3124     }
3125 }
3126
3127 static char *
3128 cplus_name_of_variable (struct varobj *parent)
3129 {
3130   return c_name_of_variable (parent);
3131 }
3132
3133 enum accessibility { private_field, protected_field, public_field };
3134
3135 /* Check if field INDEX of TYPE has the specified accessibility.
3136    Return 0 if so and 1 otherwise.  */
3137 static int 
3138 match_accessibility (struct type *type, int index, enum accessibility acc)
3139 {
3140   if (acc == private_field && TYPE_FIELD_PRIVATE (type, index))
3141     return 1;
3142   else if (acc == protected_field && TYPE_FIELD_PROTECTED (type, index))
3143     return 1;
3144   else if (acc == public_field && !TYPE_FIELD_PRIVATE (type, index)
3145            && !TYPE_FIELD_PROTECTED (type, index))
3146     return 1;
3147   else
3148     return 0;
3149 }
3150
3151 static void
3152 cplus_describe_child (struct varobj *parent, int index,
3153                       char **cname, struct value **cvalue, struct type **ctype,
3154                       char **cfull_expression)
3155 {
3156   char *name = NULL;
3157   struct value *value;
3158   struct type *type;
3159   int was_ptr;
3160   char *parent_expression = NULL;
3161
3162   if (cname)
3163     *cname = NULL;
3164   if (cvalue)
3165     *cvalue = NULL;
3166   if (ctype)
3167     *ctype = NULL;
3168   if (cfull_expression)
3169     *cfull_expression = NULL;
3170
3171   if (CPLUS_FAKE_CHILD (parent))
3172     {
3173       value = parent->parent->value;
3174       type = get_value_type (parent->parent);
3175       if (cfull_expression)
3176         parent_expression = varobj_get_path_expr (parent->parent);
3177     }
3178   else
3179     {
3180       value = parent->value;
3181       type = get_value_type (parent);
3182       if (cfull_expression)
3183         parent_expression = varobj_get_path_expr (parent);
3184     }
3185
3186   adjust_value_for_child_access (&value, &type, &was_ptr);
3187
3188   if (TYPE_CODE (type) == TYPE_CODE_STRUCT
3189       || TYPE_CODE (type) == TYPE_CODE_UNION)
3190     {
3191       char *join = was_ptr ? "->" : ".";
3192       if (CPLUS_FAKE_CHILD (parent))
3193         {
3194           /* The fields of the class type are ordered as they
3195              appear in the class.  We are given an index for a
3196              particular access control type ("public","protected",
3197              or "private").  We must skip over fields that don't
3198              have the access control we are looking for to properly
3199              find the indexed field. */
3200           int type_index = TYPE_N_BASECLASSES (type);
3201           enum accessibility acc = public_field;
3202           if (strcmp (parent->name, "private") == 0)
3203             acc = private_field;
3204           else if (strcmp (parent->name, "protected") == 0)
3205             acc = protected_field;
3206
3207           while (index >= 0)
3208             {
3209               if (TYPE_VPTR_BASETYPE (type) == type
3210                   && type_index == TYPE_VPTR_FIELDNO (type))
3211                 ; /* ignore vptr */
3212               else if (match_accessibility (type, type_index, acc))
3213                     --index;
3214                   ++type_index;
3215             }
3216           --type_index;
3217
3218           if (cname)
3219             *cname = xstrdup (TYPE_FIELD_NAME (type, type_index));
3220
3221           if (cvalue && value)
3222             *cvalue = value_struct_element_index (value, type_index);
3223
3224           if (ctype)
3225             *ctype = TYPE_FIELD_TYPE (type, type_index);
3226
3227           if (cfull_expression)
3228             *cfull_expression = xstrprintf ("((%s)%s%s)", parent_expression,
3229                                             join, 
3230                                             TYPE_FIELD_NAME (type, type_index));
3231         }
3232       else if (index < TYPE_N_BASECLASSES (type))
3233         {
3234           /* This is a baseclass.  */
3235           if (cname)
3236             *cname = xstrdup (TYPE_FIELD_NAME (type, index));
3237
3238           if (cvalue && value)
3239             *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
3240
3241           if (ctype)
3242             {
3243               *ctype = TYPE_FIELD_TYPE (type, index);
3244             }
3245
3246           if (cfull_expression)
3247             {
3248               char *ptr = was_ptr ? "*" : "";
3249               /* Cast the parent to the base' type. Note that in gdb,
3250                  expression like 
3251                          (Base1)d
3252                  will create an lvalue, for all appearences, so we don't
3253                  need to use more fancy:
3254                          *(Base1*)(&d)
3255                  construct.  */
3256               *cfull_expression = xstrprintf ("(%s(%s%s) %s)", 
3257                                               ptr, 
3258                                               TYPE_FIELD_NAME (type, index),
3259                                               ptr,
3260                                               parent_expression);
3261             }
3262         }
3263       else
3264         {
3265           char *access = NULL;
3266           int children[3];
3267           cplus_class_num_children (type, children);
3268
3269           /* Everything beyond the baseclasses can
3270              only be "public", "private", or "protected"
3271
3272              The special "fake" children are always output by varobj in
3273              this order. So if INDEX == 2, it MUST be "protected". */
3274           index -= TYPE_N_BASECLASSES (type);
3275           switch (index)
3276             {
3277             case 0:
3278               if (children[v_public] > 0)
3279                 access = "public";
3280               else if (children[v_private] > 0)
3281                 access = "private";
3282               else 
3283                 access = "protected";
3284               break;
3285             case 1:
3286               if (children[v_public] > 0)
3287                 {
3288                   if (children[v_private] > 0)
3289                     access = "private";
3290                   else
3291                     access = "protected";
3292                 }
3293               else if (children[v_private] > 0)
3294                 access = "protected";
3295               break;
3296             case 2:
3297               /* Must be protected */
3298               access = "protected";
3299               break;
3300             default:
3301               /* error! */
3302               break;
3303             }
3304
3305           gdb_assert (access);
3306           if (cname)
3307             *cname = xstrdup (access);
3308
3309           /* Value and type and full expression are null here.  */
3310         }
3311     }
3312   else
3313     {
3314       c_describe_child (parent, index, cname, cvalue, ctype, cfull_expression);
3315     }  
3316 }
3317
3318 static char *
3319 cplus_name_of_child (struct varobj *parent, int index)
3320 {
3321   char *name = NULL;
3322   cplus_describe_child (parent, index, &name, NULL, NULL, NULL);
3323   return name;
3324 }
3325
3326 static char *
3327 cplus_path_expr_of_child (struct varobj *child)
3328 {
3329   cplus_describe_child (child->parent, child->index, NULL, NULL, NULL, 
3330                         &child->path_expr);
3331   return child->path_expr;
3332 }
3333
3334 static struct value *
3335 cplus_value_of_root (struct varobj **var_handle)
3336 {
3337   return c_value_of_root (var_handle);
3338 }
3339
3340 static struct value *
3341 cplus_value_of_child (struct varobj *parent, int index)
3342 {
3343   struct value *value = NULL;
3344   cplus_describe_child (parent, index, NULL, &value, NULL, NULL);
3345   return value;
3346 }
3347
3348 static struct type *
3349 cplus_type_of_child (struct varobj *parent, int index)
3350 {
3351   struct type *type = NULL;
3352   cplus_describe_child (parent, index, NULL, NULL, &type, NULL);
3353   return type;
3354 }
3355
3356 static char *
3357 cplus_value_of_variable (struct varobj *var, enum varobj_display_formats format)
3358 {
3359
3360   /* If we have one of our special types, don't print out
3361      any value. */
3362   if (CPLUS_FAKE_CHILD (var))
3363     return xstrdup ("");
3364
3365   return c_value_of_variable (var, format);
3366 }
3367 \f
3368 /* Java */
3369
3370 static int
3371 java_number_of_children (struct varobj *var)
3372 {
3373   return cplus_number_of_children (var);
3374 }
3375
3376 static char *
3377 java_name_of_variable (struct varobj *parent)
3378 {
3379   char *p, *name;
3380
3381   name = cplus_name_of_variable (parent);
3382   /* If  the name has "-" in it, it is because we
3383      needed to escape periods in the name... */
3384   p = name;
3385
3386   while (*p != '\000')
3387     {
3388       if (*p == '-')
3389         *p = '.';
3390       p++;
3391     }
3392
3393   return name;
3394 }
3395
3396 static char *
3397 java_name_of_child (struct varobj *parent, int index)
3398 {
3399   char *name, *p;
3400
3401   name = cplus_name_of_child (parent, index);
3402   /* Escape any periods in the name... */
3403   p = name;
3404
3405   while (*p != '\000')
3406     {
3407       if (*p == '.')
3408         *p = '-';
3409       p++;
3410     }
3411
3412   return name;
3413 }
3414
3415 static char *
3416 java_path_expr_of_child (struct varobj *child)
3417 {
3418   return NULL;
3419 }
3420
3421 static struct value *
3422 java_value_of_root (struct varobj **var_handle)
3423 {
3424   return cplus_value_of_root (var_handle);
3425 }
3426
3427 static struct value *
3428 java_value_of_child (struct varobj *parent, int index)
3429 {
3430   return cplus_value_of_child (parent, index);
3431 }
3432
3433 static struct type *
3434 java_type_of_child (struct varobj *parent, int index)
3435 {
3436   return cplus_type_of_child (parent, index);
3437 }
3438
3439 static char *
3440 java_value_of_variable (struct varobj *var, enum varobj_display_formats format)
3441 {
3442   return cplus_value_of_variable (var, format);
3443 }
3444
3445 /* Iterate all the existing _root_ VAROBJs and call the FUNC callback for them
3446    with an arbitrary caller supplied DATA pointer.  */
3447
3448 void
3449 all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data)
3450 {
3451   struct varobj_root *var_root, *var_root_next;
3452
3453   /* Iterate "safely" - handle if the callee deletes its passed VAROBJ.  */
3454
3455   for (var_root = rootlist; var_root != NULL; var_root = var_root_next)
3456     {
3457       var_root_next = var_root->next;
3458
3459       (*func) (var_root->rootvar, data);
3460     }
3461 }
3462 \f
3463 extern void _initialize_varobj (void);
3464 void
3465 _initialize_varobj (void)
3466 {
3467   int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
3468
3469   varobj_table = xmalloc (sizeof_table);
3470   memset (varobj_table, 0, sizeof_table);
3471
3472   add_setshow_zinteger_cmd ("debugvarobj", class_maintenance,
3473                             &varobjdebug, _("\
3474 Set varobj debugging."), _("\
3475 Show varobj debugging."), _("\
3476 When non-zero, varobj debugging is enabled."),
3477                             NULL,
3478                             show_varobjdebug,
3479                             &setlist, &showlist);
3480 }
3481
3482 /* Invalidate varobj VAR if it is tied to locals and re-create it if it is
3483    defined on globals.  It is a helper for varobj_invalidate.  */
3484
3485 static void
3486 varobj_invalidate_iter (struct varobj *var, void *unused)
3487 {
3488   /* Floating varobjs are reparsed on each stop, so we don't care if the
3489      presently parsed expression refers to something that's gone.  */
3490   if (var->root->floating)
3491     return;
3492
3493   /* global var must be re-evaluated.  */     
3494   if (var->root->valid_block == NULL)
3495     {
3496       struct varobj *tmp_var;
3497
3498       /* Try to create a varobj with same expression.  If we succeed
3499          replace the old varobj, otherwise invalidate it.  */
3500       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
3501                                USE_CURRENT_FRAME);
3502       if (tmp_var != NULL) 
3503         { 
3504           tmp_var->obj_name = xstrdup (var->obj_name);
3505           varobj_delete (var, NULL, 0);
3506           install_variable (tmp_var);
3507         }
3508       else
3509         var->root->is_valid = 0;
3510     }
3511   else /* locals must be invalidated.  */
3512     var->root->is_valid = 0;
3513 }
3514
3515 /* Invalidate the varobjs that are tied to locals and re-create the ones that
3516    are defined on globals.
3517    Invalidated varobjs will be always printed in_scope="invalid".  */
3518
3519 void 
3520 varobj_invalidate (void)
3521 {
3522   all_root_varobjs (varobj_invalidate_iter, NULL);
3523 }