using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Perforce.P4 { /// <summary> /// The tagged output of a command. /// </summary> public class TaggedObject : Dictionary<String, String> { /// <summary> /// Basic constrictor /// </summary> public TaggedObject() : base() { } /// <summary> /// Copy constructor /// </summary> /// <param name="obj">Source object</param> public TaggedObject(TaggedObject obj) : base(obj) { } }; /// <summary> /// A list of tagged objects. /// </summary> public class TaggedObjectList : List<TaggedObject> { }; /// <summary> /// List of info messages. /// </summary> public class InfoList : List<InfoLine> { /// <summary> /// Cast to a String[]. /// </summary> /// <param name="l"></param> /// <returns></returns> 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; } /// <summary> /// Cast to a String. Messages are separated by \r\n /// </summary> /// <param name="l"></param> /// <returns></returns> 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(); } } /// <summary> /// A single line of output from an 'info' message. /// </summary> public class InfoLine { /// <summary> /// The level of the message (0-9) /// </summary> public int Level; /// <summary> /// The message /// </summary> public String Info; /// <summary> /// Create a new InfoLine /// </summary> /// <param name="nLevel">Level of the message</param> /// <param name="nInfo">Message text.</param> public InfoLine(int nLevel, String nInfo) { Level = nLevel; Info = nInfo; } /// <summary> /// Convert the info to text /// </summary> /// <returns>String representation</returns> public override string ToString() { String levelDots = String.Empty; for (int idx = 0; idx < Level; idx++) levelDots += "."; return String.Format("{0}{1}", levelDots, Info); } } ///// <summary> ///// List of OpenFileInfo objects ///// </summary> //public class OpenFileInfoList : List<OpenFileInfo> { } /// <summary> /// Base class for objects returned by a command as 'tagged' data. /// </summary> /// <remarks> /// Contains a Hashtable of the field values for the object. /// Derived object can provide properties to directly access /// their standard attributes. /// </remarks> public class TaggedInfoItem : TaggedObject { private String name; /// <summary> /// String that that is the field that identifies this object /// </summary> public String Name { get { return name; } } /// <summary> /// The raw data returned from the server /// </summary> public TaggedObject ItemData { get { return (TaggedObject)this; } } /// <summary> /// Default constructer /// </summary> public TaggedInfoItem() { name = String.Empty; } } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#3 | 16210 | Norman Morse | Remove files from old locations | ||
#2 | 12135 | Norman Morse |
Integrate dev branch changes into main. This code is the basiis of the 2.7 BETA release which provides Unity 5 compatibility |
||
#1 | 10940 | Norman Morse |
Inital Workshop release of P4Connect. Released under BSD-2 license |