次の方法で共有


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 [デスクトップ アプリのみ]
Header webservices.h