public class BuildProperty {
XmlElement propertyElement;
- XmlAttribute condition;
string finalValue;
+ bool isImported;
string value;
string name;
+ Project parentProject;
PropertyType propertyType;
+
+ internal bool FromXml {
+ get {
+ return propertyElement != null;
+ }
+ }
- public BuildProperty ()
- : this (null, null)
+ private BuildProperty ()
+ {
+ }
+
+ public BuildProperty (string propertyName, string propertyValue):
+ this (propertyName, propertyValue, PropertyType.Normal)
{
}
- public BuildProperty (string propertyName,
- string propertyValue)
+ internal BuildProperty (string propertyName,
+ string propertyValue, PropertyType propertyType)
{
this.name = propertyName;
this.value = propertyValue;
+ this.finalValue = propertyValue;
+ this.propertyType = propertyType;
+ this.isImported = false;
}
+ internal BuildProperty (Project parentProject, XmlElement propertyElement)
+ {
+ if (propertyElement == null)
+ throw new ArgumentNullException ("propertyElement");
+
+ this.propertyElement = propertyElement;
+ this.propertyType = PropertyType.Normal;
+ this.parentProject = parentProject;
+ this.name = propertyElement.Name;
+ this.value = propertyElement.InnerText;
+ this.isImported = false;
+ }
+
+ [MonoTODO]
public BuildProperty Clone (bool deepClone)
{
- BuildProperty bp;
-
- bp = new BuildProperty ();
- bp.condition = this.condition;
- bp.finalValue = this.finalValue;
- bp.name = this.name;
- bp.propertyElement = this.propertyElement;
- bp.propertyType = this.propertyType;
- bp.value = this.value;
-
- return bp;
+ return (BuildProperty) this.MemberwiseClone ();
}
- public static implicit operator string (BuildProperty propertyToCast)
+ internal void Evaluate ()
+ {
+ if (FromXml) {
+ Expression exp = new Expression (parentProject, Value);
+ finalValue = (string) exp.ToNonArray (typeof (string));
+ parentProject.EvaluatedProperties.AddProperty (this);
+ }
+ }
+
+ public static explicit operator string (BuildProperty propertyToCast)
{
if (propertyToCast == null)
throw new ArgumentNullException ("propertyToCast");
return Value;
}
-
- internal void BindToXml (XmlElement propertyElement)
- {
- if (propertyElement == null)
- throw new ArgumentNullException ("propertyElement");
- this.propertyElement = propertyElement;
- this.condition = propertyElement.GetAttributeNode ("Condition");
- this.name = propertyElement.Name;
- this.value = propertyElement.InnerText;
- }
-
- internal void UpdateXml ()
- {
- }
-
public string Condition {
- get {
- if (condition == null)
- return null;
- else
- return condition.Value;
- }
- set {
- if (condition != null)
- condition.Value = value;
- }
+ get { return propertyElement.GetAttribute ("Condition"); }
+ set { propertyElement.SetAttribute ("Condition", value); }
}
public string FinalValue {
get {
- if (finalValue == null) {
+ if (finalValue == null)
return this.@value;
- } else
+ else
return finalValue;
}
- internal set {
- finalValue = value;
- }
+ }
+
+ public bool IsImported {
+ get { return isImported; }
}
public string Name {
- get {
- return name;
- }
+ get { return name; }
}
public string Value {
}
set {
this.@value = value;
+ if (FromXml) {
+ propertyElement.InnerText = value;
+ } else {
+ finalValue = value;
+ }
}
}
internal PropertyType PropertyType {
- get { return propertyType; }
- set { propertyType = value; }
+ get {
+ return propertyType;
+ }
}
}
internal enum PropertyType {
Reserved,
- CommandLine,
+ Global,
Normal,
Environment
}
}
-#endif
\ No newline at end of file
+#endif