4 using System.Text.RegularExpressions;
6 namespace SiliconStudio.BuildEngine
28 public string Name {
get;
private set; }
35 if (key == null)
throw new ArgumentNullException(
"key");
42 return Name != null && Name.Length < 256 && Regex.IsMatch(Name,
"\\w");
47 return left.Equals(right);
52 return (!left.
Equals(right));
55 public override bool Equals(
object obj)
57 if (ReferenceEquals(null, obj))
60 return obj.GetType() == GetType() && Equals((
MetadataKey)obj);
65 return other.Name == Name && other.Type == Type;
72 return ((Name != null ? Name.GetHashCode() : 0) * 397) ^ Type.GetHashCode();
78 return (Name ??
"{null}") +
" (" + Type +
")";
85 case DatabaseType.Char:
86 return databaseValue[0];
87 case DatabaseType.Byte:
88 return byte.Parse(databaseValue);
89 case DatabaseType.Short:
90 return short.Parse(databaseValue);
91 case DatabaseType.UnsignedShort:
92 return ushort.Parse(databaseValue);
93 case DatabaseType.Int:
94 return int.Parse(databaseValue);
95 case DatabaseType.UnsignedInt:
96 return uint.Parse(databaseValue);
97 case DatabaseType.Long:
98 return long.Parse(databaseValue);
99 case DatabaseType.UnsignedLong:
100 return ulong.Parse(databaseValue);
101 case DatabaseType.Float:
102 return float.Parse(databaseValue);
103 case DatabaseType.Double:
104 return double.Parse(databaseValue);
105 case DatabaseType.String:
106 return databaseValue;
108 throw new InvalidOperationException(
"Type is unknown or its conversion has not been implemented.");
116 case DatabaseType.Char:
118 case DatabaseType.Byte:
120 case DatabaseType.Short:
121 return typeof(
short);
122 case DatabaseType.UnsignedShort:
123 return typeof(ushort);
124 case DatabaseType.Int:
126 case DatabaseType.UnsignedInt:
128 case DatabaseType.Long:
130 case DatabaseType.UnsignedLong:
131 return typeof(ulong);
132 case DatabaseType.Float:
133 return typeof(
float);
134 case DatabaseType.Double:
135 return typeof(
double);
136 case DatabaseType.String:
137 return typeof(
string);
139 throw new InvalidOperationException(
"Type is unknown.");
145 return Type == DatabaseType.String ?
"" : Activator.CreateInstance(GetKeyType());