GCC Middle and Back End API Reference
selftest-logical-locations.h
Go to the documentation of this file.
1/* Concrete subclass of logical_locations::manager for use in selftests.
2 Copyright (C) 2024-2025 Free Software Foundation, Inc.
3 Contributed by David Malcolm <dmalcolm@redhat.com>.
4
5This file is part of GCC.
6
7GCC is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free
9Software Foundation; either version 3, or (at your option) any later
10version.
11
12GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15for more details.
16
17You should have received a copy of the GNU General Public License
18along with GCC; see the file COPYING3. If not see
19<http://www.gnu.org/licenses/>. */
20
21#ifndef GCC_DIAGNOSTICS_SELFTEST_LOGICAL_LOCATIONS_H
22#define GCC_DIAGNOSTICS_SELFTEST_LOGICAL_LOCATIONS_H
23
25
26/* The selftest code should entirely disappear in a production
27 configuration, hence we guard all of it with #if CHECKING_P. */
28
29#if CHECKING_P
30
31namespace diagnostics {
32namespace logical_locations {
33namespace selftest {
34
35/* Concrete subclass of logical_locations::manager for use in selftests. */
36
37class test_manager : public manager
38{
39public:
40 ~test_manager ();
41
42 const char *get_short_name (key) const final override;
43 const char *get_name_with_scope (key) const final override;
44 const char *get_internal_name (key) const final override;
45 kind get_kind (key) const final override;
46 label_text get_name_for_path_output (key) const final override;
47 key get_parent (key) const final override
48 {
49 return key ();
50 }
51
52 key
53 logical_location_from_funcname (const char *funcname);
54
55private:
56 struct item
57 {
58 item (kind kind_,
59 const char *name)
60 : m_kind (kind_),
61 m_name (name)
62 {
63 }
64
65 kind m_kind;
66 const char *m_name;
67 };
68
69 const item *
70 item_from_funcname (const char *funcname);
71
72 static const item *item_from_key (key k)
73 {
74 return k.cast_to<const item *> ();
75 }
76
77 hash_map<nofree_string_hash, item *> m_name_to_item_map;
78};
79
80} // namespace diagnostics::logical_locations::selftest
81} // namespace diagnostics::logical_locations::
82} // namespace diagnostics
83
84#endif /* #if CHECKING_P */
85
86#endif /* GCC_DIAGNOSTICS_SELFTEST_LOGICAL_LOCATIONS_H. */
Definition diagnostics/context.h:41
Definition coretypes.h:167
kind
Definition json.h:53