(root)/
gcc-13.2.0/
gcc/
tree-logical-location.h
       1  /* Subclasses of logical_location with knowledge of "tree".
       2     Copyright (C) 2022-2023 Free Software Foundation, Inc.
       3     Contributed by David Malcolm <dmalcolm@redhat.com>.
       4  
       5  This file is part of GCC.
       6  
       7  GCC is free software; you can redistribute it and/or modify it under
       8  the terms of the GNU General Public License as published by the Free
       9  Software Foundation; either version 3, or (at your option) any later
      10  version.
      11  
      12  GCC is distributed in the hope that it will be useful, but WITHOUT ANY
      13  WARRANTY; without even the implied warranty of MERCHANTABILITY or
      14  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      15  for more details.
      16  
      17  You should have received a copy of the GNU General Public License
      18  along with GCC; see the file COPYING3.  If not see
      19  <http://www.gnu.org/licenses/>.  */
      20  
      21  #ifndef GCC_TREE_LOGICAL_LOCATION_H
      22  #define GCC_TREE_LOGICAL_LOCATION_H
      23  
      24  #include "logical-location.h"
      25  
      26  /* Abstract subclass of logical_location, with knowledge of "tree", but
      27     for no specific tree.  */
      28  
      29  class compiler_logical_location : public logical_location
      30  {
      31   protected:
      32    static const char *get_short_name_for_tree (tree);
      33    static const char *get_name_with_scope_for_tree (tree);
      34    static const char *get_internal_name_for_tree (tree);
      35    static enum logical_location_kind get_kind_for_tree (tree);
      36  };
      37  
      38  /* Concrete subclass of logical_location, with reference to a specific
      39     tree.  */
      40  
      41  class tree_logical_location : public compiler_logical_location
      42  {
      43  public:
      44    tree_logical_location (tree decl) : m_decl (decl) {}
      45  
      46    const char *get_short_name () const final override;
      47    const char *get_name_with_scope () const final override;
      48    const char *get_internal_name () const final override;
      49    enum logical_location_kind get_kind () const final override;
      50  
      51  private:
      52    tree m_decl;
      53  };
      54  
      55  /* Concrete subclass of logical_location, with reference to
      56     current_function_decl.  */
      57  
      58  class current_fndecl_logical_location : public compiler_logical_location
      59  {
      60  public:
      61    const char *get_short_name () const final override;
      62    const char *get_name_with_scope () const final override;
      63    const char *get_internal_name () const final override;
      64    enum logical_location_kind get_kind () const final override;
      65  };
      66  
      67  #endif /* GCC_TREE_LOGICAL_LOCATION_H.  */