]>
Commit | Line | Data |
---|---|---|
b2e61dde MS |
1 | /* Process the ObjC-specific declarations and variables for |
2 | the Objective-C++ compiler. | |
99dee823 | 3 | Copyright (C) 2005-2021 Free Software Foundation, Inc. |
b2e61dde MS |
4 | Contributed by Ziemowit Laski <zlaski@apple.com> |
5 | ||
6 | This file is part of GCC. | |
7 | ||
8 | GCC is free software; you can redistribute it and/or modify it under | |
9 | the terms of the GNU General Public License as published by the Free | |
af84f9c5 | 10 | Software Foundation; either version 3, or (at your option) any later |
b2e61dde MS |
11 | version. |
12 | ||
13 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 | for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
af84f9c5 NC |
19 | along with GCC; see the file COPYING3. If not see |
20 | <http://www.gnu.org/licenses/>. */ | |
21 | ||
b2e61dde MS |
22 | |
23 | #ifndef GCC_OBJCP_DECL_H | |
24 | #define GCC_OBJCP_DECL_H | |
25 | ||
c2255bc4 AH |
26 | extern tree objcp_start_struct (location_t, enum tree_code, tree); |
27 | extern tree objcp_finish_struct (location_t, tree, tree, tree); | |
b2e61dde | 28 | extern void objcp_finish_function (void); |
b2e61dde MS |
29 | extern tree objcp_build_function_call (tree, tree); |
30 | extern tree objcp_xref_tag (enum tree_code, tree); | |
b2e61dde | 31 | extern int objcp_comptypes (tree, tree); |
b2e61dde MS |
32 | extern tree objcp_begin_compound_stmt (int); |
33 | extern tree objcp_end_compound_stmt (tree, int); | |
34 | ||
35 | /* Now "cover up" the corresponding C++ functions if required (NB: the | |
36 | OBJCP_ORIGINAL_FUNCTION macro, shown below, can still be used to | |
37 | invoke the original C++ functions if needed). */ | |
38 | #ifdef OBJCP_REMAP_FUNCTIONS | |
39 | ||
dc491a25 | 40 | #define start_struct(loc, code, name, struct_info) \ |
4b29c5e5 | 41 | objcp_start_struct (loc, code, name) |
dc491a25 | 42 | #define finish_struct(loc, t, fieldlist, attributes, struct_info) \ |
4b29c5e5 | 43 | objcp_finish_struct (loc, t, fieldlist, attributes) |
b2e61dde MS |
44 | #define finish_function() \ |
45 | objcp_finish_function () | |
4b29c5e5 AH |
46 | #define finish_decl(decl, loc, init, origtype, asmspec) \ |
47 | cp_finish_decl (decl, init, false, asmspec, 0) | |
b2e61dde MS |
48 | #define xref_tag(code, name) \ |
49 | objcp_xref_tag (code, name) | |
b2e61dde MS |
50 | #define comptypes(type1, type2) \ |
51 | objcp_comptypes (type1, type2) | |
52 | #define c_begin_compound_stmt(flags) \ | |
53 | objcp_begin_compound_stmt (flags) | |
c2255bc4 | 54 | #define c_end_compound_stmt(loc, stmt, flags) \ |
b2e61dde MS |
55 | objcp_end_compound_stmt (stmt, flags) |
56 | ||
57 | #undef OBJC_TYPE_NAME | |
9dba4b55 | 58 | #define OBJC_TYPE_NAME(type) (TYPE_IDENTIFIER (type)) |
b2e61dde | 59 | #undef OBJC_SET_TYPE_NAME |
9dba4b55 | 60 | #define OBJC_SET_TYPE_NAME(type, name) (TYPE_IDENTIFIER (type) = (name)) |
b2e61dde MS |
61 | |
62 | #undef TYPE_OBJC_INFO | |
63 | #define TYPE_OBJC_INFO(TYPE) LANG_TYPE_CLASS_CHECK (TYPE)->objc_info | |
64 | #undef SIZEOF_OBJC_TYPE_LANG_SPECIFIC | |
030cfa22 | 65 | #define SIZEOF_OBJC_TYPE_LANG_SPECIFIC sizeof (struct lang_type) |
b2e61dde | 66 | #undef ALLOC_OBJC_TYPE_LANG_SPECIFIC |
030cfa22 NS |
67 | #define ALLOC_OBJC_TYPE_LANG_SPECIFIC(NODE) \ |
68 | (TYPE_LANG_SPECIFIC (NODE) = (struct lang_type *) \ | |
69 | ggc_internal_cleared_alloc (SIZEOF_OBJC_TYPE_LANG_SPECIFIC)) | |
b2e61dde MS |
70 | |
71 | #define OBJCP_ORIGINAL_FUNCTION(name, args) (name)args | |
72 | ||
73 | /* C++ marks ellipsis-free function parameters differently from C. */ | |
74 | #undef OBJC_VOID_AT_END | |
75 | #define OBJC_VOID_AT_END void_list_node | |
76 | ||
77 | #endif /* OBJCP_REMAP_FUNCTIONS */ | |
78 | ||
79 | #endif /* ! GCC_OBJCP_DECL_H */ |