コード例 #1
0
        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--;
            }
        }
コード例 #2
0
        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);
                    }
                }
            }
        }
コード例 #3
0
        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);
                    }
                }
            }
        }
コード例 #4
0
        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--;
            }
        }
コード例 #5
0
        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--;
            }
        }