From 4f6989d3efadd50fb0c2728eeea57cfa9166e5a0 Mon Sep 17 00:00:00 2001
From: "Sven M. Hallberg" <pesco@khjk.org>
Date: Fri, 1 Jun 2012 20:00:10 +0200
Subject: [PATCH] enable h_indirect

---
 src/Makefile           | 3 ++-
 src/hammer.h           | 2 +-
 src/parsers/indirect.c | 4 ++--
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/Makefile b/src/Makefile
index 9c691242..cc08eee8 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -21,7 +21,8 @@ PARSERS := \
 	epsilon \
 	and \
 	not \
-	attr_bool
+	attr_bool \
+	indirect
 
 OUTPUTS := bitreader.o \
 	   hammer.o \
diff --git a/src/hammer.h b/src/hammer.h
index 62b56766..37ab9956 100644
--- a/src/hammer.h
+++ b/src/hammer.h
@@ -435,7 +435,7 @@ HParser *h_indirect();
  * Set the inner parser of an indirect. See comments on indirect for 
  * details.
  */
-void h_bind_indirect(HParser* indirect, HParser* inner);
+void h_bind_indirect(HParser* indirect, const HParser* inner);
 
 // Some debugging aids
 /**
diff --git a/src/parsers/indirect.c b/src/parsers/indirect.c
index 43657c3b..758116de 100644
--- a/src/parsers/indirect.c
+++ b/src/parsers/indirect.c
@@ -7,9 +7,9 @@ static const HParserVtable indirect_vt = {
   .parse = parse_indirect,
 };
 
-void h_bind_indirect(HParser* indirect, HParser* inner) {
+void h_bind_indirect(HParser* indirect, const HParser* inner) {
   assert_message(indirect->vtable == &indirect_vt, "You can only bind an indirect parser");
-  indirect->env = inner;
+  indirect->env = (void*)inner;
 }
 
 HParser* h_indirect() {
-- 
GitLab