public virtual void Serialize( ISIS.GME.Common.IndentedStreamWriter writer, Serializer.Type type = Serializer.Type.OnlyThisObject) { // serialize this object writer.WriteLine(Name, true); if ((type == Serializer.Type.SubGraph || type == Serializer.Type.Children) && this is Interfaces.Container) { writer.Depth++; // serialize child objects foreach (Interfaces.Base b in (this as Interfaces.Container).AllChildren) { if (type == Serializer.Type.SubGraph) { b.Serialize(writer, type); } else if (type == Serializer.Type.Children) { b.Serialize(writer, Serializer.Type.OnlyThisObject); } } writer.Depth--; } }
public virtual void Serialize( System.IO.StreamWriter writer, Serializer.Type type = Serializer.Type.OnlyThisObject) { // serialize this object writer.WriteLine(Name); if ((type == Serializer.Type.SubGraph || type == Serializer.Type.Children) && this is Interfaces.Container) { if ((this as Interfaces.Container).AllChildren == null) { int zso = 0; } // serialize child objects foreach (Interfaces.Base b in (this as Interfaces.Container).AllChildren) { if (type == Serializer.Type.SubGraph) { b.Serialize(writer, type); } else if (type == Serializer.Type.Children) { b.Serialize(writer, Serializer.Type.OnlyThisObject); } } } }
public virtual void TraverseDFS( Func <IEnumerable <Interfaces.Base>, IEnumerable <Interfaces.Base> > filter, Action <ISIS.GME.Common.Interfaces.Base, int> action, Serializer.Type type = Serializer.Type.SubGraph, bool includeCurrentObject = true, int indent = 0) { if (includeCurrentObject) { // call user's function action(this, indent); } if ((type == Serializer.Type.SubGraph || type == Serializer.Type.Children) && this is Interfaces.Container) { // get the user defined filtered list var filtered = filter((this as Interfaces.Container).AllChildren).ToList(); // TODO: split the foreach into 2 part. var regular = (this as Interfaces.Container).AllChildren.Where(x => filtered.FirstOrDefault(y => y.ID == x.ID) == null); bool include = false; foreach (Interfaces.Base b in (this as Interfaces.Container).AllChildren) { if (filtered.FirstOrDefault(y => y.ID == b.ID) != null) { include = true; } else { include = false; } if (type == Serializer.Type.SubGraph) { // call recursively b.TraverseDFS( filter, action, type, include, indent + 1); } else if (type == Serializer.Type.Children) { // next object is the last one b.TraverseDFS( filter, action, Serializer.Type.OnlyThisObject, include, indent + 1); } } } }
public override void Serialize( ISIS.GME.Common.IndentedStreamWriter writer, Serializer.Type type = Serializer.Type.OnlyThisObject) { // serialize this object StringBuilder sb = new StringBuilder(); string SrcRefName = "null"; string DstRefName = "null"; if (GenericSrcEndRef != null) { SrcRefName = GenericSrcEndRef.Name; } if (GenericDstEndRef != null) { DstRefName = GenericDstEndRef.Name; } sb.AppendFormat( "{0} [{1} -> {2}] [SrcRef = {3} DstRef = {4}]", Name, GenericSrcEnd.Name, GenericDstEnd.Name, SrcRefName, DstRefName); writer.WriteLine(sb.ToString(), true); if ((type == Serializer.Type.SubGraph || type == Serializer.Type.Children) && this is Interfaces.Container) { writer.Depth++; // serialize child objects foreach (Interfaces.Base b in (this as Interfaces.Container).AllChildren) { if (type == Serializer.Type.SubGraph) { b.Serialize(writer, type); } else if (type == Serializer.Type.Children) { b.Serialize(writer, Serializer.Type.OnlyThisObject); } } writer.Depth--; } }
public virtual void Serialize( ISIS.GME.Common.IndentedStreamWriter writer, Func <IEnumerable <Interfaces.Base>, IEnumerable <Interfaces.Base> > filter, Serializer.Type type = Serializer.Type.Children, bool includeCurrentObject = true) { if (includeCurrentObject) { // serialize this object writer.WriteLine(Name, true); } if ((type == Serializer.Type.SubGraph || type == Serializer.Type.Children) && this is Interfaces.Container) { writer.Depth++; // serialize child objects var filtered = filter((this as Interfaces.Container).AllChildren); bool include = false; foreach (Interfaces.Base b in (this as Interfaces.Container).AllChildren) { if (filtered.Contains(b)) { include = true; } else { include = false; } if (type == Serializer.Type.SubGraph) { b.Serialize(writer, filter, type, include); } else if (type == Serializer.Type.Children) { b.Serialize(writer, filter, Serializer.Type.OnlyThisObject, include); } } writer.Depth--; } }