Мы можем использовать vpi_scan следующим образом:
vpiHandle iter = vpi_iterate(property, handle);
if (iter)
while ( entry = vpi_scan(iter) )
/*code*/;
iter будет освобожден, когда vpi_scan () вернет NULL.
Но что, если мне нужно несколько раз просмотреть петлю? Есть ли способ сказать vpi_scan не освобождать итератор, чтобы я мог vpi_free_object, когда я закончу?
Я думаю, что могу решить проблему, используя дополнительный контейнер (для сбора и хранения всех записей), но действительно ли это необходимо?
EDIT:
1. Я не хотел бы вызывать vpi_iterate более одного раза, так как это может быть дорого.
2. Предположим, я иду с дополнительным контейнерным решением. Есть ли способ узнать количество записей в цикле vpi_scan без фактического сканирования в цикле? Это может упростить реализацию.