Поделиться через


структура WS_ENUM_DESCRIPTION (webservices.h)

Описание типа, используемое с WS_ENUM_TYPE и является обязательным. Он предоставляет сведения, используемые при сериализации и десериализации значений перечисления.

Синтаксис

typedef struct _WS_ENUM_DESCRIPTION {
  WS_ENUM_VALUE *values;
  ULONG         valueCount;
  ULONG         maxByteCount;
  ULONG         *nameIndices;
} WS_ENUM_DESCRIPTION;

Члены

values

Указывает на массив значений перечисления и соответствующие им имена.

В массиве не должно быть повторяющихся значений или имен.

valueCount

Количество элементов в массиве значений.

maxByteCount

Длина (в байтах UTF8) самого длинного имени в массиве значений.

nameIndices

Необязательный массив, предоставляющий сведения, которые могут повысить производительность сопоставления значений перечисления с именами и обратно. Этот массив может иметь значение NULL, в этом случае используется запрос O(n), которого может быть достаточно для небольшого количества перечисляемых значений.

Если значение не равно NULL, должно быть верно следующее:

  • Массив значений должен быть отсортирован по значению в порядке возрастания.
  • Массив nameIndices указывает на массив с элементами valueCount.
  • Массив nameIndices предоставляет индексы элементов в массиве значений, как если бы они были отсортированы по имени в порядке возрастания. Имена должны отсортироваться путем байтового сравнения строки utf-8.

Комментарии

В следующих примерах показана инициализация описания перечисления. В этом примере показано использование поля nameIndices, но вместо этого это поле может иметь значение NULL .


enum
{
    Red = 10,
    Green = 20,
    Blue = 30,
};

WS_XML_STRING redString = WS_XML_STRING_VALUE("red");
WS_XML_STRING greenString = WS_XML_STRING_VALUE("green");
WS_XML_STRING blueString = WS_XML_STRING_VALUE("blue");

// sorted by ascending numeric value
WS_ENUM_VALUE valueArray[3] =
{
    { Red, &redString },
    { Green, &greenString },
    { Blue, &blueString },
};

// sorted by ascending name
ULONG nameIndices[3] =
{
    2, // "blue"
    1, // "green"
    0, // "red"
};

WS_ENUM_DESCRIPTION enumDescription;
enumDescription.maxByteCount = 5; // "green"
enumDescription.values = valueArray;
enumDescription.valueCount = 3;
enumDescription.nameIndices = nameIndices;

Требования

   
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Верхняя часть webservices.h