using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Perforce.P4 { /// /// The tagged output of a command. /// public class TaggedObject : Dictionary { /// /// Basic constrictor /// public TaggedObject() : base() { } /// /// Copy constructor /// /// Source object public TaggedObject(TaggedObject obj) : base(obj) { } }; /// /// A list of tagged objects. /// public class TaggedObjectList : List { public TaggedObjectList() : base() { } public TaggedObjectList(int capcity) : base(capcity) { } public static explicit operator TaggedObjectList(SimpleList l) { if (l.Head == null) { return null; } TaggedObjectList value = new TaggedObjectList(l.Count); SimpleListItem curItem = l.Head; while (curItem != null) { value.Add(curItem.Item); curItem = curItem.Next; } return value; } }; ///// ///// List of info messages. ///// //public class InfoList : List //{ // /// // /// Cast to a String[]. // /// // /// // /// // public static implicit operator String[](InfoList l) // { // String[] r = new String[l.Count]; // int idx = 0; // foreach (InfoLine i in l) // r[idx++] = i.ToString(); // return r; // } // /// // /// Cast to a String. Messages are separated by \r\n // /// // /// // /// // public static implicit operator String(InfoList l) // { // StringBuilder r = new StringBuilder(l.Count * 80); // foreach (InfoLine i in l) // { // r.Append(i.ToString()); // r.Append("/r/n"); // } // return r.ToString(); // } //} ///// ///// A single line of output from an 'info' message. ///// //public class InfoLine //{ // /// // /// The level of the message (0-9) // /// // public int Level; // /// // /// The level of the message (0-9) // /// // public uint CommandId; // /// // /// The message // /// // public String Info; // /// // /// Create a new InfoLine // /// // /// Level of the message // /// Message text. // public InfoLine(uint cmdId, int nLevel, String nInfo) // { // CommandId = cmdId; // Level = nLevel; // Info = nInfo; // } // /// // /// Convert the info to text // /// // /// String representation // public override string ToString() // { // String levelDots = String.Empty; // for (int idx = 0; idx < Level; idx++) // levelDots += "."; // return String.Format("{0}{1}", levelDots, Info); // } //} /// /// Base class for objects returned by a command as 'tagged' data. /// /// /// Contains a Hashtable of the field values for the object. /// Derived object can provide properties to directly access /// their standard attributes. /// public class TaggedInfoItem : TaggedObject { private String name; /// /// String that that is the field that identifies this object /// public String Name { get { return name; } } /// /// The raw data returned from the server /// public TaggedObject ItemData { get { return (TaggedObject)this; } } /// /// Default constructer /// public TaggedInfoItem() { name = String.Empty; } } }