Partager via


WS_ENUM_DESCRIPTION structure (webservices.h)

Description de type utilisée avec WS_ENUM_TYPE et obligatoire. Il fournit des informations utilisées pour sérialiser et désérialiser les valeurs d’une énumération.

Syntaxe

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

Membres

values

Pointe vers un tableau de valeurs d’énumération et leurs noms correspondants.

Le tableau ne doit pas contenir de valeurs ou de noms en double.

valueCount

Nombre d’éléments dans le tableau de valeurs.

maxByteCount

Longueur, en octets UTF8, du nom le plus long dans le tableau de valeurs.

nameIndices

Tableau facultatif qui fournit des informations qui peuvent améliorer les performances du mappage des valeurs d’énumération aux noms et aux retours. Ce tableau peut avoir la valeur NULL, auquel cas une recherche O(n) est utilisée, ce qui peut être suffisant pour un petit nombre de valeurs énumérées.

Si la valeur n’est pas NULL, les conditions suivantes doivent être remplies :

  • Le tableau de valeurs doit être trié par valeur, dans l’ordre croissant.
  • Le tableau nameIndices pointe vers un tableau qui contient des éléments valueCount.
  • Le tableau nameIndices fournit les index des éléments du tableau de valeurs comme s’ils étaient triés par nom dans l’ordre croissant. Les noms doivent être triés en effectuant une comparaison en octets de la chaîne utf-8.

Remarques

Les exemples suivants illustrent l’initialisation d’une description d’énumération. Cet exemple illustre l’utilisation du champ nameIndices, mais ce champ peut être NULL à la place.


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;

Configuration requise

   
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
En-tête webservices.h