Пример #1
0
        /// <summary>
        /// Reads no data from serialization info
        /// </summary>
        /// <param name="info">data holder</param>
        /// <exception cref="ArgumentNullException">info is null</exception>
        /// <exception cref="ArgumentException">info is serializing</exception>
        public override void ReadGraphData(IGraphSerializationInfo info)
        {
            base.ReadGraphData(info);
            Object o = info["name"];

            this.name = o.ToString();
        }
Пример #2
0
 /// <summary>
 /// Reads no data from serialization info
 /// </summary>
 /// <param name="info">data holder</param>
 /// <exception cref="ArgumentNullException">info is null</exception>
 /// <exception cref="ArgumentException">info is serializing</exception>
 public virtual void ReadGraphData(IGraphSerializationInfo info)
 {
     if (info == null)
     {
         throw new ArgumentNullException("info");
     }
     if (info.IsSerializing)
     {
         throw new ArgumentException("serializing");
     }
 }
        /// <summary>
        /// Adds nothing to serialization info
        /// </summary>
        /// <param name="info">data holder</param>
        /// <exception cref="ArgumentNullException">info is null</exception>
        /// <exception cref="ArgumentException">info is not serializing</exception>
        public override void WriteGraphData(IGraphSerializationInfo info)
        {
            if (info==null)
                throw new ArgumentNullException("info");
            if (!info.IsSerializing)
                throw new ArgumentException("not serializing");
            base.WriteGraphData(info);

            foreach(DictionaryEntry de in this.entries)
            {
                info.Add(de.Key.ToString(), de.Value.ToString());
            }
        }
        /// <summary>
        /// Reads no data from serialization info
        /// </summary>
        /// <param name="info">data holder</param>
        /// <exception cref="ArgumentNullException">info is null</exception>
        /// <exception cref="ArgumentException">info is serializing</exception>
        public override void ReadGraphData(IGraphSerializationInfo info)
        {
            if (info==null)
                throw new ArgumentNullException("info");
            if (info.IsSerializing)
                throw new ArgumentException("serializing");
            base.ReadGraphData(info);

            foreach(DictionaryEntry de in info)
            {
                this.entries[de.Key.ToString()]=de.Value.ToString();
            }
        }
Пример #5
0
        /// <summary>
        /// Serializes informations to the <see cref="IGraphSerializationInfo"/> instance.
        /// </summary>
        /// <param name="info">serialization device</param>
        /// <exception cref="ArgumentNullException">info is a null reference</exception>
        public override void WriteGraphData(IGraphSerializationInfo info)
        {
            if (info == null)
            {
                throw new ArgumentNullException("info");
            }
            base.WriteGraphData(info);
            if (!HasInvoker)
            {
                return;
            }

            info.Add("name", this.Invoker.Name);
            info.Add("test", this.Invoker.Generator.IsTest);
        }
Пример #6
0
        /// <summary>
        /// Reads no data from serialization info
        /// </summary>
        /// <param name="info">data holder</param>
        /// <exception cref="ArgumentNullException">info is null</exception>
        /// <exception cref="ArgumentException">info is serializing</exception>
        public override void ReadGraphData(IGraphSerializationInfo info)
        {
            if (info == null)
            {
                throw new ArgumentNullException("info");
            }
            if (info.IsSerializing)
            {
                throw new ArgumentException("serializing");
            }
            base.ReadGraphData(info);

            foreach (DictionaryEntry de in info)
            {
                this.entries[de.Key.ToString()] = de.Value.ToString();
            }
        }
Пример #7
0
        /// <summary>
        /// Adds nothing to serialization info
        /// </summary>
        /// <param name="info">data holder</param>
        /// <exception cref="ArgumentNullException">info is null</exception>
        /// <exception cref="ArgumentException">info is not serializing</exception>
        public override void WriteGraphData(IGraphSerializationInfo info)
        {
            if (info == null)
            {
                throw new ArgumentNullException("info");
            }
            if (!info.IsSerializing)
            {
                throw new ArgumentException("not serializing");
            }
            base.WriteGraphData(info);

            foreach (DictionaryEntry de in this.entries)
            {
                info.Add(de.Key.ToString(), de.Value.ToString());
            }
        }
Пример #8
0
        private DataType[] ToDatas(IGraphSerializationInfo info)
        {
            DataType[] dts = new DataType[info.Count];

            int i = 0;

            foreach (DictionaryEntry de in info)
            {
                dts[i]     = new DataType();
                dts[i].Key = de.Key.ToString();
                if (de.Value != null)
                {
                    dts[i].Text.AddString(de.Value.ToString());
                }
                ++i;
            }
            return(dts);
        }
Пример #9
0
        /// <summary>
        /// Reads graph data and creates new graph instance
        /// </summary>
        /// <param name="reader">xml reader opened on graph data</param>
        /// <returns>created graph instance</returns>
        protected override ISerializableVertexAndEdgeListGraph ReadGraphElem(XmlReader reader)
        {
            MoveToElement(reader, "gxl");
            MoveToElement(reader, "graph");

            // get directed state
            bool directed = true;

            if (MoveToAttribute(reader, "edgemode", false))
            {
                if (reader.Value != "directed")
                {
                    directed = false;
                }
            }

            IGraphSerializationInfo info = ReadInfo(reader);

            // getting types...
            if (this.GraphType == null)
            {
                this.GraphType = Type.GetType(info["graph-type"].ToString(), true);
            }
            if (this.VertexProviderType == null)
            {
                this.VertexProviderType = Type.GetType(info["vertex-provider-type"].ToString(), true);
            }
            if (this.EdgeProviderType == null)
            {
                this.EdgeProviderType = Type.GetType(info["edge-provider-type"].ToString(), true);
            }
            bool allowParallelEdges = bool.Parse(info["allow-parallel-edges"].ToString());


            ISerializableVertexAndEdgeListGraph g = CreateGraph(
                this.GraphType,
                this.VertexProviderType,
                this.EdgeProviderType,
                directed,
                allowParallelEdges
                );

            return(g);
        }
Пример #10
0
        /// <summary>
        /// Writes custom info to GraphMl
        /// </summary>
        /// <param name="writer">xml writer</param>
        /// <param name="info">custom data</param>
        protected void WriteInfo(
            XmlWriter writer,
            IGraphSerializationInfo info)
        {
            if (info.Count == 0)
            {
                return;
            }

            foreach (DictionaryEntry de in info)
            {
                writer.WriteStartElement("attr");
                writer.WriteAttributeString("name", (string)de.Key);
                writer.WriteStartElement(de.Value.GetType().ToString());
                writer.WriteString(de.Value.ToString());
                writer.WriteEndElement();
                writer.WriteEndElement();
            }
        }
Пример #11
0
		/// <summary>
		/// Writes custom info to GraphMl
		/// </summary>
		/// <param name="writer">xml writer</param>
		/// <param name="info">custom data</param>
		protected void WriteInfo(
			XmlWriter writer,
			IGraphSerializationInfo info)
		{
			if (info.Count == 0)
				return;

			foreach(DictionaryEntry de in info)
			{
				writer.WriteStartElement("attr");
					writer.WriteAttributeString("name",(string)de.Key);
					writer.WriteStartElement(de.Value.GetType().ToString());
						writer.WriteString(de.Value.ToString());
					writer.WriteEndElement();
				writer.WriteEndElement();        
			}
		}
Пример #12
0
		/// <summary>
		/// Reads no data from serialization info
		/// </summary>
		/// <param name="info">data holder</param>
		/// <exception cref="ArgumentNullException">info is null</exception>
		/// <exception cref="ArgumentException">info is serializing</exception>
		public virtual void ReadGraphData(IGraphSerializationInfo info)
		{
			if (info==null)
				throw new ArgumentNullException("info");
			if (info.IsSerializing)
				throw new ArgumentException("serializing");
		}
Пример #13
0
        /// <summary>
		/// Adds nothing to serialization info
		/// </summary>
		/// <param name="info">data holder</param>
		/// <exception cref="ArgumentNullException">info is null</exception>
		/// <exception cref="ArgumentException">info is not serializing</exception>
		public override void WriteGraphData(IGraphSerializationInfo info)
		{
			base.WriteGraphData(info);
			info.Add("name",Name);
		}
Пример #14
0
		/// <summary>
		/// Reads no data from serialization info
		/// </summary>
		/// <param name="info">data holder</param>
		/// <exception cref="ArgumentNullException">info is null</exception>
		/// <exception cref="ArgumentException">info is serializing</exception>
		public override void ReadGraphData(IGraphSerializationInfo info)
		{
			base.ReadGraphData(info);
			Object o = info["name"];
			this.name = o.ToString();
		}
        /// <summary>
        /// Serializes informations to the <see cref="IGraphSerializationInfo"/> instance.
        /// </summary>		
        /// <param name="info">serialization device</param>
        /// <exception cref="ArgumentNullException">info is a null reference</exception>
        public override void WriteGraphData(IGraphSerializationInfo info)
        {
            if (info==null)
                throw new ArgumentNullException("info");
            base.WriteGraphData(info);
            if (!HasInvoker)
                return;

            info.Add("name",this.Invoker.Name);
            info.Add("test",this.Invoker.Generator.IsTest);
        }
 /// <summary>
 /// Not implemented.
 /// </summary>
 /// <remarks/>
 /// <exception cref="InvalidOperationException">always thrown</exception>
 public override void ReadGraphData(IGraphSerializationInfo info)
 {
     throw new InvalidOperationException("Not implemented");
 }
Пример #17
0
 /// <summary>
 /// Adds nothing to serialization info
 /// </summary>
 /// <param name="info">data holder</param>
 /// <exception cref="ArgumentNullException">info is null</exception>
 /// <exception cref="ArgumentException">info is not serializing</exception>
 public override void WriteGraphData(IGraphSerializationInfo info)
 {
     base.WriteGraphData(info);
     info.Add("name", Name);
 }
Пример #18
0
		private DataType[] ToDatas(IGraphSerializationInfo info)
		{
			DataType[] dts = new DataType[info.Count];

			int i = 0;
			foreach(DictionaryEntry de in info)
			{
				dts[i] = new DataType();
				dts[i].Key = de.Key.ToString();
				if (de.Value!=null)
					dts[i].Text.AddString(de.Value.ToString());
				++i;
			}
			return dts;
		}
Пример #19
0
        public ISerializableVertexAndEdgeListGraph Deserialize(XmlReader reader)
        {
            this.createdEdges    = new Hashtable();
            this.createdVertices = new Hashtable();

            // rebuild graphml object
            XmlSerializer ser     = new XmlSerializer(typeof(GraphMltype));
            GraphMltype   graphml = (GraphMltype)ser.Deserialize(reader);

            // get graph
            GraphType gt = null;

            foreach (Object item in graphml.Items)
            {
                gt = item as GraphType;
                if (gt != null)
                {
                    break;
                }
            }


            if (gt == null)
            {
                throw new ArgumentException("no graph information found");
            }


            // retreive data for reflection
            if (this.typeFromXml)
            {
                foreach (Object item in gt.Items)
                {
                    DataType dt = item as DataType;
                    if (dt == null)
                    {
                        continue;
                    }
                    switch (dt.Key)
                    {
                    case graphTypeKeyName:
                        this.graphType = ToType(TextToString(dt.Text));
                        break;

                    case vertexProviderTypeKeyName:
                        this.vertexProviderType = ToType(TextToString(dt.Text));
                        break;

                    case edgeProviderTypeKeyName:
                        this.edgeProviderType = ToType(TextToString(dt.Text));
                        break;

                    case allowParallelEdgesKeyName:
                        this.allowParallelEdges = ToBool(TextToString(dt.Text));
                        break;
                    }
                }
            }

            if (this.GraphType == null)
            {
                throw new InvalidOperationException("GraphType is null");
            }
            if (this.VertexProviderType == null)
            {
                throw new InvalidOperationException("VertexProviderType is null");
            }
            if (this.EdgeProviderType == null)
            {
                throw new InvalidOperationException("EdgeProviderType is null");
            }

            // create graph
            ISerializableVertexAndEdgeListGraph g = CreateGraph(
                this.GraphType,
                this.VertexProviderType,
                this.EdgeProviderType,
                gt.EdgeDefault,
                this.allowParallelEdges
                );

            // populate graph vertices
            bool isVertexDeserialiable =
                typeof(IGraphDeSerializable).IsAssignableFrom(g.VertexProvider.VertexType);

            foreach (Object item in gt.Items)
            {
                NodeType node = item as NodeType;
                if (node == null)
                {
                    continue;
                }

                IVertex v = g.AddVertex();
                this.CreatedVertices[node.ID] = v;
                if (isVertexDeserialiable)
                {
                    IGraphSerializationInfo info = InfoFromNode(node);
                    ((IGraphDeSerializable)v).ReadGraphData(info);
                }
            }

            bool isEdgeDeserialiable =
                typeof(IGraphDeSerializable).IsAssignableFrom(g.EdgeProvider.EdgeType);

            foreach (Object item in gt.Items)
            {
                EdgeType edge = item as EdgeType;
                if (edge == null)
                {
                    continue;
                }

                IEdge e = g.AddEdge(
                    (IVertex)this.CreatedVertices[edge.Source],
                    (IVertex)this.CreatedVertices[edge.Target]
                    );
                this.CreatedEdges[edge.ID] = e.ID;

                if (isEdgeDeserialiable)
                {
                    IGraphSerializationInfo info = InfoFromEdge(edge);
                    ((IGraphDeSerializable)e).ReadGraphData(info);
                }
            }

            return(g);
        }
Пример #20
0
 /// <summary>
 /// Not implemented.
 /// </summary>
 /// <remarks/>
 /// <exception cref="InvalidOperationException">always thrown</exception>
 public override void ReadGraphData(IGraphSerializationInfo info)
 {
     throw new InvalidOperationException("Not implemented");
 }