diff --git a/src/internal.h b/src/internal.h index 29e451e0d..92142fbb9 100644 --- a/src/internal.h +++ b/src/internal.h @@ -269,12 +269,12 @@ upcast(dispatch_object_t dou) #if defined(_WIN32) #include #else -#include #include #ifdef __ANDROID__ #include #else #include +#include #endif /* __ANDROID__ */ #include #include diff --git a/src/shims.h b/src/shims.h index ea5e09812..22aa48645 100644 --- a/src/shims.h +++ b/src/shims.h @@ -31,9 +31,12 @@ #include #else // defined(_WIN32) #include "shims/generic_win_stubs.h" -#include "shims/generic_sys_queue.h" #endif // defined(_WIN32) +#if defined(_WIN32) || defined(__ANDROID__) +#include "shims/generic_sys_queue.h" +#endif + #ifdef __ANDROID__ #include "shims/android_stubs.h" #endif // __ANDROID__ diff --git a/src/shims/generic_sys_queue.h b/src/shims/generic_sys_queue.h index c6c658706..fd4ac1d48 100644 --- a/src/shims/generic_sys_queue.h +++ b/src/shims/generic_sys_queue.h @@ -110,6 +110,8 @@ struct type *le_prev; \ } +#define LIST_EMPTY(head) ((head)->lh_first == NULL) + #define LIST_FIRST(head) ((head)->lh_first) #define LIST_FOREACH(var, head, field) \ @@ -117,6 +119,15 @@ (var); \ (var) = LIST_NEXT((var), field)) +#define LIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = LIST_FIRST((head)); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_INIT(head) do { \ + LIST_FIRST((head)) = NULL; \ +} while (0) + #define LIST_NEXT(elm, field) ((elm)->field.le_next) #define LIST_REMOVE(elm, field) do { \