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