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

Приложения

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

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

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

А.5.6.20. rdsGetBlockLink – найти очередную связь, соединенную с блоком

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

    rdsGetBlockLink(
     Block,              // Блок
     Conn,               // Предыдущая найденная связь
     Inputs,                    // Перебирать связи ко входам
     Outputs,                   // Перебирать связи от выходов
     pPoint    // Заполняемое описание точки
  );

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

RDS_ChBhChBBPd

Параметры

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

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

Идентификатор найденной связи (RDS_CHANDLE) или NULL, если больше связей не найдено (то есть Conn была последней связью, соединенной с блоком Block).

Примечания

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

   cn=NULL;
  for(;;)
    { // Очередная связь, соединенная с блоком Block
      cn=(Block,cn,TRUE,TRUE,NULL);
      if(cn==NULL) // Больше нет связей
        break;
      // Какие-то действия со связью cn
        ...
    }

Такой перебор может использоваться, например, для визуального выделения связей, или при анализе графа схемы.

Параметры Inputs и Outputs определяют допустимые направления связей – включать ли в поиск связи, соединенные с входами и выходами блока соответственно. Хотя бы один из них должен иметь значение TRUE, иначе функция не найдет ни одной связи. Функция перебирает связи в порядке, определяемом внутренней логикой RDS, программист никак не может изменить этот порядок.

Пример

Примеры использования функции rdsGetBlockLink приведены в §2.7.4 и §2.13.4 руководства программиста.

См. также

RDS_POINTDESCRIPTION, rdsEnumConnectedBlocks, rdsEnumConnectedBlocksByVar.


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