diff options
author | Tom Tromey <tom@tromey.com> | 2021-03-21 11:07:28 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2022-04-12 09:31:15 -0600 |
commit | b2bc564fe817f857b4915903f16026472acfbdcc (patch) | |
tree | eb1dd6d22659e8cd209722ea9b778e1068c687c0 /gdb/split-name.h | |
parent | 073954a792b3911f07b1dd22a8e0ffcc89ed3080 (diff) | |
download | gdb-b2bc564fe817f857b4915903f16026472acfbdcc.zip gdb-b2bc564fe817f857b4915903f16026472acfbdcc.tar.gz gdb-b2bc564fe817f857b4915903f16026472acfbdcc.tar.bz2 |
Add name splitting
The new DWARF index code works by keeping names pre-split. That is,
rather than storing a symbol name like "a::b::c", the names "a", "b",
and "c" will be stored separately.
This patch introduces some helper code to split a full name into its
components.
Diffstat (limited to 'gdb/split-name.h')
-rw-r--r-- | gdb/split-name.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/gdb/split-name.h b/gdb/split-name.h new file mode 100644 index 0000000..c588b84 --- /dev/null +++ b/gdb/split-name.h @@ -0,0 +1,45 @@ +/* Split a symbol name. + + Copyright (C) 2022 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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, see <http://www.gnu.org/licenses/>. */ + +#ifndef GDB_SPLIT_NAME_H +#define GDB_SPLIT_NAME_H + +#include "gdbsupport/gdb_string_view.h" + +/* The available styles of name splitting. */ + +enum class split_style +{ + /* No splitting - C style. */ + NONE, + /* C++ style, with "::" and template parameter intelligence. */ + CXX, + /* Split at ".". Used by Ada, Go, D. */ + DOT, + /* Split at "__". Used by Ada encoded names. */ + UNDERSCORE, +}; + +/* Split NAME into components at module boundaries. STYLE indicates + which style of splitting to use. */ + +extern std::vector<gdb::string_view> split_name (const char *name, + split_style style); + +#endif /* GDB_SPLIT_NAME_H */ |