[ovs-dev] [PATCH 1/3] ovsdb-idl: Add "safe" iterator macro to generated code.

Justin Pettit jpettit at nicira.com
Fri Apr 30 22:34:37 UTC 2010


From: Ben Pfaff <blp at nicira.com>

---
 ovsdb/ovsdb-idlc.in |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
index 6a0303d..c89048e 100755
--- a/ovsdb/ovsdb-idlc.in
+++ b/ovsdb/ovsdb-idlc.in
@@ -158,7 +158,14 @@ def printCIDLHeader(schemaFile):
         print '''
 const struct %(s)s *%(s)s_first(const struct ovsdb_idl *);
 const struct %(s)s *%(s)s_next(const struct %(s)s *);
-#define %(S)s_FOR_EACH(ROW, IDL) for ((ROW) = %(s)s_first(IDL); (ROW); (ROW) = %(s)s_next(ROW))
+#define %(S)s_FOR_EACH(ROW, IDL) \\
+        for ((ROW) = %(s)s_first(IDL); \\
+             (ROW); \\
+             (ROW) = %(s)s_next(ROW))
+#define %(S)s_FOR_EACH_SAFE(ROW, NEXT, IDL) \\
+        for ((ROW) = %(s)s_first(IDL); \\
+             (ROW) ? ((NEXT) = %(s)s_next(ROW), 1) : 0; \\
+             (ROW) = (NEXT))
 
 void %(s)s_delete(const struct %(s)s *);
 struct %(s)s *%(s)s_insert(struct ovsdb_idl_txn *);
-- 
1.7.0.3





More information about the dev mailing list