diff options
author | Per Bothner <per@bothner.com> | 1992-03-20 21:57:17 +0000 |
---|---|---|
committer | Per Bothner <per@bothner.com> | 1992-03-20 21:57:17 +0000 |
commit | 01be69139ed994faaf4119d193bec3816e4c9a09 (patch) | |
tree | 5e5099cdfa7f5bba0f559b85cbc86453891f6e37 /gdb/value.h | |
parent | 52963fb7e9af7fc83cbdad45299edaf2dc9cc59a (diff) | |
download | gdb-01be69139ed994faaf4119d193bec3816e4c9a09.zip gdb-01be69139ed994faaf4119d193bec3816e4c9a09.tar.gz gdb-01be69139ed994faaf4119d193bec3816e4c9a09.tar.bz2 |
More C++ improvements (pointers to members, qualified names). See ChangeLog.
Diffstat (limited to 'gdb/value.h')
-rw-r--r-- | gdb/value.h | 446 |
1 files changed, 324 insertions, 122 deletions
diff --git a/gdb/value.h b/gdb/value.h index a6840d1..7333578 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -19,6 +19,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #if !defined (VALUE_H) #define VALUE_H 1 + /* * The structure which defines the type of a value. It should never * be possible for a program lval value to survive over a call to the inferior @@ -120,7 +121,9 @@ typedef struct value *value; #define VALUE_CONTENTS_RAW(val) ((char *) (val)->aligner.contents) #define VALUE_CONTENTS(val) ((void)(VALUE_LAZY(val) && value_fetch_lazy(val)),\ VALUE_CONTENTS_RAW(val)) -extern int value_fetch_lazy (); +extern int +value_fetch_lazy PARAMS ((value val)); + #define VALUE_LVAL(val) (val)->lval #define VALUE_ADDRESS(val) (val)->location.address #define VALUE_INTERNALVAR(val) (val)->location.internalvar @@ -178,124 +181,287 @@ struct internalvar char *name; value value; }; + #include "symtab.h" -LONGEST value_as_long ( -#ifdef __STDC__ - value -#endif - ); -double value_as_double ( -#ifdef __STDC__ - value -#endif - ); -CORE_ADDR value_as_pointer ( -#ifdef __STDC__ - value -#endif - ); -LONGEST unpack_long ( -#ifdef __STDC__ - struct type *, char * -#endif - ); -double unpack_double ( -#ifdef __STDC__ - struct type *, char *, int * -#endif - ); -CORE_ADDR unpack_pointer ( +#include "gdbtypes.h" +#include "expression.h" + #ifdef __STDC__ - struct type *, char * +struct frame_info; #endif - ); -long unpack_field_as_long (); -value value_from_longest (); -value value_from_double (); -value value_at (); -value value_at_lazy (); -value value_from_register (); -value value_of_variable (); -value value_of_register (); -value read_var_value (); -value locate_var_value (); -value allocate_value (); -value allocate_repeat_value (); -value value_mark (); -void value_free_to_mark (); -value value_string (); - -value value_binop (); -value value_add (); -value value_sub (); -value value_coerce_array (); -value value_coerce_function (); -value value_ind (); -value value_addr (); -value value_assign (); -value value_neg (); -value value_lognot (); -value value_struct_elt (), value_struct_elt_for_address (); -value value_field (), value_primitive_field (); -value value_cast (); -value value_zero (); -value value_repeat (); -value value_subscript (); -value value_from_vtable_info (); - -value value_being_returned (); -int using_struct_return (); -void set_return_value (); - -value evaluate_expression (); -value evaluate_type (); -value parse_and_eval (); -value parse_to_comma_and_eval (); -struct type *parse_and_eval_type (); -extern CORE_ADDR parse_and_eval_address (); -extern CORE_ADDR parse_and_eval_address_1 (); - -value access_value_history (); -value value_of_internalvar (); -void set_internalvar (); -void set_internalvar_component (); -struct internalvar *lookup_internalvar (); - -int value_equal (); -int value_less (); -int value_zerop (); + +extern void +print_address_demangle PARAMS ((CORE_ADDR, FILE *, int)); + +extern LONGEST +value_as_long PARAMS ((value val)); + +extern double +value_as_double PARAMS ((value val)); + +extern CORE_ADDR +value_as_pointer PARAMS ((value val)); + +extern LONGEST +unpack_long PARAMS ((struct type *type, char *valaddr)); + +extern double +unpack_double PARAMS ((struct type *type, char *valaddr, int *invp)); + +extern CORE_ADDR +unpack_pointer PARAMS ((struct type *type, char *valaddr)); + +extern long +unpack_field_as_long PARAMS ((struct type *type, char *valaddr, + int fieldno)); + +extern value +value_from_longest PARAMS ((struct type *type, LONGEST num)); + +extern value +value_from_double PARAMS ((struct type *type, double num)); + +extern value +value_at PARAMS ((struct type *type, CORE_ADDR addr)); + +extern value +value_at_lazy PARAMS ((struct type *type, CORE_ADDR addr)); + +/* FIXME: Assumes equivalence of "struct frame_info *" and "FRAME" */ +extern value +value_from_register PARAMS ((struct type *type, int regnum, + struct frame_info * frame)); + +extern value +value_of_variable PARAMS ((struct symbol *var)); + +extern value +value_of_register PARAMS ((int regnum)); + +/* FIXME: Assumes equivalence of "struct frame_info *" and "FRAME" */ +extern value +read_var_value PARAMS ((struct symbol *var, struct frame_info *frame)); + +/* FIXME: Assumes equivalence of "struct frame_info *" and "FRAME" */ +extern value +locate_var_value PARAMS ((struct symbol *var, struct frame_info *frame)); + +extern value +allocate_value PARAMS ((struct type *type)); + +extern value +allocate_repeat_value PARAMS ((struct type *type, int count)); + +extern value +value_mark PARAMS ((void)); + +extern void +value_free_to_mark PARAMS ((value mark)); + +extern value +value_string PARAMS ((char *ptr, int len)); + +extern value +value_binop PARAMS ((value arg1, value arg2, enum exp_opcode op)); + +extern value +value_add PARAMS ((value arg1, value arg2)); + +extern value +value_sub PARAMS ((value arg1, value arg2)); + +extern value +value_coerce_array PARAMS ((value arg1)); + +extern value +value_coerce_function PARAMS ((value arg1)); + +extern value +value_ind PARAMS ((value arg1)); + +extern value +value_addr PARAMS ((value arg1)); + +extern value +value_assign PARAMS ((value toval, value fromval)); + +extern value +value_neg PARAMS ((value arg1)); + +extern value +value_lognot PARAMS ((value arg1)); + +extern value +value_struct_elt PARAMS ((value *argp, value *args, char *name, + int *static_memfuncp, char *err)); + +extern value +value_struct_elt_for_reference PARAMS ((struct type *domain, + struct type *curtype, + char *name, + struct type *intype)); + +extern value +value_field PARAMS ((value arg1, int fieldno)); + +extern value +value_primitive_field PARAMS ((value arg1, int offset, int fieldno, + struct type *arg_type)); + +extern value +value_cast PARAMS ((struct type *type, value arg2)); + +extern value +value_zero PARAMS ((struct type *type, enum lval_type lv)); + +extern value +value_repeat PARAMS ((value arg1, int count)); + +extern value +value_subscript PARAMS ((value array, value idx)); + +extern value +value_from_vtable_info PARAMS ((value arg, struct type *type)); + +extern value +value_being_returned PARAMS ((struct type *valtype, + char retbuf[REGISTER_BYTES], + int struct_return)); + +extern int +using_struct_return PARAMS ((value function, CORE_ADDR funcaddr, + struct type *value_type, int gcc_p)); + +extern void +set_return_value PARAMS ((value val)); + +extern value +evaluate_expression PARAMS ((struct expression *exp)); + +extern value +evaluate_type PARAMS ((struct expression *exp)); + +extern value +parse_and_eval PARAMS ((char *exp)); + +extern value +parse_to_comma_and_eval PARAMS ((char **expp)); + +extern struct type * +parse_and_eval_type PARAMS ((char *p, int length)); + +extern CORE_ADDR +parse_and_eval_address PARAMS ((char *exp)); + +extern CORE_ADDR +parse_and_eval_address_1 PARAMS ((char **expptr)); + +extern value +access_value_history PARAMS ((int num)); + +extern value +value_of_internalvar PARAMS ((struct internalvar *var)); + +extern void +set_internalvar PARAMS ((struct internalvar *var, value val)); + +extern void +set_internalvar_component PARAMS ((struct internalvar *var, int offset, + int bitpos, int bitsize, + value newvalue)); + +extern struct internalvar * +lookup_internalvar PARAMS ((char *name)); + +extern int +value_equal PARAMS ((value arg1, value arg2)); + +extern int +value_less PARAMS ((value arg1, value arg2)); + +extern int +value_zerop PARAMS ((value arg1)); /* C++ */ -value value_of_this (); -value value_static_field (); -value value_x_binop (); -value value_x_unop (); -value value_fn_field (); -value value_virtual_fn_field (); -int binop_user_defined_p (); -int unop_user_defined_p (); -int typecmp (); -void fill_in_vptr_fieldno (); -int destructor_name_p (); + +extern value +value_of_this PARAMS ((int complain)); + +extern value +value_x_binop PARAMS ((value arg1, value arg2, enum exp_opcode op, + enum exp_opcode otherop)); + +extern value +value_x_unop PARAMS ((value arg1, enum exp_opcode op)); + +extern value +value_fn_field PARAMS ((struct fn_field *f, int j)); + +extern value +value_virtual_fn_field PARAMS ((value arg1, struct fn_field *f, int j, + struct type *type)); + +extern int +binop_user_defined_p PARAMS ((enum exp_opcode op, value arg1, value arg2)); + +extern int +unop_user_defined_p PARAMS ((enum exp_opcode op, value arg1)); + +extern int +typecmp PARAMS ((int staticp, struct type *t1[], value t2[])); + +extern int +destructor_name_p PARAMS ((const char *name, const struct type *type)); #define value_free(val) free (val) -void free_all_values (); -void release_value (); -int record_latest_value (); - -void registers_changed (); -void read_register_bytes (); -void write_register_bytes (); -void read_register_gen (); -CORE_ADDR read_register (); -void write_register (); -void supply_register (); -void get_saved_register (); - -void modify_field (); -void type_print (); -void type_print_1 (); + +extern void +free_all_values PARAMS ((void)); + +extern void +release_value PARAMS ((value val)); + +extern int +record_latest_value PARAMS ((value val)); + +extern void +registers_changed PARAMS ((void)); + +extern void +read_register_bytes PARAMS ((int regbyte, char *myaddr, int len)); + +extern void +write_register_bytes PARAMS ((int regbyte, char *myaddr, int len)); + +extern void +read_register_gen PARAMS ((int regno, char *myaddr)); + +extern CORE_ADDR +read_register PARAMS ((int regno)); + +extern void +write_register PARAMS ((int regno, int val)); + +extern void +supply_register PARAMS ((int regno, char *val)); + +/* FIXME: Assumes equivalence of "struct frame_info *" and "FRAME" */ +extern void +get_saved_register PARAMS ((char *raw_buffer, int *optimized, + CORE_ADDR *addrp, struct frame_info *frame, + int regnum, enum lval_type *lval)); + +extern void +modify_field PARAMS ((char *addr, int fieldval, int bitpos, int bitsize)); + +extern void +type_print PARAMS ((struct type *type, char *varstring, FILE *stream, + int show)); + +extern void +type_print_1 PARAMS ((struct type *type, char *varstring, FILE *stream, + int show, int level)); /* Possibilities for prettyprint parameters to routines which print things. */ @@ -306,17 +472,53 @@ enum val_prettyprint { Val_pretty_default }; -char *baseclass_addr (); -void print_floating (); -int value_print (); -int val_print (); -void print_variable_value (); -void typedef_print (); -char *internalvar_name (); -void clear_value_history (); -void clear_internalvars (); +extern char * +baseclass_addr PARAMS ((struct type *type, int index, char *valaddr, + value *valuep, int *errp)); + +extern void +print_floating PARAMS ((char *valaddr, struct type *type, FILE *stream)); + +extern int +value_print PARAMS ((value val, FILE *stream, int format, + enum val_prettyprint pretty)); + +extern int +val_print PARAMS ((struct type *type, char *valaddr, CORE_ADDR address, + FILE *stream, int format, int deref_ref, + int recurse, enum val_prettyprint pretty)); + +/* FIXME: Assumes equivalence of "struct frame_info *" and "FRAME" */ +extern void +print_variable_value PARAMS ((struct symbol *var, struct frame_info *frame, + FILE *stream)); + +extern value +value_arg_coerce PARAMS ((value)); + +extern int +check_field PARAMS ((value, const char *)); + +extern void +typedef_print PARAMS ((struct type *type, struct symbol *new, FILE *stream)); + +extern char * +internalvar_name PARAMS ((struct internalvar *var)); + +extern void +clear_value_history PARAMS ((void)); + +extern void +clear_internalvars PARAMS ((void)); + +/* From values.c */ + +extern value +value_copy PARAMS ((value)); + +/* From valops.c */ extern value -call_function_by_hand PARAMS ((value, int value *)); +call_function_by_hand PARAMS ((value, int, value *)); -#endif /* value.h not already included. */ +#endif /* !defined (VALUE_H) */ |