Commit Graph

108 Commits

Author SHA1 Message Date
Vladimir Prus
5a413362ba * varobj.h (varobj_floating_p): Declare.
* varobj.c (varobj_floating_p): New.
	* mi/mi-cmd-var.c (mi_cmd_var_update): When passed
	'@' as the name, update all floating varobjs.
2008-03-26 14:51:28 +00:00
Vladimir Prus
a5defcdc21 * varobj.c (struct varobj_root): Rename use_selected_frame to
floating, and clarify the meaning.
	(varobj_create, varobj_update,  new_root_variable): Adjust.
	(value_of_root): Don't use type_changed as in variable,
	adjust comment.
	(c_value_of_root): Adjust.
2008-03-26 14:11:18 +00:00
Vladimir Prus
c5b48eacfa * varobj.c (struct varobj_root): New component thread_id.
(varobj_get_thread_id, check_scope): New functions.
        (c_value_of_root): Use check_scope.  Switch to the
	proper thread if necessary.

        * varobj.h (varobj_get_thread_id): New extern.

        * mi/mi-cmd-var.c (print_varobj): Add thread-id field.
2008-03-24 17:33:30 +00:00
Vladimir Prus
6208b47d6c * thread.c (make_cleanup_restore_current_thread): Make it
globally visible.
	* gdbthread.h (make_cleanup_restore_current_thread): Declare.
	* varobj.c (varobj_update): Don't save/restore frame.
	(c_value_of_root): Save/restore thread and frame here,
	using make_cleanup_restore_current_thread.
	* Makefile.in: Update dependecies.
2008-03-23 09:53:52 +00:00
Vladimir Prus
44a67aa79a * varobj.c (struct varobj_root): Clarify
comment on the frame field.
        (varobj_create): Don't set frame if we have no
        block.
2008-03-23 08:59:19 +00:00
Vladimir Prus
c39c82565f * varobj.c (c_value_of_variable): Use xstrdup. 2008-02-04 07:49:04 +00:00
Vladimir Prus
ae7d22a6f2 Update stored rendition of varobj value when format changes.
* varobj.c (varobj_set_display_format): Recomputed
        print_value.
        (c_value_of_variable): Return print_value.
2008-02-04 06:14:20 +00:00
Vladimir Prus
d56d46f5c7 Use vector for varobj_list_children interface.
* gdb/varobj.c (varobj_list_children): Return vector
        of varobjs.
        * gdb/varobj.h (varobj_list_children): Adjust
        prototype.
        (varobj_p): Declare.  Declare vector thereof.
        * mi/mi-cmd-var.c (mi_cmd_var_list_children): Adjust
        for varobj_list_children change.
	* Makefile.in (varobj_h): Update dependencies.
2008-01-30 07:17:31 +00:00
Daniel Jacobowitz
3f4178d63f 2008-01-29 Aleksandar Ristovski <aristovski@qnx.com>
* varobj (adjust_value_for_child_access): Added checking for
	returned value from gdb_value_ind.
	(c_describe_child): Likewise.
	(cplus_describe_child): Fixed a typo.
2008-01-29 19:18:18 +00:00
Daniel Jacobowitz
9b254dd1ce Updated copyright notices for most files. 2008-01-01 22:53:26 +00:00
Nick Roberts
340a772374 (c_variable_editable, cplus_variable_editable)
(java_variable_editable, variable_editable): Delete.
(varobj_editable_p): Replace above functions with one language
independent function.  Check for an lvalue.
(varobj_get_attributes, varobj_set_value): Use varobj_editable_p.
(struct language_specific): Delete variable_editable field.
2007-11-20 19:54:39 +00:00
Vladimir Prus
214270abf3 Fix crash when a variable object being deleted
has any of its children deleted previously.

	* varobj.c (delete_variable_1): Don't recurse
	into deleted children.
2007-11-07 20:06:29 +00:00
Vladimir Prus
7a4d50bfe0 * varobj.c (install_new_value): Don't
call value_get_print_value when a value is
	lazy.  Update the print_value member in a
	single place.
2007-09-27 18:04:12 +00:00
Vladimir Prus
202ddcaa09 * varobj.c (struct varobj): Fix comment
for the type member not to lie when it can be
	NULL.
2007-08-31 19:01:17 +00:00
Vladimir Prus
02142340a0 Implement -var-info-path-expression.
* mi/mi-cmds.h (mi_cmd_var_info_path_expression):
	Declare.
	* mi/mi-cmds.c (mi_cmds): Register var-info-path-expression.
	* mi/mi-cmd-var.c (mi_cmd_var_info_path_expression): New.
	* varobj.c (struct varobj): New field 'path_expr'.
	(c_path_expr_of_child, cplus_path_expr_of_child)
	(java_path_expr_of_child): New.
	(struct language_specific): New field path_expr_of_child.
	(varobj_create): Initialize the path_expr field.
	(varobj_get_path_expr): New.
	(new_variable): Initialize the path_expr field.
	(free_variable): Free the path_expr field.
	(adjust_value_for_children_access): New parameter
	WAS_TYPE.
	(c_number_of_children): Adjust.
	(c_describe_child): New parameter CFULL_EXPRESSION.
	Compute full expression.
	(c_value_of_child, c_type_of_child): Adjust.
	(cplus_number_of_children): Adjust.
	(cplus_describe_child): New parameter CFULL_EXPRESSION.
	Compute full expression.
	(cplus_name_of_child, cplus_value_of_child)
	(cplus_type_of_child): Adjust.
	* varobj.h (varobj_get_path_expr): Declare.
2007-08-31 18:52:05 +00:00
Joel Brobecker
a9762ec78a Switch the license of all .c files to GPLv3.
Switch the license of all .h files to GPLv3.
        Switch the license of all .cc files to GPLv3.
2007-08-23 18:08:50 +00:00
Michael Snyder
74dddad306 2007-08-17 Michael Snyder <msnyder@access-company.com>
* varobj.c (value_of_root): Memory leak.
2007-08-17 23:17:30 +00:00
Michael Snyder
348144bad4 2007-08-14 Michael Snyder <msnyder@access-company.com>
* varobj.c (cplus_describe_child): Guard against null.
	Use "NULL" instead of "0" to initialize pointers.
2007-08-14 18:26:46 +00:00
Michael Snyder
6225abfaac 2007-08-08 Michael Snyder <msnyder@access-company.com>
* varobj.c (value_of_root): Move alloc after return to avoid leak.
2007-08-08 21:46:37 +00:00
Vladimir Prus
25d5ea921b * varobj.h (varobj_set_frozen): New
(varobj_get_frozen): New.
        (varobj_update): New parameter explicit.
        * varobj.c (struct varobj): New fields frozen
        and not_fetched.
        (varobj_set_frozen, varobj_get_frozen): New.
        (install_new_value): Don't fetch values for
        frozen variable object, or children thereof.  Allow
        a frozen variable object to have non-fetched value.
        (varobj_update): Allow updating child variables.
        Don't traverse frozen children.
        (new_variable): Initialize the frozen field.
        (c_value_of_variable): Return NULL for frozen
        variable without any value yet.
        * mi/mi-cmd-var.c (varobj_update_one): New parameter
        'explicit'.
        (mi_cmd_var_create): Output the 'frozen' field,
        as soon as testsuite is adjusted to expect that field.
        (mi_cmd_var_set_frozen): New.
        (mi_cmd_var_update): Pass the 'explicit' parameter to
        varobj_update_one.
        * mi/mi-cmds.c (mi_cmds): Register '-var-set-frozen'.
        * mi/mi-cmds.h (mi_cmd_var_set_frozen): Declare.
2007-04-14 09:51:30 +00:00
Vladimir Prus
e55dccf02d * varobj.c (varobj_create): Keep varobj value
NULL when evaluating the type.
2007-04-01 15:44:54 +00:00
Nick Roberts
93b979d682 (varobj_update): Free temporary vectors. 2007-02-27 23:27:47 +00:00
Nick Roberts
a1f42e84b8 (varobj_update): Remove unused local. Use gdb_assert
to check changelist is non-NULL.  Call error if the frontend tries
to update a non-root variable.
2007-02-27 22:00:39 +00:00
Daniel Jacobowitz
206415a3ea * frame.c (deprecated_selected_frame): Rename to...
(selected_frame): ...this.  Make static.
	(get_selected_frame, select_frame): Update.
	* frame.h (deprected_select_frame): Delete.
	(deprecated_safe_get_selected_frame): Update comments.

	* breakpoint.c, cli/cli-cmds.c, f-valprint.c, infcmd.c, inflow.c,
	infrun.c, stack.c, tui/tui-disasm.c, tui/tui-source.c,
	tui/tui-winsource.c, valops.c, varobj.c, findvar.c, macroscope.c,
	parse.c, regcache.h, sh64-tdep.c, tui/tui-hooks.c, tui/tui-win.c,
	tui/tui.c: Replace references to deprecated_selected_frame.
2007-02-27 19:46:04 +00:00
Denis Pilat
8756216bc7 2007-02-13 Denis Pilat <denis.pilat@st.com>
* varobj.h (enum varobj_update_error): New enum.
	* varobj.c (struct varobj_root): Add is_valid member.
	(varobj_get_type): Check for invalid varobj.
	(varobj_get_attributes): Likewise.
	(variable_editable):Likewise.
	(varobj_update): Likewise.  Use varobj_update_error.
	(new_root_variable): Set root varobj as valid by default.
	(varobj_invalidate): New function.
	* symfile.c (clear_symtab_users): Use varobj_invalidate.
	* mi/mi-cmd-var.c (varobj_update_one): Change return type to void.
	Use varobj_update_error.
2007-02-13 08:15:49 +00:00
Daniel Jacobowitz
7af9851d0d * varobj.c (install_new_value): Only call value_get_print_value
if changeable.
2007-02-08 17:39:48 +00:00
Vladimir Prus
85d93f1df0 * varobj.c (c_value_of_root, c_value_of_child)
(cplus_describe_child): Don't call release_value.
2007-01-24 19:54:13 +00:00
Vladimir Prus
2024f65ab8 Refactor getting children name, value and type access
for varobjs in C++.
        * varobj.c (get_type_deref): Remove.
        (adjust_value_for_child_access): New.
        (c_number_of_children): Use the above.
        (c_describe_child): Likewise.
        (enum accessibility): New.
        (match_accessibility): New function.
        (cplus_describe_child): New function.
        (cplus_name_of_child, cplus_value_of_child)
        (cplus_type_of_child): Reimplement in terms
        of cplus_describe_child.
        (cplus_number_of_children): Use
        adjust_value_for_child_access.
2007-01-24 11:08:47 +00:00
Vladimir Prus
6e2a9270a0 Fix computation of the 'editable' attribute and
value changeability for for references.
        * varobj.c (get_value_type): New function.
        (c_variable_editable): Use get_value_type.
        (varobj_value_is_changeable): Likewise.
2007-01-24 10:49:31 +00:00
Vladimir Prus
b20d8971ad Fix 'selected frame' varobjs.
* varobj.c (struct varobj): Remove the error field.
        (varobj_set_value): Don't check var->error.
        (install_new_value): Don't set var->error.
        (varobj_update): Always pass the new value
        of the root via install_new_value.
        (create_child): Don't set error field.
        (new_variable): Likewise.
        (c_value_of_root): Always reevaluate the value
        of selected frame varobjs in the selected frame.
        Don't call reinit_frame_cache.
2007-01-16 02:12:49 +00:00
Daniel Jacobowitz
6aba47ca06 Copyright updates for 2007. 2007-01-09 17:59:20 +00:00
Daniel Jacobowitz
57e6678071 * varobj.c (install_new_value): Always update print_value.
(value_get_print_value): Immediately return NULL for missing
	values.

	* gdb.mi/mi-var-cmd.exp: Expect lpcharacter to update when
	lcharacter or linteger change.  Correct duplicated test name.
	* gdb.mi/mi2-var-cmd.exp: Likewise.
2007-01-08 23:11:47 +00:00
Nick Roberts
2d43bda242 (c_value_of_root): Don't select frame if variable
object is out of scope.
2007-01-05 21:58:48 +00:00
Nick Roberts
8526541313 (struct varobj): New member print_value.
(install_new_value): Compare last printed value with current one
instead of contents.
(new_variable): Initialize var->print_value to NULL.
(free_variable): Free var->print_value.
(value_get_print_value): New function derived from
c_value_of_variable.
(c_value_of_variable): Use value_get_print_value.
2007-01-05 21:52:33 +00:00
Nick Roberts
0f0ac1f5fc (get_type_deref): Fix variable objects for references to
pointers.
2007-01-04 23:04:26 +00:00
Daniel Jacobowitz
5e572bb44a * Makefile.in (eval.o): Update dependencies.
* eval.c: Include "ui-out.h" and "exceptions.h".
	(evaluate_subexp_standard): Use TRY_CATCH around value_of_variable.
	Use value_zero if an error occurs when avoiding side effects.
	* varobj.c (c_value_of_root): Initialize new_val.

	* gdb.mi/mi-var-cmd.exp: Add tests for unreadable varobjs.
2007-01-04 21:59:10 +00:00
Daniel Jacobowitz
74a44383f0 * varobj.c (varobj_list_children): Stop if the number of children is
unknown.
	(c_number_of_children): Report no children for zero sized arrays.

	* lib/mi-support.exp (mi_runto_helper): Expect two prompts
	when continuing.
2007-01-04 21:55:04 +00:00
Vladimir Prus
bbec2603e4 Simplify access to variours properties of child
variable objects in C.
        * varobj.c (value_struct_element_index): New function.
        (c_describe_child): New function.
        (c_name_of_child, c_value_of_child)
        (c_type_of_child): Rewrite to use c_describe_child.
2007-01-04 19:27:50 +00:00
Vladimir Prus
28335dccfb gdb/
* varobj.c: Include "vec.h".
        (varobj_p): New typedef, declare vector of those.
        (struct varobj): Use vector for the 'children' member.
        (child_exists): Remove.
        (save_child_in_parent): Remove.
        (remove_child_from_parent): Remove.
        (struct varobj_child): Remove.
        (struct vstack): Remove.
        (vpush, vpop): Remove.
        (varobj_list_children): Adjust to work work vector.
        (varobj_update): Likewise. Use vectors for
        working stack and result.
        (delete_variable_1): Likewise.
        * Makefile.in (varobj.o): Update dependencies.
2007-01-04 19:16:52 +00:00
Vladimir Prus
b2c2bd757e Port from Apple's version.
gdb/
        * varobj.c (type_changeable): Rename to...
        (varobj_value_is_changeable_p): ...this. Adjust all callers.
        (is_root_p): New function. Use it everywhere.
2007-01-04 19:06:15 +00:00
Daniel Jacobowitz
d5d6fca504 Warning fixes.
* ada-lang.c (find_struct_field): Initialize *byte_offset_p.
	* breakpoint.c (do_enable_breakpoint): Ignore both mem_cnt and i.
	* c-typeprint.c (c_type_print_varspec_suffix): Don't test length
	greater than or equal to zero.
	* m2-typeprint.c (m2_array): Likewise.
	* p-typeprint.c (pascal_type_print_varspec_prefix): Likewise.
	* gdbtypes.c (copy_type_recursive): Correct == typo.
	* i386-tdep.c (i386_skip_prologue): Remove stray semicolon.
	* linux-nat.c (linux_nat_info_proc_cmd): Don't compare a pointer
	greater than zero.
	* macroscope.c (sal_macro_scope): Don't name a local variable "main".
	(default_macro_scope): Remove unused variable.
	* prologue-value.h (pv_area_find_reg): Don't name an argument
	"register".
	* remote-fileio.c (remote_fio_func_map): Add missing braces.
	* remote.c (sigint_remote_twice_token, sigint_remote_token): Change
	type.
	(cleanup_sigint_signal_handler): Remove casts.
	* valprint.c (val_print): Use a volatile local for the modified
	argument.
	* varobj.c (languages): Remove extra array dimension.
	(varobj_create): Correct access to languages array.
	* mi/mi-cmd-break.c (mi_cmd_break_insert, mi_cmd_break_watch): Add
	missing braces.
	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Likewise.
	* mi/mi-cmd-env.c (mi_cmd_env_path, mi_cmd_env_dir): Likewise.
	* mi/mi-getopt.c (mi_valid_noargs): Likewise.
	* mi/mi-main.c (mi_cmd_data_read_memory): Likewise.
	(mi_cmd_data_write_memory): Likewise.
	* signals/signals.c (target_signal_to_string): Cast to int before
	comparing.
	* tui/tui-layout.c (init_and_make_win): Take and return a void *.
	Update all callers.
2007-01-03 19:01:25 +00:00
Daniel Jacobowitz
0d5de0100f * NEWS: Mention pointer to member improvements.
* Makefile.in (gnu-v3-abi.o): Delete special rule.
	(eval.o, gnu-v3-abi.o, ia64-tdep.o): Update.
	* ada-valprint.c (ada_print_scalar): Update for new type codes.
	* c-typeprint.c (c_print_type): Update for new type codes.
	(c_type_print_varspec_prefix, c_type_print_varspec_suffix)
	(c_type_print_base): Likewise.
	(c_type_print_args): Rewrite.
	* c-valprint.c (c_val_print): Update for new type codes.  Remove
	support for references to members.  Treat methods like functions.
	* cp-abi.c (cplus_print_method_ptr, cplus_method_ptr_size)
	(cplus_make_method_ptr, cplus_method_ptr_to_value): New.
	* cp-abi.h (cplus_print_method_ptr, cplus_method_ptr_size)
	(cplus_make_method_ptr, cplus_method_ptr_to_value): New prototypes.
	(struct cp_abi_ops): Add corresponding members.
	* cp-valprint.c (cp_print_class_method): Delete.
	(cp_find_class_member): New function.
	(cp_print_class_member): Use it.  Simplify support for bogus
	member pointers.
	* dwarf2read.c (quirk_gcc_member_function_pointer): Use
	lookup_methodptr_type.
	(read_tag_ptr_to_member_type): Likewise, and lookup_memberptr_type.
	* eval.c (evaluate_subexp_standard): Implement EVAL_SKIP for
	OP_SCOPE.  Update call to value_aggregate_elt.  Rewrite member
	pointer support.
	(evaluate_subexp_for_address): Handle OP_SCOPE explicitly.  Handle
	references returned by user defined operators.
	* f-typeprint.c (f_print_type, f_type_print_varspec_prefix)
	(f_type_print_varspec_suffix): Remove support for member pointers.
	* gdbtypes.c (lookup_memberptr_type): Renamed from lookup_member_type
	and adjusted.
	(smash_to_memberptr_type): Likewise, from smash_to_member_type.
	(lookup_methodptr_type): New.
	(rank_one_type): Adjust for TYPE_CODE_MEMBERPTR.
	(recursive_dump_type): Update for new types.
	* gdbtypes.h (enum type_code): Replace TYPE_CODE_MEMBER with
	TYPE_CODE_MEMBERPTR and TYPE_CODE_METHODPTR.
	(lookup_memberptr_type, lookup_methodptr_type)
	(smash_to_memberptr_type): New prototypes.
	(smash_to_method_type): Formatting fix.
	(lookup_member_type, smash_to_member_type): Delete prototypes.
	* gnu-v3-abi.c (gnuv3_get_vtable, gnuv3_get_virtual_fn): New.
	Do not rely on debug information for the vptr or the method's
	enclosing type.  Handle function descriptors for IA64.
	(gnuv3_virtual_fn_field): Rewrite using the new functions.
	(gnuv3_find_method_in, gnuv3_print_method_ptr)
	(gnuv3_method_ptr_size, gnuv3_make_method_ptr)
	(gnuv3_method_ptr_to_value): New.
	(init_gnuv3_ops): Set new members of gnu_v3_abi_ops.
	* hpread.c (hpread_type_lookup): Update for new types.
	* infcall.c (value_arg_coerce): Likewise.
	* m2-typeprint.c (m2_print_type): Remove explicit support
	for member pointers.
	* m2-valprint.c (m2_val_print): Likewise.
	* p-typeprint.c (pascal_type_print_varspec_prefix)
	(pascal_type_print_varspec_suffix, pascal_type_print_base): Likewise.
	* p-valprint.c (pascal_val_print): Likewise.
	(pascal_object_print_class_method, pascal_object_print_class_member):
	Delete.
	* p-lang.h (pascal_object_print_class_method)
	(pascal_object_print_class_member): Delete prototypes.
	* stabsread.c (read_type): Update for new types.
	* typeprint.c (print_type_scalar): Likewise.
	* valops.c (value_struct_elt_for_reference, value_namespace_elt)
	(value_maybe_namespace_elt, value_aggregate_elt): Add want_address
	argument.  Construct a pointer to member if the address of a
	function or data member is requested.
	(value_cast_pointers): Don't modify the input value.
	(value_cast): Adjust pointer to member handling for new types.
	Allow null pointer to member constants.  Don't modify the input
	value.
	(value_ind): Remove pointer to member check.  Handle function
	descriptors for function pointers.
	(value_struct_elt, value_find_oload_method_list, check_field):
	Remove pointer to member checks.
	* value.c (unpack_long): Allow pointers to data members.
	(value_from_longest): Allow member pointers.
	* value.h (value_aggregate_elt): Add want_address.
	* varobj.c (c_variable_editable): Remove check for members.
	* gdbarch.sh: Add vtable_function_descriptors and vbit_in_delta.
	* ia64-tdep.c (ia64_convert_from_func_ptr_addr): Handle descriptors
	in virtual tables.
	(ia64_gdbarch_init): Call set_gdbarch_vtable_function_descriptors.
	* c-lang.h (cp_print_class_method): Delete prototype.
	* arm-tdep.c (arm_gdbarch_init): Call set_gdbarch_vbit_in_delta.
	* mips-tdep.c (mips_gdbarch_init): Likewise.
	* gdbarch.c, gdbarch.h: Regenerated.

	* gdb.cp/classes.exp (test_pointers_to_class_members): Update expected
	output.  Test the types of members and member pointers.
	* gdb.cp/inherit.exp (test_print_mi_member_types): Remove KFAILs for
	gdb/2092.
	* gdb.cp/member-ptr.exp: Search for a comment instead of a
	statement.  Enable for GCC.  Update expected output for some tests
	and add new tests.  Remove obsolete GCC KFAILs.  Allow GCC's class
	layout.
	* gdb.cp/member-ptr.cc (Padding, Padding::vspacer, Base, Base::get_x)
	(Base::vget_base, Left, Left::vget, Right, Right::vget, Diamond)
	(Diamond::vget_base): New.
	(main): Add new tests.
	* gdb.cp/printmethod.exp: Update expected output for member functions.
	* gdb.cp/virtfunc.exp (test_virtual_calls): Add a KFAIL for
	print pEe->D::vg().
2007-01-03 18:05:45 +00:00
Nick Roberts
d235392457 Include block.h.
(c_value_of_root): Check scope within nested statements.
2007-01-01 12:01:04 +00:00
Nick Roberts
0d2bd018fd (varobj_update): Ensure frame is restored when
variable object is out of scope.
2006-12-08 22:06:04 +00:00
Vladimir Prus
b26ed50ddf 2006-12-08 Vladimir Prus <vladimir@codesourcery.com>
* varobj.c (varobj_create): Don't call release_value.
        (varobj_set_value): Likewise.
        (install_new_value): Call coerce_ref and release_value
        on the value. Add asserts.
2006-12-08 12:44:11 +00:00
Vladimir Prus
4ae4f4fb15 2006-12-06 Vladimir Prus <vladimir@codesourcery.com>
* varobj.c (cplus_value_of_child): When accessing
        base suboject, don't specially process references.
2006-12-06 09:01:50 +00:00
Vladimir Prus
ae09783548 2006-11-29 Vladimir Prus <vladimir@codesourcery.com>
* varobj.c (varobj_set_value): Don't compare the old
        and the new value here.  Don't assign new value here.
        Instead, call install_new_value.
2006-11-29 06:41:13 +00:00
Vladimir Prus
acd65feb7e 2006-11-28 Vladimir Prus <vladimir@codesourcery.com>
Fetch varobj values from memory in a single place,
        and only fetch the values that are really needed.
        * varobj.c (struct varobj): Clarify comment.
        (my_value_equal): Remove.
        (install_new_value): New function.
        (type_of_child): Remove.
        (varobj_create): Use install_new_value.
        (varobj_set_value): Use value_contents_equal, not
        my_value_equal.
        (varobj_update): Use install_new_value.
        (create_child): Likewise. Inline type_of_child here.
        (value_of_child): Don't fetch the value.
        (c_value_of_root): Likewise.
        (c_value_of_variable): Likewise.
        (type_changeable): Improve comments.
2006-11-28 17:23:10 +00:00
Jim Blandy
14b3d9c967 gdb/ChangeLog:
2006-05-03  Vladimir Prus  <ghost@cs.msu.su>

       * varobj.c (c_value_of_variable): Ignore top-level references.
       (Committed by Jim Blandy.)
2006-05-03 22:59:38 +00:00
Nick Roberts
7a24eb7c24 (c_name_of_child, c_value_of_child): Allow non-zero
offsets for languages like Fortran.
2006-03-27 00:15:22 +00:00