]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: libproc_macro: Add Punct struct
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Wed, 12 Apr 2023 12:24:43 +0000 (14:24 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:34:11 +0000 (18:34 +0100)
Add Punct struct for rust interface as well as a basic named
constructor.

libgrust/ChangeLog:

* libproc_macro/punct.cc: New file.
* libproc_macro/punct.h: New file.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
libgrust/libproc_macro/punct.cc [new file with mode: 0644]
libgrust/libproc_macro/punct.h [new file with mode: 0644]

diff --git a/libgrust/libproc_macro/punct.cc b/libgrust/libproc_macro/punct.cc
new file mode 100644 (file)
index 0000000..67d35fe
--- /dev/null
@@ -0,0 +1,34 @@
+// 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/>.
+
+#include "punct.h"
+#include <cstdlib>
+
+namespace Punct {
+
+Punct
+Punct::make_punct (std::uint32_t ch, Spacing spacing)
+{
+  return {ch, spacing};
+}
+
+} // namespace Punct
diff --git a/libgrust/libproc_macro/punct.h b/libgrust/libproc_macro/punct.h
new file mode 100644 (file)
index 0000000..0e5e42f
--- /dev/null
@@ -0,0 +1,47 @@
+// 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 PUNCT_H
+#define PUNCT_H
+
+#include <cstdint>
+
+namespace Punct {
+
+enum Spacing
+{
+  Alone,
+  Joint
+};
+
+struct Punct
+{
+  std::uint32_t ch;
+  Spacing spacing;
+
+public:
+  static Punct make_punct (std::uint32_t ch, Spacing spacing = Spacing::Alone);
+};
+
+} // namespace Punct
+
+#endif /* ! PUNCT_H */