Commit | Line | Data |
---|---|---|
c44af4eb TT |
1 | /* Rust language support definitions for GDB, the GNU debugger. |
2 | ||
42a4f53d | 3 | Copyright (C) 2016-2019 Free Software Foundation, Inc. |
c44af4eb TT |
4 | |
5 | This file is part of GDB. | |
6 | ||
7 | This program is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 3 of the License, or | |
10 | (at your option) any later version. | |
11 | ||
12 | This program is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
19 | ||
20 | #ifndef RUST_LANG_H | |
21 | #define RUST_LANG_H | |
22 | ||
23 | struct parser_state; | |
24 | struct type; | |
25 | ||
26 | /* The la_parser implementation for Rust. */ | |
27 | extern int rust_parse (struct parser_state *); | |
28 | ||
c44af4eb | 29 | /* Return true if TYPE is a tuple type; otherwise false. */ |
65c40c95 | 30 | extern bool rust_tuple_type_p (struct type *type); |
c44af4eb TT |
31 | |
32 | /* Return true if TYPE is a tuple struct type; otherwise false. */ | |
65c40c95 | 33 | extern bool rust_tuple_struct_type_p (struct type *type); |
c44af4eb | 34 | |
03c85b11 TT |
35 | /* Given a block, find the name of the block's crate. Returns an empty |
36 | stringif no crate name can be found. */ | |
37 | extern std::string rust_crate_for_block (const struct block *block); | |
c44af4eb | 38 | |
c9317f21 TT |
39 | /* Returns the last segment of a Rust path like foo::bar::baz. Will |
40 | not handle cases where the last segment contains generics. */ | |
41 | ||
42 | extern const char *rust_last_path_segment (const char *path); | |
43 | ||
c44af4eb TT |
44 | /* Create a new slice type. NAME is the name of the type. ELT_TYPE |
45 | is the type of the elements of the slice. USIZE_TYPE is the Rust | |
46 | "usize" type to use. The new type is allocated whereever ELT_TYPE | |
47 | is allocated. */ | |
888e3ddb TT |
48 | extern struct type *rust_slice_type (const char *name, struct type *elt_type, |
49 | struct type *usize_type); | |
c44af4eb TT |
50 | |
51 | #endif /* RUST_LANG_H */ |