1 /* Helper routines for C++ support in GDB. 2 Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009 3 Free Software Foundation, Inc. 4 5 Contributed by MontaVista Software. 6 Namespace support contributed by David Carlton. 7 8 This file is part of GDB. 9 10 This program is free software; you can redistribute it and/or modify 11 it under the terms of the GNU General Public License as published by 12 the Free Software Foundation; either version 3 of the License, or 13 (at your option) any later version. 14 15 This program is distributed in the hope that it will be useful, 16 but WITHOUT ANY WARRANTY; without even the implied warranty of 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 GNU General Public License for more details. 19 20 You should have received a copy of the GNU General Public License 21 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 22 23 #ifndef CP_SUPPORT_H 24 #define CP_SUPPORT_H 25 26 /* We need this for 'domain_enum', alas... */ 27 28 #include "symtab.h" 29 30 /* Opaque declarations. */ 31 32 struct symbol; 33 struct obstack; 34 struct block; 35 struct objfile; 36 struct type; 37 struct demangle_component; 38 39 /* This struct is designed to store data from using directives. It 40 says that names from namespace IMPORT_SRC should be visible within 41 namespace IMPORT_DEST. IMPORT_DEST should always be a strict initial 42 substring of IMPORT_SRC. These form a linked list; NEXT is the next element 43 of the list. */ 44 45 struct using_direct 46 { 47 char *import_src; 48 char *import_dest; 49 struct using_direct *next; 50 }; 51 52 53 /* Functions from cp-support.c. */ 54 55 extern char *cp_canonicalize_string (const char *string); 56 57 extern char *cp_class_name_from_physname (const char *physname); 58 59 extern char *method_name_from_physname (const char *physname); 60 61 extern unsigned int cp_find_first_component (const char *name); 62 63 extern unsigned int cp_entire_prefix_len (const char *name); 64 65 extern char *cp_func_name (const char *full_name); 66 67 extern char *cp_remove_params (const char *demangled_name); 68 69 extern struct symbol **make_symbol_overload_list (const char *, 70 const char *); 71 72 extern struct type *cp_lookup_rtti_type (const char *name, 73 struct block *block); 74 75 /* Functions/variables from cp-namespace.c. */ 76 77 extern int cp_is_anonymous (const char *namespace); 78 79 extern void cp_add_using_directive (const char *dest, 80 const char *src); 81 82 extern struct using_direct *cp_add_using (const char *dest, 83 const char *src, 84 struct using_direct *next); 85 86 extern void cp_initialize_namespace (void); 87 88 extern void cp_finalize_namespace (struct block *static_block, 89 struct obstack *obstack); 90 91 extern void cp_set_block_scope (const struct symbol *symbol, 92 struct block *block, 93 struct obstack *obstack, 94 const char *processing_current_prefix, 95 int processing_has_namespace_info); 96 97 extern void cp_scan_for_anonymous_namespaces (const struct symbol *symbol); 98 99 extern struct symbol *cp_lookup_symbol_nonlocal (const char *name, 100 const char *linkage_name, 101 const struct block *block, 102 const domain_enum domain); 103 104 extern struct symbol *cp_lookup_symbol_namespace (const char *namespace, 105 const char *name, 106 const char *linkage_name, 107 const struct block *block, 108 const domain_enum domain); 109 110 extern struct type *cp_lookup_nested_type (struct type *parent_type, 111 const char *nested_name, 112 const struct block *block); 113 114 extern void cp_check_possible_namespace_symbols (const char *name, 115 struct objfile *objfile); 116 117 struct type *cp_lookup_transparent_type (const char *name); 118 119 /* Functions from cp-name-parser.y. */ 120 121 extern struct demangle_component *cp_demangled_name_to_comp 122 (const char *demangled_name, const char **errmsg); 123 124 extern char *cp_comp_to_string (struct demangle_component *result, 125 int estimated_len); 126 127 /* The list of "maint cplus" commands. */ 128 129 extern struct cmd_list_element *maint_cplus_cmd_list; 130 131 #endif /* CP_SUPPORT_H */ 132