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