イテレーターは、オブジェクトのリストとこのリストの現在位置を維持するカーソルをカプセル化します。C または C++ アプリケーションは、次に、イテレーターを使用してリスト内の各オブジェクトを検索します。
イテレーターを作成すると、カーソルの位置は最初のオブジェクトの前になります。 アプリケーションは、次に、イテレーターを使用して各オブジェクトを検索します。オブジェクトを検索するため、アプリケーションは Iterator クラスの以下の 3 つのメソッドを使用します。
Iterator クラスは、Java の Enumerator クラスに相当します。XMS .NET は Java に似ており、IEnumerator インターフェースを使用します。
/********************************************************/ /* XMS Sample using an iterator to browse properties */ /********************************************************/ rc = xmsMsgGetProperties(hMsg, &it, xmsError); if (rc == XMS_OK) { rc = xmsIteratorHasNext(it, &more, xmsError); while (more) { rc = xmsIteratorGetNextProperty(it, (xmsHObj)&p, xmsError); if (rc == XMS_OK) { xmsPropertyGetName(p, name, 100, &len, xmsError); printf("Property name=¥"%s¥"¥n", name); xmsPropertyGetTypeId(p, &type, xmsError); switch (type) { case XMS_PROPERTY_TYPE_INT: { xmsINT value=0; xmsPropertyGetInt(p, &value, xmsError); printf("Property value=%d¥n", value); break; } case XMS_PROPERTY_TYPE_STRING: { xmsINT len=0; char value[100]; xmsPropertyGetString(p, value, 100, &len, xmsError); printf("Property value=¥"%s¥"¥n", value); break; } default: { printf("Unhandled property type (%d)¥n", (int)type); } } xmsPropertyDispose(&p, xmsError); } rc = xmsIteratorHasNext(it, &more, xmsError); } printf("Finished iterator....¥n"); xmsIteratorDispose(&it, xmsError); } /********************************************************/