diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/nodes/pg_list.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/include/nodes/pg_list.h b/src/include/nodes/pg_list.h index 9df7fb30d30..3313b051cec 100644 --- a/src/include/nodes/pg_list.h +++ b/src/include/nodes/pg_list.h @@ -183,6 +183,20 @@ list_length(const List *l) (cell1) = lnext(cell1), (cell2) = lnext(cell2)) /* + * for_both_cell - + * a convenience macro which loops through two lists starting from the + * specified cells of each. This macro loops through both lists at the same + * time, stopping when either list runs out of elements. Depending on the + * requirements of the call site, it may also be wise to assert that the + * lengths of the two lists are equal, and initcell1 and initcell2 are at + * the same position in the respective lists. + */ +#define for_both_cell(cell1, initcell1, cell2, initcell2) \ + for ((cell1) = (initcell1), (cell2) = (initcell2); \ + (cell1) != NULL && (cell2) != NULL; \ + (cell1) = lnext(cell1), (cell2) = lnext(cell2)) + +/* * forthree - * the same for three lists */ |
