Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.ProtobufCS/0.9.1/ProtobufCS/src/ProtocolBuffers/Collections/ReadOnlyDictionary.cs @ 4032

Last change on this file since 4032 was 3857, checked in by abeham, 15 years ago

#866

  • Added protobuf-csharp-port project source to ExtLibs
File size: 4.0 KB
Line 
1// Protocol Buffers - Google's data interchange format
2// Copyright 2008 Google Inc.  All rights reserved.
3// http://github.com/jskeet/dotnet-protobufs/
4// Original C++/Java/Python code:
5// http://code.google.com/p/protobuf/
6//
7// Redistribution and use in source and binary forms, with or without
8// modification, are permitted provided that the following conditions are
9// met:
10//
11//     * Redistributions of source code must retain the above copyright
12// notice, this list of conditions and the following disclaimer.
13//     * Redistributions in binary form must reproduce the above
14// copyright notice, this list of conditions and the following disclaimer
15// in the documentation and/or other materials provided with the
16// distribution.
17//     * Neither the name of Google Inc. nor the names of its
18// contributors may be used to endorse or promote products derived from
19// this software without specific prior written permission.
20//
21// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32using System;
33using System.Collections;
34using System.Collections.Generic;
35
36namespace Google.ProtocolBuffers.Collections {
37  /// <summary>
38  /// Read-only wrapper around another dictionary.
39  /// </summary>
40  public sealed class ReadOnlyDictionary<TKey, TValue> : IDictionary<TKey, TValue> {
41    readonly IDictionary<TKey, TValue> wrapped;
42
43    public ReadOnlyDictionary(IDictionary<TKey, TValue> wrapped) {
44      this.wrapped = wrapped;
45    }
46
47    public void Add(TKey key, TValue value) {
48      throw new InvalidOperationException();
49    }
50
51    public bool ContainsKey(TKey key) {
52      return wrapped.ContainsKey(key);
53    }
54
55    public ICollection<TKey> Keys {
56      get { return wrapped.Keys; }
57    }
58
59    public bool Remove(TKey key) {
60      throw new InvalidOperationException();
61    }
62
63    public bool TryGetValue(TKey key, out TValue value) {
64      return wrapped.TryGetValue(key, out value);
65    }
66
67    public ICollection<TValue> Values {
68      get { return wrapped.Values; }
69    }
70
71    public TValue this[TKey key] {
72      get {
73        return wrapped[key];
74      }
75      set {
76        throw new InvalidOperationException();
77      }
78    }
79
80    public void Add(KeyValuePair<TKey, TValue> item) {
81      throw new InvalidOperationException();
82    }
83
84    public void Clear() {
85      throw new InvalidOperationException();
86    }
87
88    public bool Contains(KeyValuePair<TKey, TValue> item) {
89      return wrapped.Contains(item);
90    }
91
92    public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex) {
93      wrapped.CopyTo(array, arrayIndex);
94    }
95
96    public int Count {
97      get { return wrapped.Count; }
98    }
99
100    public bool IsReadOnly {
101      get { return true; }
102    }
103
104    public bool Remove(KeyValuePair<TKey, TValue> item) {
105      throw new InvalidOperationException();
106    }
107
108    public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator() {
109      return wrapped.GetEnumerator();
110    }
111
112    IEnumerator IEnumerable.GetEnumerator() {
113      return ((IEnumerable) wrapped).GetEnumerator();
114    }
115
116    public override bool Equals(object obj) {
117      return wrapped.Equals(obj);
118    }
119
120    public override int GetHashCode() {
121      return wrapped.GetHashCode();
122    }
123
124    public override string ToString() {
125      return wrapped.ToString();
126    }
127  }
128}
Note: See TracBrowser for help on using the repository browser.