--- E:\src\extern\nant\src\NAnt.Core\Types\a\DataTypeBase.cs	Thu Oct 30 23:39:52 2003
+++ E:\src\extern\nant\src\NAnt.Core\DataTypeBase.cs	Wed Jan 07 14:24:09 2004
@@ -31,10 +31,17 @@
     /// </summary>
     [Serializable()]
     public abstract class DataTypeBase : Element {
-        #region Private Instance Fields
+
+		public enum RedefineMode {
+            replace,
+            append
+        }		
+
+		#region Private Instance Fields
 
         private string _id;
         private string _refID;
+		private RedefineMode _redefMode = RedefineMode.replace;
 
         #endregion Private Instance Fields
 
@@ -54,6 +61,15 @@
             set { _refID = StringUtils.ConvertEmptyToNull(value); }
         }
 
+		/// <summary>
+		/// What to do when type with this ID is already defined
+		/// </summary>
+		[TaskAttribute("mode")]
+		public RedefineMode Mode {
+			get { return _redefMode; }
+			set { _redefMode = value; }
+		}
+		
         #endregion Public Instance Properties
 
         #region Override implementation of Element
@@ -116,6 +132,16 @@
         public virtual void Reset( ) {
         }
 
+        /// <summary>
+        /// Should be overridden by derived classes. clones the referenced types 
+        /// data into the current instance.
+        /// </summary>
+        public virtual void MergeWith(DataTypeBase with) {
+			throw new BuildException(string.Format(CultureInfo.InvariantCulture, 
+						"Could not merge datatype {0} with datatype {1}",
+						GetType().Name,with.GetType().Name),Location);
+        }
+		
         #endregion Public Instance Methods
     }

