using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Perforce.P4 { /// /// Specifies whether this line match is an exact match, /// or a context (before or after) match. /// public enum MatchType { Match, Before, After } /// /// Specifies matching lines in Perforce managed files. /// public class FileLineMatch { public MatchType Type; public string Line; public int LineNumber; public FileSpec FileSpec; public FileLineMatch() { } public FileLineMatch (MatchType type, string line, int linenumber, FileSpec filespec) { Type = type; Line = line; LineNumber = linenumber; FileSpec = filespec; } public void ParseGrepCmdTaggedData(TaggedObject obj) { if (obj.ContainsKey("depotFile")) { int rev = -1; if (obj.ContainsKey("rev")) { int.TryParse(obj["rev"], out rev); FileSpec = new FileSpec(new DepotPath(obj["depotFile"]), new Revision(rev)); } } Type = MatchType.Match; if (obj.ContainsKey("type")) { StringEnum matchtype = obj["type"]; Type = matchtype; } if (obj.ContainsKey("matchedLine")) { Line = obj["matchedLine"]; } if (obj.ContainsKey("line")) { int v = -1; int.TryParse(obj["line"], out v); LineNumber = v; } } public static FileLineMatch FromGrepCmdTaggedData(TaggedObject obj) { FileLineMatch val = new FileLineMatch(); val.ParseGrepCmdTaggedData(obj); return val; } } }