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 { };
/////
///// 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;
}
}
}