diff options
author | Akim Demaille <akim@lrde.epita.fr> | 2012-05-21 14:21:51 +0200 |
---|---|---|
committer | Akim Demaille <akim@lrde.epita.fr> | 2012-05-21 18:15:41 +0200 |
commit | 22172d473180c53755290f13ebd2d53e12e74fe0 (patch) | |
tree | 804555fc790cf45753ad437509d12f0177ed68cf /data/c.m4 | |
parent | a19728cbb5efdac48c97ef6e6c997f2534c03391 (diff) | |
download | bison-22172d473180c53755290f13ebd2d53e12e74fe0.tar.gz |
c++: compute the header guards.
This is a frequent request. Recently pointed out by Wei Song,
<http://lists.gnu.org/archive/html/help-bison/2012-05/msg00002.html>.
* data/c.m4 (b4_tocpp, b4_cpp_guard, b4_cpp_guard_open)
(b4_cpp_guard_close): New.
* data/lalr1.cc, data/location.cc, data/stack.hh: Use them.
* TODO (Header Guards): Move to...
* NEWS: here.
Formatting changes.
Diffstat (limited to 'data/c.m4')
-rw-r--r-- | data/c.m4 | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -17,6 +17,33 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. + +# b4_tocpp(STRING) +# ---------------- +# Convert STRING into a valid C macro name. +m4_define([b4_tocpp], +[m4_toupper(m4_bpatsubst(m4_quote($1), [[^a-zA-Z0-9]+], [_]))]) + + +# b4_cpp_guard(FILE) +# ------------------ +# A valid C macro name to use as a CPP header guard for FILE. +m4_define([b4_cpp_guard], +[b4_tocpp(m4_defn([b4_prefix])/[$1])]) + + +# b4_cpp_guard_open(FILE) +# b4_cpp_guard_close(FILE) +# ------------------------ +# Open/close CPP inclusion guards for FILE. +m4_define([b4_cpp_guard_open], +[#ifndef b4_cpp_guard([$1]) +# define b4_cpp_guard([$1])]) + +m4_define([b4_cpp_guard_close], +[#endif b4_comment([!b4_cpp_guard([$1])])]) + + ## ---------------- ## ## Identification. ## ## ---------------- ## |