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

Описания RDS

Приложения

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

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

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

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

# Приложения

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

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

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

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

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

      RDS_CHANDLE RDSCALL rdsGetBlockLink(
        RDS_BHANDLE Block,              // Блок
        RDS_CHANDLE Conn,               // Предыдущая найденная связь
        BOOL Inputs,                    // Перебирать связи ко входам
        BOOL Outputs,                   // Перебирать связи от выходов
        RDS_PPOINTDESCRIPTION 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, указывая на то, что больше соединенных связей нет:

      RDS_CHANDLE cn=NULL;
      for(;;)
        { // Очередная связь, соединенная с блоком Block
          cn=rdsGetBlockLink(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.