/[xmltv_parser]/trunk/libxmltv/Core/PropertyList.cs
ViewVC logotype

Annotation of /trunk/libxmltv/Core/PropertyList.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 110 - (hide annotations) (download)
Sun Mar 10 14:28:57 2013 UTC (7 years, 5 months ago) by william
File size: 4055 byte(s)

1 william 92 using System;
2     using System.Collections.Generic;
3     using System.Linq;
4     using System.Text;
5     using libxmltv.Interfaces;
6    
7     namespace libxmltv.Core
8     {
9 william 110 [Serializable]
10 william 97 public class PropertyList : PropertyList<string, object>, IPropertyList
11 william 92 {
12 william 97 public PropertyList() :base() { }
13 william 105 public PropertyList(IEnumerable<IPropertyValuePair<string, object>> collection) : base(collection) { }
14 william 97 public PropertyList(int capacity) : base(capacity) { }
15     }
16 william 110 [Serializable]
17 william 97 public class PropertyList<TKey, TValue> : IPropertyList<TKey, TValue>
18     {
19 william 105 private PropertyCollection<IPropertyValuePair<TKey, TValue>> properties;
20     public PropertyList() { properties = new PropertyCollection<IPropertyValuePair<TKey, TValue>>(); }
21     public PropertyList(IEnumerable<IPropertyValuePair<TKey, TValue>> collection) : this() { foreach (var p in collection) { properties.AddProperty(p); } }
22 william 98 public PropertyList(int capacity)
23     {
24 william 105 properties = new PropertyCollection<IPropertyValuePair<TKey, TValue>>();
25 william 98 }
26 william 105 public IPropertyValuePair<TKey, TValue> this[int index] { get { return properties.ToList()[index]; } set { properties.ToList()[index] = value; } }
27     public IEnumerable<IPropertyValuePair<TKey, TValue>> this[TKey name]
28 william 100 {
29     get
30     {
31     var list = properties.ToList().FindAll(s => s.Name.Equals(name));
32     if (list == null)
33     {
34     throw new NullReferenceException(string.Format("Could not find any properties named '{0}'", name));
35     }
36     return list;
37     }
38     }
39 william 105 public int IndexOfProperty(IPropertyValuePair<TKey, TValue> item) { return properties.ToList().IndexOf(item); }
40     public void InsertPropertyAtIndex(int index, IPropertyValuePair<TKey, TValue> item) { properties.ToList().Insert(index, item); }
41 william 98 public void RemovePropertyAt(int index) { properties.RemoveProperty(this[index]); }
42     public int PropertyCount { get { return properties.PropertyCount; } }
43     public bool IsReadOnly
44     {
45     get
46     {
47 william 106 IPropertyCollection<IPropertyValuePair<TKey, TValue>> collection = (properties as IPropertyCollection<IPropertyValuePair<TKey, TValue>>);
48 william 98 if(collection == null)
49     {
50     throw new InvalidCastException(string.Format("Unable to cast: '{0}' to '{1}'", properties.GetType().Name, typeof(IPropertyCollection<PropertyValuePair<TKey, TValue>>).Name));
51     }
52     return collection.IsReadOnly;
53     }
54     }
55 william 105 public void AddProperty(IPropertyValuePair<TKey, TValue> item) { properties.AddProperty(item); }
56 william 98 public void ClearProperties() { properties.ClearProperties(); }
57 william 105 public bool ContainsProperty(IPropertyValuePair<TKey, TValue> item) { return properties.Contains(item); }
58     public void CopyPropertiesTo(IPropertyValuePair<TKey, TValue>[] array, int arrayIndex) { properties.CopyPropertiesTo(array, arrayIndex); }
59     public bool RemoveProperty(IPropertyValuePair<TKey, TValue> item) { return properties.RemoveProperty(item); }
60     public IEnumerator<IPropertyValuePair<TKey, TValue>> GetEnumerator() { return properties.GetEnumerator(); }
61 william 95 System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return this.GetEnumerator(); }
62 william 97
63    
64     public bool ContainsProperty(TKey name, TValue value) { return ContainsProperty(new PropertyValuePair<TKey, TValue>(name, value)); }
65     public void AddProperty(TKey name, TValue value) { AddProperty(new PropertyValuePair<TKey, TValue>(name, value)); }
66     public void RemoveProperty(TKey name, TValue value) { RemoveProperty(new PropertyValuePair<TKey, TValue>(name, value)); }
67 william 106
68     public override string ToString()
69     {
70     return string.Format("Property Count: {0}", PropertyCount);
71     }
72 william 92 }
73     }

  ViewVC Help
Powered by ViewVC 1.1.22