[augeas-devel] [PATCH 11/16] * src/put.c: put/create for recursive lenses
lutter at redhat.com
lutter at redhat.com
Wed Dec 23 21:31:00 UTC 2009
From: David Lutterkort <lutter at redhat.com>
---
src/put.c | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/src/put.c b/src/put.c
index 2b4e60f..16026cd 100644
--- a/src/put.c
+++ b/src/put.c
@@ -409,6 +409,8 @@ static int skel_instance_of(struct lens *lens, struct skel *skel) {
return 0;
}
return 1;
+ case L_REC:
+ return skel_instance_of(lens->body, skel);
default:
assert_error_at(__FILE__, __LINE__, lens->info,
"illegal lens tag %d", lens->tag);
@@ -554,6 +556,10 @@ static void put_store(struct lens *lens, struct state *state) {
}
}
+static void put_rec(struct lens *lens, struct state *state) {
+ put_lens(lens->body, state);
+}
+
static void put_lens(struct lens *lens, struct state *state) {
if (state->error != NULL)
return;
@@ -592,6 +598,9 @@ static void put_lens(struct lens *lens, struct state *state) {
case L_MAYBE:
put_quant_maybe(lens, state);
break;
+ case L_REC:
+ put_rec(lens, state);
+ break;
default:
assert(0);
break;
@@ -667,6 +676,10 @@ static void create_quant_maybe(struct lens *lens, struct state *state) {
}
}
+static void create_rec(struct lens *lens, struct state *state) {
+ create_lens(lens->body, state);
+}
+
static void create_lens(struct lens *lens, struct state *state) {
if (state->error != NULL)
return;
@@ -704,6 +717,9 @@ static void create_lens(struct lens *lens, struct state *state) {
case L_MAYBE:
create_quant_maybe(lens, state);
break;
+ case L_REC:
+ create_rec(lens, state);
+ break;
default:
assert(0);
break;
--
1.6.5.2
More information about the augeas-devel
mailing list