1  /* Find near-matches for macros.
       2     Copyright (C) 2016-2023 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 C_SPELLCHECK_H
      21  #define C_SPELLCHECK_H
      22  
      23  #include "spellcheck.h"
      24  
      25  extern bool name_reserved_for_implementation_p (const char *str);
      26  
      27  /* Specialization of edit_distance_traits for preprocessor macros.  */
      28  
      29  template <>
      30  struct edit_distance_traits<cpp_hashnode *>
      31  {
      32    static size_t get_length (cpp_hashnode *hashnode)
      33    {
      34      return hashnode->ident.len;
      35    }
      36  
      37    static const char *get_string (cpp_hashnode *hashnode)
      38    {
      39      return (const char *)hashnode->ident.str;
      40    }
      41  };
      42  
      43  /* Specialization of best_match<> for finding the closest preprocessor
      44     macro to a given identifier.  */
      45  
      46  class best_macro_match : public best_match<tree, cpp_hashnode *>
      47  {
      48   public:
      49    best_macro_match (tree goal, edit_distance_t best_distance_so_far,
      50  		    cpp_reader *reader);
      51  };
      52  
      53  #endif  /* C_SPELLCHECK_H  */