Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.6. Операции с блоками и связями

А.5.6.29. rdsGetIOBlockLink – очередная связь снаружи подсистемы по идентификатору внутреннего блока-входа или выхода

# Приложения

## Приложение А. Функции, константы и структуры RDS

### А.5. Сервисные функции и макросы RDS

#### А.5.6. Операции с блоками и связями

##### А.5.6.29. rdsGetIOBlockLink – очередная связь снаружи подсистемы по идентификатору внутреннего блока-входа или выхода

Функция rdsGetIOBlockLink возвращает идентификатор очередной (первой или следующей) связи, присоединенной к переменной подсистемы, соответствующей переданному в параметрах функции идентификатору блока-входа или выхода.

      RDS_CHANDLE RDSCALL rdsGetIOBlockLink(
        RDS_BHANDLE Block,              // Блок-вход или выход
        RDS_CHANDLE Conn,               // Предыдущая связь
        RDS_PPOINTDESCRIPTION pPoint    // Заполняемое описание точки
      );

Тип указателя на эту функцию

RDS_ChBhChPd

Параметры

Block(RDS_BHANDLE)
  Идентификатор внешнего входа или выхода, для которого нужно найти внешнюю связь.
Conn(RDS_CHANDLE)
  Идентификатор предыдущей найденной связи, если нужно найти следующую, или NULL, если нужно найти самую первую связь.
pPoint(RDS_PPOINTDESCRIPTION)
  Указатель на заполняемую функцией структуру описания точки соединения найденной связи с родительской подсистемой блока Block (RDS_POINTDESCRIPTION). Если вызывающей программе не нужно это описание, в этом параметре можно передать NULL.

Возвращаемое значение

Идентификатор найденной связи (RDS_CHANDLE) или NULL, если связь не найдена.

Примечания

Эта функция позволяет перебрать все связи, идущие к переменной подсистемы, соответствующей ее внутреннему блоку-внешнему входу или выходу Block. Чаще всего она используется для прослеживания связей наружу подсистемы в процессе программного анализа структуры схемы: обнаружив соединение какой-либо связи с блоком-входом или выходом, с помощью rdsGetIOBlockLink можно найти все связи, которые являются логическим продолжением этой связи снаружи подсистемы.

Для перебора всех наружных связей нужно сначала вызвать функцию с параметром Conn, равным NULL, для поиска самой первой связи, а затем вызывать ее в цикле, каждый раз передавая в параметре Conn идентификатор предыдущей найденной связи, то есть результат ее прошлого вызова. Цикл нужно завершить тогда, когда функция вернет NULL, указывая на то, что больше связей нет:

      RDS_CHANDLE conn=NULL;
      for(;;)
        { // Очередная связь, соединенная с переменной,
          // соответствующей блоку IOBlock
          conn=rdsGetIOBlockLink(IOBlock,conn,NULL);
          if(c==NULL) // Больше нет связей
            break;
          // Какие-то действия со связью conn (снаружи подсистемы)
              ...
        }

См. также

rdsGetIOBlockByVarName, rdsGetBlockLink, RDS_POINTDESCRIPTION.