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

Описания RDS

Приложения

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

А.4. Структуры RDS

А.4.5. RDS_CONNDESCRIPTION – описание связи или шины

# Приложения

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

### А.4. Структуры RDS

#### А.4.5. RDS_CONNDESCRIPTION – описание связи или шины

Структура RDS_CONNDESCRIPTION используется для получения описания связи или шины – ее идентификатора, числа точек и линий, составляющих геометрию связи и т.п. Описания внешнего вида, толщины линий и других параметров внешнего вида связи или шины в этой структуре не содержится, для них используется структура RDS_CONNAPPEARANCE. Для анализа соединяемых связью переменных или получения списка каналов шины нужно, как правило, сначала заполнить эту структуру вызовом функции rdsGetConnDescription, а потом уже, зная число точек, линий и каналов, перебирать их по одному при помощи других функций.

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

      typedef struct {
        DWORD servSize;         // Размер этой структуры в байтах
        RDS_CHANDLE Conn;       // Идентификатор связи
        RDSINT32 ConnType;      // Тип связи
        RDS_BHANDLE Parent;     // Идентификатор родительской подсистемы
        RDSCSTR ParentNameA;    // Имя родительской подсистемы (UTF8)
        RDSWCSTR ParentNameW;   // Имя родительской подсистемы (UTF16)
        //RDSXCSTR ParentName;  // Имя родительской подсистемы (поле-псевдоним)
        BOOL Active;            // Состояние связи (включена или отключена)
        RDSINT32 LayerId;       // Идентификатор слоя
        RDSINT32 NumPoints;     // Число точек в связи
        RDSCSTR BusNameA;       // Имя (только для шины, UTF8)
        RDSWCSTR BusNameW;      // Имя (только для шины, UTF16)
        //RDSXCSTR BusName;     // Имя (только для шины, поле-псевдоним)
        RDSINT32 NumChannels;   // Число каналов (только для шины)
        RDSINT32 NumLines;      // Число линий
        DWORD ExtId;            // Внешний уникальный идентификатор
      } RDS_CONNDESCRIPTION;
      typedef RDS_CONNDESCRIPTION *RDS_PCONNDESCRIPTION;

Поля структуры

servSize(DWORD)
  Размер этой структуры в байтах. Перед вызовом любой сервисной функции, работающей с этой структурой, полю servSize необходимо присвоить значение sizeof(RDS_CONNDESCRIPTION).
Conn(RDS_CHANDLE)
  Уникальный идентификатор данной связи или шины. Для идентификаторов связей и шин в RDS введен специальный тип RDS_CHANDLE, такие идентификаторы используются в сервисных функциях для указания связи или шины, с которыми нужно произвести то или иное действие.
ConnType(RDSINT32)
  Тип объекта: связь или шина. В RDS шины являются подвидом связей, поэтому большинство сервисных функция у шин и связей общие. В этом поле содержится одна из следующих констант:

  RDS_TUNKNOWN | Неизвестный тип (при вызове функции, заполняющей эту структуру, возникла ошибка).
  RDS_CTCONNECTION | Связь.
  RDS_CTBUS | Шина.

Parent(RDS_BHANDLE)
  Идентификатор родительской подсистемы, то есть подсистемы, непосредственно внутри которой находится данная связь или шина.
ParentNameA(RDSCSTR),ParentNameW(RDSWCSTR),ParentName(RDSXCSTR)
  Указатель на строку с именем родительской подсистемы. Строка находится во внутренней памяти RDS, ее нельзя изменять.
Active(BOOL)
  TRUE, если связь включена, и FALSE, если выключена. Включение/выключение связей обычно производится пользователем с клавиатуры или через контекстное меню.
LayerId(RDSINT32)
  Идентификатор слоя подсистемы, на котором находится данная связь или шина. Для ее перемещения на другой слой можно использовать функцию rdsSetConnLayer.
NumPoints(RDSINT32)
  Общее число узловых точек в геометрическом изображении связи или шины. В это число входят и точки соединения с блоками, и промежуточные точки (точки излома), и точки разветвления. Получить описание конкретной точки с заданным номером (ее координаты, тип и т.п.) можно при помощи функции rdsGetPointDescription.
BusNameA(RDSCSTR),BusNameW(RDSWCSTR),BusName(RDSXCSTR)
  Указатель на строку с именем шины (только для шин, для связей не используется). Строка находится во внутренней памяти RDS, ее нельзя изменять.
NumChannels(RDSINT32)
  Общее число каналов передачи данных в шине (для связей не используется).
NumLines(RDSINT32)
  Общее число линий (прямых и кривых Безье), соединяющих пары узловых точек в геометрическом изображении связи или шины. Получить описание линии с заданным номером (ее тип, координаты касательных кривой и т.п.) можно при помощи функции rdsGetLineDescription.
ExtId(DWORD)
  Уникальный в пределах схемы целый идентификатор данной связи или шины, не изменяющийся при сохранении и последующей загрузке этой схемы.

Пример

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

См. также

rdsGetConnDescription, rdsGetFirstConn, rdsGetNextConn, RDS_CONNAPPEARANCE, rdsSetConnLayer, rdsGetPointDescription, rdsGetLineDescription, rdsCECreateEditor.