diff options
Diffstat (limited to 'libgrust/libproc_macro')
-rw-r--r-- | libgrust/libproc_macro/bridge.h | 35 | ||||
-rw-r--r-- | libgrust/libproc_macro/proc_macro.cc | 14 | ||||
-rw-r--r-- | libgrust/libproc_macro/proc_macro.h | 3 | ||||
-rw-r--r-- | libgrust/libproc_macro/registration.h | 6 |
4 files changed, 43 insertions, 15 deletions
diff --git a/libgrust/libproc_macro/bridge.h b/libgrust/libproc_macro/bridge.h new file mode 100644 index 0000000..47eedff --- /dev/null +++ b/libgrust/libproc_macro/bridge.h @@ -0,0 +1,35 @@ +// Copyright (C) 2023 Free Software Foundation, Inc. +// +// This file is part of the GNU Proc Macro Library. This library 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. + +// This library 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. +#ifndef BRIDGE_H +#define BRIDGE_H + +namespace ProcMacro { + +enum class BridgeState +{ + Available, + Unavailable, +}; + +} + +#endif /* ! BRIDGE_H */ diff --git a/libgrust/libproc_macro/proc_macro.cc b/libgrust/libproc_macro/proc_macro.cc index e05ec53..b1e108e 100644 --- a/libgrust/libproc_macro/proc_macro.cc +++ b/libgrust/libproc_macro/proc_macro.cc @@ -21,6 +21,7 @@ // <http://www.gnu.org/licenses/>. #include "proc_macro.h" +#include "bridge.h" namespace ProcMacro { @@ -52,17 +53,12 @@ Procmacro::make_bang (const char *name, BangMacro macro) extern "C" bool bridge_is_available () { - return __gccrs_proc_macro_is_available_fn (); -} - -bool -not_available () -{ - return false; + return __gccrs_proc_macro_is_available_fn + == ProcMacro::BridgeState::Available; } } // namespace ProcMacro ProcMacro::from_str_function_t __gccrs_proc_macro_from_str_fn = nullptr; -ProcMacro::is_available_function_t __gccrs_proc_macro_is_available_fn - = ProcMacro::not_available; +ProcMacro::is_available_t __gccrs_proc_macro_is_available_fn + = ProcMacro::BridgeState::Unavailable; diff --git a/libgrust/libproc_macro/proc_macro.h b/libgrust/libproc_macro/proc_macro.h index 077e1cb..60d9fcb 100644 --- a/libgrust/libproc_macro/proc_macro.h +++ b/libgrust/libproc_macro/proc_macro.h @@ -99,9 +99,6 @@ struct ProcmacroArray Procmacro *macros; }; -bool -not_available (); - extern "C" bool bridge_is_available (); diff --git a/libgrust/libproc_macro/registration.h b/libgrust/libproc_macro/registration.h index 7668863..0074e99 100644 --- a/libgrust/libproc_macro/registration.h +++ b/libgrust/libproc_macro/registration.h @@ -25,16 +25,16 @@ #include <string> #include "tokenstream.h" +#include "bridge.h" namespace ProcMacro { using from_str_function_t = ProcMacro::TokenStream (*) (std::string &, bool &); -using is_available_function_t = bool (*) (); +using is_available_t = ProcMacro::BridgeState; } // namespace ProcMacro extern "C" ProcMacro::from_str_function_t __gccrs_proc_macro_from_str_fn; -extern "C" ProcMacro::is_available_function_t - __gccrs_proc_macro_is_available_fn; +extern "C" ProcMacro::is_available_t __gccrs_proc_macro_is_available_fn; #endif /* !REGISTRATION_H */ |