1
1

opal/class: add additional object helper functions

This commit adds two additional helpers to opal/class:

 - OPAL_HASH_TABLE_FOREACH_PTR: Same as OPAL_HASH_TABLE_FOREACH but
   operating on ptr hash tables. This is needed because the _ptr
   iterator functions take an additional argument.

 - OPAL_LIST_FOREACH_DECL: Same as OPAL_LIST_FOREACH but declares
   the variable specified in the first argument.

Signed-off-by: Nathan Hjelm <hjelmn@google.com>
Этот коммит содержится в:
Nathan Hjelm 2020-04-29 12:46:03 -06:00 коммит произвёл Jeff Squyres
родитель 1b6622f5d9
Коммит 3a036f8486
2 изменённых файлов: 12 добавлений и 0 удалений

Просмотреть файл

@ -486,6 +486,13 @@ OPAL_DECLSPEC int opal_proc_table_get_next_key(opal_proc_table_t *pt, opal_proce
for (void *_nptr=NULL; \
OPAL_SUCCESS == opal_hash_table_get_next_key_##type(ht, &key, (void **)&value, _nptr, &_nptr);)
#define OPAL_HASH_TABLE_FOREACH_PTR(key, value, ht, body) \
{ \
size_t key_size_; \
for (void *_nptr=NULL; \
OPAL_SUCCESS == opal_hash_table_get_next_key_ptr (ht, &key, &key_size_, (void **)&value, _nptr, &_nptr);) \
body \
}
END_C_DECLS
#endif /* OPAL_HASH_TABLE_H */

Просмотреть файл

@ -215,6 +215,11 @@ typedef struct opal_list_t opal_list_t;
item != (type *) &(list)->opal_list_sentinel ; \
item = (type *) ((opal_list_item_t *) (item))->opal_list_next)
#define OPAL_LIST_FOREACH_DECL(item, list, type) \
for (type *item = (type *) (list)->opal_list_sentinel.opal_list_next ; \
item != (type *) &(list)->opal_list_sentinel ; \
item = (type *) ((opal_list_item_t *) (item))->opal_list_next)
/**
* Loop over a list in reverse.
*