def vector_attribute_names_iterator(): attrn_p = pointer(POINTER(drmaa_attr_names_t)()) c(drmaa_get_vector_attribute_names, attrn_p) try: name = create_string_buffer(_BUFLEN) while drmaa_get_next_attr_name(attrn_p.contents, name, _BUFLEN) != NO_MORE_ELEMENTS: yield name.value.decode() except: drmaa_release_attr_names(attrn_p.contents) raise else: drmaa_release_attr_names(attrn_p.contents)