Навигация:
<< >> Оглавление Указатель

Приложения

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

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

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

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

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

    rdsGetIOBlockLink(
     Block,              // Блок-вход или выход
     Conn,               // Предыдущая связь
     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, указывая на то, что больше связей нет:

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

См. также

rdsGetIOBlockByVarName, rdsGetBlockLink, RDS_POINTDESCRIPTION.


<< >> Оглавление Указатель