2
// Taken from PodSleuth (http://git.gnome.org/cgit/podsleuth)
5
// Aaron Bockover <abockover@novell.com>
7
// Copyright (c) 2007-2009 Novell, Inc. (http://www.novell.com)
9
// Permission is hereby granted, free of charge, to any person obtaining a copy
10
// of this software and associated documentation files (the "Software"), to deal
11
// in the Software without restriction, including without limitation the rights
12
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
// copies of the Software, and to permit persons to whom the Software is
14
// furnished to do so, subject to the following conditions:
16
// The above copyright notice and this permission notice shall be included in
17
// all copies or substantial portions of the Software.
19
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
28
using System.Collections;
30
namespace MonoDevelop.MacDev.Plist
32
public abstract class PlistObjectBase
34
public abstract void Write (System.Xml.XmlWriter writer);
36
protected static PlistObjectBase ObjectToPlistObject (object value)
38
if (value is string) {
39
return new PlistString ((string)value);
40
} else if (value is bool) {
41
return new PlistBoolean ((bool)value);
42
} else if (value is double) {
43
return new PlistReal ((double)value);
44
} else if (value is int) {
45
return new PlistInteger ((int)value);
46
} else if (value is IEnumerable) {
47
return new PlistArray ((IEnumerable)value);
48
} else if (value is IDictionary) {
49
return new PlistDictionary ((IDictionary)value);
52
throw new InvalidCastException (String.Format ("`{0}' cannot be converted to a PlistObjectBase", value.GetType ()));
55
public static implicit operator PlistObjectBase (string value)
57
return new PlistString (value);
60
public static implicit operator PlistObjectBase (int value)
62
return new PlistInteger (value);
65
public static implicit operator PlistObjectBase (double value)
67
return new PlistReal (value);
70
public static implicit operator PlistObjectBase (bool value)
72
return new PlistBoolean (value);
75
public static implicit operator PlistObjectBase (object[] value)
77
return new PlistArray (value);
80
public static implicit operator PlistObjectBase (ArrayList value)
82
return new PlistArray (value);
85
public static implicit operator PlistObjectBase (Hashtable value)
87
return new PlistDictionary (value);