summaryrefslogtreecommitdiff
path: root/lib/typesafe.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/typesafe.h')
-rw-r--r--lib/typesafe.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/typesafe.h b/lib/typesafe.h
index 6df3a07efe..0a4ed69e4e 100644
--- a/lib/typesafe.h
+++ b/lib/typesafe.h
@@ -23,19 +23,23 @@
#include <assert.h>
#include "compiler.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* generic macros for all list-like types */
-#define for_each(prefix, head, item) \
+#define frr_each(prefix, head, item) \
for (item = prefix##_first(head); item; \
item = prefix##_next(head, item))
-#define for_each_safe(prefix, head, item) \
+#define frr_each_safe(prefix, head, item) \
for (typeof(prefix##_next_safe(head, NULL)) prefix##_safe = \
prefix##_next_safe(head, \
(item = prefix##_first(head))); \
item; \
item = prefix##_safe, \
prefix##_safe = prefix##_next_safe(head, prefix##_safe))
-#define for_each_from(prefix, head, item, from) \
+#define frr_each_from(prefix, head, item, from) \
for (item = from, from = prefix##_next_safe(head, item); \
item; \
item = from, from = prefix##_next_safe(head, from))
@@ -850,6 +854,10 @@ extern void typesafe_skiplist_del(struct sskip_head *head,
const struct sskip_item *b));
extern struct sskip_item *typesafe_skiplist_pop(struct sskip_head *head);
+#ifdef __cplusplus
+}
+#endif
+
/* this needs to stay at the end because both files include each other.
* the resolved order is typesafe.h before typerb.h
*/