[augeas-devel] augeas: master - * src/put.c: put/create for recursive lenses

David Lutterkort lutter at fedoraproject.org
Fri Jan 15 01:31:35 UTC 2010


Gitweb:        http://git.fedorahosted.org/git/augeas.git?p=augeas.git;a=commitdiff;h=34cfe80a33334141ac2a19d0239603794b662272
Commit:        34cfe80a33334141ac2a19d0239603794b662272
Parent:        a391169ac94d1111d2f9c44fbab3a968581ca912
Author:        David Lutterkort <lutter at redhat.com>
AuthorDate:    Wed Nov 11 16:09:14 2009 -0800
Committer:     David Lutterkort <lutter at redhat.com>
CommitterDate: Thu Jan 14 14:48:38 2010 -0800

* src/put.c: put/create for recursive lenses

---
 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;




More information about the augeas-devel mailing list