]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgrust/libproc_macro_internal/ident.cc
Update copyright years.
[thirdparty/gcc.git] / libgrust / libproc_macro_internal / ident.cc
CommitLineData
767698ff 1// Copyright (C) 2023-2024 Free Software Foundation, Inc.
e8c656ff
PEP
2//
3// This file is part of the GNU Proc Macro Library. This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 3, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// Under Section 7 of GPL version 3, you are granted additional
15// permissions described in the GCC Runtime Library Exception, version
16// 3.1, as published by the Free Software Foundation.
17
18// You should have received a copy of the GNU General Public License and
19// a copy of the GCC Runtime Library Exception along with this program;
20// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
21// <http://www.gnu.org/licenses/>.
22#include "ident.h"
23
24#include <cstring>
25
e1121898 26namespace ProcMacro {
6a569f5c 27
e8c656ff 28extern "C" {
6a569f5c 29
e8c656ff 30Ident
f7af0b90 31Ident__new (FFIString str, Span span)
e8c656ff 32{
f7af0b90 33 return Ident::make_ident (str, span);
e8c656ff
PEP
34}
35
36Ident
f7af0b90 37Ident__new_raw (FFIString str, Span span)
e8c656ff 38{
f7af0b90 39 return Ident::make_ident (str, span, true);
e8c656ff
PEP
40}
41
42void
43Ident__drop (Ident *ident)
44{
c9534eb5 45 Ident::drop (ident);
e8c656ff
PEP
46}
47
48Ident
49Ident__clone (const Ident *ident)
50{
f4b2b28f
PEP
51 return ident->clone ();
52}
53}
54
55Ident
56Ident::clone () const
57{
f7af0b90 58 return {this->is_raw, value.clone (), this->span};
e8c656ff 59}
f4b2b28f
PEP
60
61Ident
4d950fa5 62Ident::make_ident (std::string str, Span span, bool raw)
f4b2b28f 63{
f7af0b90 64 return Ident::make_ident (FFIString::make_ffistring (str), span, raw);
f4b2b28f
PEP
65}
66
67Ident
f7af0b90 68Ident::make_ident (FFIString str, Span span, bool raw)
f4b2b28f 69{
f7af0b90 70 return {raw, str, span};
e8c656ff 71}
6a569f5c 72
c9534eb5
PEP
73void
74Ident::drop (Ident *ident)
75{
f7af0b90 76 FFIString::drop (&ident->value);
c9534eb5
PEP
77}
78
e1121898 79} // namespace ProcMacro