структура 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 |