/* Declarations for C++ name lookup routines. Copyright (C) 2003-2018 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. GCC 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, or (at your option) any later version. GCC 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 GCC; see the file COPYING3. If not see . */ #ifndef GCC_CP_NAME_LOOKUP_H #define GCC_CP_NAME_LOOKUP_H #include "c-family/c-common.h" /* The type of dictionary used to map names to types declared at a given scope. */ typedef struct binding_table_s *binding_table; typedef struct binding_entry_s *binding_entry; /* The type of a routine repeatedly called by binding_table_foreach. */ typedef void (*bt_foreach_proc) (binding_entry, void *); struct GTY(()) binding_entry_s { binding_entry chain; tree name; tree type; }; /* These macros indicate the initial chains count for binding_table. */ #define SCOPE_DEFAULT_HT_SIZE (1 << 3) #define CLASS_SCOPE_HT_SIZE (1 << 3) #define NAMESPACE_ORDINARY_HT_SIZE (1 << 5) #define NAMESPACE_STD_HT_SIZE (1 << 8) #define GLOBAL_SCOPE_HT_SIZE (1 << 8) extern void binding_table_foreach (binding_table, bt_foreach_proc, void *); extern binding_entry binding_table_find (binding_table, tree);