core: tweak line iterators
authorBartosz Golaszewski <bartekgola@gmail.com>
Wed, 4 Jan 2017 21:44:41 +0000 (22:44 +0100)
committerBartosz Golaszewski <bartekgola@gmail.com>
Wed, 4 Jan 2017 21:44:41 +0000 (22:44 +0100)
Some line iterator changes to keep them similar to chip iterators.

Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com>
gpiod.h
gpioinfo.c

diff --git a/gpiod.h b/gpiod.h
index 5792fbfd76f34ede364b8204997bd9b76bccce11..d223b1c068b25f7a453d4ce3d992563711bd6bf2 100644 (file)
--- a/gpiod.h
+++ b/gpiod.h
@@ -176,28 +176,31 @@ gpiod_chip_iter_next(struct gpiod_chip_iter *iter) GPIOD_API;
 
 struct gpiod_line_iter {
        unsigned int offset;
+       struct gpiod_chip *chip;
 };
 
-#define GPIOD_LINE_ITER_INITIALIZER    { 0 }
+#define GPIOD_LINE_ITER_INITIALIZER(chip)      { 0, (chip) }
 
-static inline void gpiod_line_iter_init(struct gpiod_line_iter *iter)
+static inline void gpiod_line_iter_init(struct gpiod_line_iter *iter,
+                                       struct gpiod_chip *chip)
 {
        iter->offset = 0;
+       iter->chip = chip;
 }
 
 static inline struct gpiod_line *
-gpiod_chip_line_next(struct gpiod_chip *chip, struct gpiod_line_iter *iter)
+gpiod_line_iter_next(struct gpiod_line_iter *iter)
 {
-       if (iter->offset >= gpiod_chip_num_lines(chip))
+       if (iter->offset >= gpiod_chip_num_lines(iter->chip))
                return NULL;
 
-       return gpiod_chip_get_line(chip, iter->offset++);
+       return gpiod_chip_get_line(iter->chip, iter->offset++);
 }
 
-#define gpiod_chip_foreach_line(iter, chip, line)                      \
-       for ((line) = gpiod_chip_line_next(chip, iter);                 \
+#define gpiod_foreach_line(iter, line)                                 \
+       for ((line) = gpiod_line_iter_next(iter);                       \
             (line);                                                    \
-            (line) = gpiod_chip_line_next(chip, iter))
+            (line) = gpiod_line_iter_next(iter))
 
 #ifdef __cplusplus
 } /* extern "C" */
index 327d34f55c55adfa74ea374b67e7eac844b51d1e..79a3b6a103059d81287b7edf56e0c4759d9b172d 100644 (file)
@@ -59,8 +59,8 @@ int main(int argc, char **argv)
                printf("%s - %u lines:\n",
                       gpiod_chip_name(chip), gpiod_chip_num_lines(chip));
 
-               gpiod_line_iter_init(&iter);
-               gpiod_chip_foreach_line(&iter, chip, line) {
+               gpiod_line_iter_init(&iter, chip);
+               gpiod_foreach_line(&iter, line) {
                        name = gpiod_line_name(line);
                        consumer = gpiod_line_consumer(line);
                        direction = gpiod_line_direction(line);