Mercurial > hg > CbC > CbC_gcc
comparison gcc/spellcheck-tree.h @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* Find near-matches for identifiers. | |
2 Copyright (C) 2015-2017 Free Software Foundation, Inc. | |
3 | |
4 This file is part of GCC. | |
5 | |
6 GCC is free software; you can redistribute it and/or modify it under | |
7 the terms of the GNU General Public License as published by the Free | |
8 Software Foundation; either version 3, or (at your option) any later | |
9 version. | |
10 | |
11 GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GCC; see the file COPYING3. If not see | |
18 <http://www.gnu.org/licenses/>. */ | |
19 | |
20 #ifndef GCC_SPELLCHECK_TREE_H | |
21 #define GCC_SPELLCHECK_TREE_H | |
22 | |
23 #include "spellcheck.h" | |
24 | |
25 /* spellcheck-tree.c */ | |
26 | |
27 extern edit_distance_t | |
28 levenshtein_distance (tree ident_s, tree ident_t); | |
29 | |
30 extern tree | |
31 find_closest_identifier (tree target, const auto_vec<tree> *candidates); | |
32 | |
33 /* Specialization of edit_distance_traits for identifiers. */ | |
34 | |
35 template <> | |
36 struct edit_distance_traits<tree> | |
37 { | |
38 static size_t get_length (tree id) | |
39 { | |
40 gcc_assert (TREE_CODE (id) == IDENTIFIER_NODE); | |
41 return IDENTIFIER_LENGTH (id); | |
42 } | |
43 | |
44 static const char *get_string (tree id) | |
45 { | |
46 gcc_assert (TREE_CODE (id) == IDENTIFIER_NODE); | |
47 return IDENTIFIER_POINTER (id); | |
48 } | |
49 }; | |
50 | |
51 /* Specialization of edit_distance_traits for preprocessor macros. */ | |
52 | |
53 template <> | |
54 struct edit_distance_traits<cpp_hashnode *> | |
55 { | |
56 static size_t get_length (cpp_hashnode *hashnode) | |
57 { | |
58 return hashnode->ident.len; | |
59 } | |
60 | |
61 static const char *get_string (cpp_hashnode *hashnode) | |
62 { | |
63 return (const char *)hashnode->ident.str; | |
64 } | |
65 }; | |
66 | |
67 /* Specialization of best_match<> for finding the closest preprocessor | |
68 macro to a given identifier. */ | |
69 | |
70 class best_macro_match : public best_match<tree, cpp_hashnode *> | |
71 { | |
72 public: | |
73 best_macro_match (tree goal, edit_distance_t best_distance_so_far, | |
74 cpp_reader *reader); | |
75 }; | |
76 | |
77 #endif /* GCC_SPELLCHECK_TREE_H */ |