X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fcp-support.h;h=b6af5791e1c1273a0dddffd6b99b983117767d8a;hb=5a9e69ba86c842a7e4713ac27bb6fac1c6121006;hp=bcc9cf8e72cf3252aa98e56f3a180fb18ef2637a;hpb=b9362cc7a8079dd0809070cfd94e94097fa7b6d0;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/cp-support.h b/gdb/cp-support.h index bcc9cf8e72..b6af5791e1 100644 --- a/gdb/cp-support.h +++ b/gdb/cp-support.h @@ -1,5 +1,6 @@ /* Helper routines for C++ support in GDB. - Copyright 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008 + Free Software Foundation, Inc. Contributed by MontaVista Software. Namespace support contributed by David Carlton. @@ -8,7 +9,7 @@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -17,9 +18,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ #ifndef CP_SUPPORT_H #define CP_SUPPORT_H @@ -33,6 +32,9 @@ struct symbol; struct obstack; struct block; +struct objfile; +struct type; +struct demangle_component; /* This struct is designed to store data from using directives. It says that names from namespace INNER should be visible within @@ -50,7 +52,9 @@ struct using_direct /* Functions from cp-support.c. */ -extern char *class_name_from_physname (const char *physname); +extern char *cp_canonicalize_string (const char *string); + +extern char *cp_class_name_from_physname (const char *physname); extern char *method_name_from_physname (const char *physname); @@ -58,12 +62,19 @@ extern unsigned int cp_find_first_component (const char *name); extern unsigned int cp_entire_prefix_len (const char *name); +extern char *cp_func_name (const char *full_name); + +extern struct symbol **make_symbol_overload_list (const char *, + const char *); + +extern struct type *cp_lookup_rtti_type (const char *name, + struct block *block); /* Functions/variables from cp-namespace.c. */ extern unsigned char processing_has_namespace_info; -extern const char *processing_current_namespace; +extern const char *processing_current_prefix; extern int cp_is_anonymous (const char *namespace); @@ -95,4 +106,31 @@ extern struct symbol *cp_lookup_symbol_namespace (const char *namespace, const domain_enum domain, struct symtab **symtab); +extern struct type *cp_lookup_nested_type (struct type *parent_type, + const char *nested_name, + const struct block *block); + +extern void cp_check_possible_namespace_symbols (const char *name, + struct objfile *objfile); + +struct type *cp_lookup_transparent_type (const char *name); + +/* Functions from cp-name-parser.y. */ + +extern struct demangle_component *cp_demangled_name_to_comp + (const char *demangled_name, const char **errmsg); + +extern char *cp_comp_to_string (struct demangle_component *result, + int estimated_len); + +/* The list of "maint cplus" commands. */ + +extern struct cmd_list_element *maint_cplus_cmd_list; + +/* Pointer to member function. Depends on compiler implementation. */ + +#define METHOD_PTR_IS_VIRTUAL(ADDR) ((ADDR) & 0x80000000) +#define METHOD_PTR_FROM_VOFFSET(OFFSET) (0x80000000 + (OFFSET)) +#define METHOD_PTR_TO_VOFFSET(ADDR) (~0x80000000 & (ADDR)) + #endif /* CP_SUPPORT_H */