forked from msgpack/msgpack-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMessagePackObjectDictionary.KeySet.Enumerator.cs
More file actions
130 lines (120 loc) · 4.07 KB
/
MessagePackObjectDictionary.KeySet.Enumerator.cs
File metadata and controls
130 lines (120 loc) · 4.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#region -- License Terms --
//
// MessagePack for CLI
//
// Copyright (C) 2010-2014 FUJIWARA, Yusuke
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#endregion -- License Terms --
#if UNITY_STANDALONE || UNITY_WEBPLAYER || UNITY_WII || UNITY_IPHONE || UNITY_ANDROID || UNITY_PS3 || UNITY_XBOX360 || UNITY_FLASH || UNITY_BKACKBERRY || UNITY_WINRT
#define UNITY
#endif
using System;
using System.Collections;
using System.Collections.Generic;
#if !UNITY
using System.Diagnostics.Contracts;
#endif // !UNITY
namespace MsgPack
{
partial class MessagePackObjectDictionary
{
#if !UNITY
partial class KeySet
#else
partial class KeyCollection
#endif // UNITY
{
#if !UNITY
/// <summary>
/// Enumerates the elements of a <see cref="MessagePackObjectDictionary.KeySet"/>.
/// </summary>
// ReSharper disable once MemberHidesStaticFromOuterClass
public struct Enumerator : IEnumerator<MessagePackObject>
#else
/// <summary>
/// Enumerates the elements of a <see cref="MessagePackObjectDictionary.KeyCollection"/>.
/// </summary>
public struct Enumerator : IEnumerator<MessagePackObject>
#endif // !UNITY
{
// This field must not be readonly because it will cause infinite loop to the user of this type
// due to C# compiler emit ldfld instead of ldflda and state of this field will never change.
private MessagePackObjectDictionary.Enumerator _underlying;
/// <summary>
/// Gets the element at the current position of the enumerator.
/// </summary>
/// <value>
/// The element in the underlying collection at the current position of the enumerator.
/// </value>
public MessagePackObject Current
{
get { return this._underlying.Current.Key; }
}
/// <summary>
/// Gets the element at the current position of the enumerator.
/// </summary>
/// <value>
/// The element in the collection at the current position of the enumerator, as an <see cref="Object"/>.
/// </value>
/// <exception cref="InvalidOperationException">
/// The enumerator is positioned before the first element of the collection or after the last element.
/// </exception>
object IEnumerator.Current
{
get { return this._underlying.GetCurrentStrict().Key; }
}
internal Enumerator( MessagePackObjectDictionary dictionary )
{
#if !UNITY
Contract.Assert( dictionary != null );
#endif // !UNITY
this._underlying = dictionary.GetEnumerator();
}
/// <summary>
/// Releases all resources used by the this instance.
/// </summary>
public void Dispose()
{
this._underlying.Dispose();
}
/// <summary>
/// Advances the enumerator to the next element of the underlying collection.
/// </summary>
/// <returns>
/// <c>true</c> if the enumerator was successfully advanced to the next element;
/// <c>false</c> if the enumerator has passed the end of the collection.
/// </returns>
/// <exception cref="T:System.InvalidOperationException">
/// The collection was modified after the enumerator was created.
/// </exception>
public bool MoveNext()
{
this._underlying.VerifyVersion();
return this._underlying.MoveNext();
}
/// <summary>
/// Sets the enumerator to its initial position, which is before the first element in the collection.
/// </summary>
/// <exception cref="T:System.InvalidOperationException">
/// The collection was modified after the enumerator was created.
/// </exception>
void IEnumerator.Reset()
{
this._underlying.ResetCore();
}
}
}
}
}