diff options
author | Ben Pfaff <blp@nicira.com> | 2010-11-17 14:25:33 -0800 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2010-12-06 09:59:30 -0800 |
commit | 772ec52b896380f23b587bea4a5bf18edd22449d (patch) | |
tree | 538b2fd44b01b331cbcca53c60d583627fcad329 /lib/classifier.h | |
parent | 7c9b00732c633ddd35b9d92fb9fa4c4f8e3ce390 (diff) |
util: Introduce ASSIGN_CONTAINER to make iteration macros easier to read.
Diffstat (limited to 'lib/classifier.h')
-rw-r--r-- | lib/classifier.h | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/lib/classifier.h b/lib/classifier.h index 5629fc02..76a3a5c0 100644 --- a/lib/classifier.h +++ b/lib/classifier.h @@ -135,20 +135,16 @@ struct cls_rule *cls_cursor_first(struct cls_cursor *); struct cls_rule *cls_cursor_next(struct cls_cursor *, struct cls_rule *); #define CLS_CURSOR_FOR_EACH(RULE, MEMBER, CURSOR) \ - for ((RULE) = OBJECT_CONTAINING(cls_cursor_first(CURSOR), \ - RULE, MEMBER); \ + for (ASSIGN_CONTAINER(RULE, cls_cursor_first(CURSOR), MEMBER); \ &(RULE)->MEMBER != NULL; \ - (RULE) = OBJECT_CONTAINING(cls_cursor_next(CURSOR, \ - &(RULE)->MEMBER), \ - RULE, MEMBER)) + ASSIGN_CONTAINER(RULE, cls_cursor_next(CURSOR, &(RULE)->MEMBER), \ + MEMBER)) #define CLS_CURSOR_FOR_EACH_SAFE(RULE, NEXT, MEMBER, CURSOR) \ - for ((RULE) = OBJECT_CONTAINING(cls_cursor_first(CURSOR), \ - RULE, MEMBER); \ + for (ASSIGN_CONTAINER(RULE, cls_cursor_first(CURSOR), MEMBER); \ (&(RULE)->MEMBER != NULL \ - ? ((NEXT) = OBJECT_CONTAINING(cls_cursor_next(CURSOR, \ - &(RULE)->MEMBER), \ - RULE, MEMBER), 1) \ + ? ASSIGN_CONTAINER(NEXT, cls_cursor_next(CURSOR, &(RULE)->MEMBER), \ + MEMBER) \ : 0); \ (RULE) = (NEXT)) |