File: DataKeyArray.cs

package info (click to toggle)
mono 6.14.1%2Bds2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,282,732 kB
  • sloc: cs: 11,182,461; xml: 2,850,281; ansic: 699,123; cpp: 122,919; perl: 58,604; javascript: 30,841; asm: 21,845; makefile: 19,602; sh: 10,973; python: 4,772; pascal: 925; sql: 859; sed: 16; php: 1
file content (157 lines) | stat: -rw-r--r-- 4,732 bytes parent folder | download | duplicates (7)
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
//------------------------------------------------------------------------------
// <copyright file="DataKeyArray.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>                                                                
//------------------------------------------------------------------------------

namespace System.Web.UI.WebControls {

    using System;
    using System.Collections;

    /// <devdoc>
    /// </devdoc>
    public sealed class DataKeyArray : ICollection, IStateManager {

        private ArrayList _keys;
        private bool _isTracking;
        

        /// <devdoc>
        /// <para>Initializes a new instance of the <see cref='System.Web.UI.WebControls.DataKeyArray'/> class.</para>
        /// </devdoc>
        public DataKeyArray(ArrayList keys) {
            this._keys = keys;
        }


        /// <devdoc>
        ///    <para>Gets the number of objects in the collection. This property is read-only.</para>
        /// </devdoc>
        public int Count {
            get {
                return _keys.Count;
            }
        }


        /// <devdoc>
        /// <para>Gets the value that specifies whether items in the <see cref='System.Web.UI.WebControls.DataKeyArray'/> can be 
        ///    modified. This property is read-only.</para>
        /// </devdoc>
        public bool IsReadOnly {
            get {
                return false;
            }
        }


        /// <devdoc>
        /// <para>Gets a value that indicates whether the <see cref='System.Web.UI.WebControls.DataKeyArray'/> is 
        ///    thread-safe. This property is read-only.</para>
        /// </devdoc>
        public bool IsSynchronized {
            get {
                return false;
            }
        }


        /// <devdoc>
        ///    <para>Gets the object used to synchronize access to the collection. This property is read-only. </para>
        /// </devdoc>
        public object SyncRoot {
            get {
                return this;
            }
        }


        /// <devdoc>
        /// <para>Gets a <see cref='DataKey' qualify='true'/> at the specified index in the collection. This property is read-only.</para>
        /// </devdoc>
        public DataKey this[int index] {
            get {
                return _keys[index] as DataKey;
            }
        }



        /// <devdoc>
        /// <para>Copies the contents of the entire collection into an <see cref='System.Array' qualify='true'/> appending at 
        ///    the specified index of the <see cref='System.Array' qualify='true'/>.</para>
        /// </devdoc>
        public void CopyTo(DataKey[] array, int index) {
            ((ICollection)this).CopyTo(array, index);
        }


        /// <internalonly/>
        void ICollection.CopyTo(Array array, int index) {
            for (IEnumerator e = this.GetEnumerator(); e.MoveNext();)
                array.SetValue(e.Current, index++);
        }


        /// <devdoc>
        /// <para>Creates an enumerator for the <see cref='System.Web.UI.WebControls.DataKeyArray'/> used to iterate 
        ///    through the collection.</para>
        /// </devdoc>
        public IEnumerator GetEnumerator() {
            return _keys.GetEnumerator();
        }

        #region IStateManager implementation

        /// <internalonly/>
        bool IStateManager.IsTrackingViewState {
            get {
                return _isTracking;
            }
        }


        /// <internalonly/>
        void IStateManager.LoadViewState(object state) {
            if (state != null) {
                object[] keysState = (object[])state;

                for (int i = 0; i < keysState.Length; i++) {
                    if (keysState[i] != null) {
                        ((IStateManager)_keys[i]).LoadViewState(keysState[i]);
                    }
                }
            }
        }


        /// <internalonly/>
        object IStateManager.SaveViewState() {
            int keyCount = _keys.Count;
            object[] keysState = new object[keyCount];
            bool savedState = false;

            for (int i = 0; i < keyCount; i++) {
                keysState[i] = ((IStateManager)_keys[i]).SaveViewState();
                if (keysState[i] != null)
                    savedState = true;
            }

            return savedState ? keysState : null;
        }


        /// <internalonly/>
        void IStateManager.TrackViewState() {
            _isTracking = true;

            int keyCount = _keys.Count;
            for (int i = 0; i < keyCount; i++) {
                ((IStateManager)_keys[i]).TrackViewState();
            }
        }
        #endregion
    }
}