diff src/main/csharp/jp.ac.u-ryukyu.ie.cr/jungle-network/operations/NetworkNodePath.cs @ 12:b71d9ea6bd8e

Add Network Operation Class. this codes can not test yet.
author Kazuma
date Sun, 23 Oct 2016 12:25:57 +0900
parents
children 4c8932dad7b2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/csharp/jp.ac.u-ryukyu.ie.cr/jungle-network/operations/NetworkNodePath.cs	Sun Oct 23 12:25:57 2016 +0900
@@ -0,0 +1,87 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+
+public class NetworkNodePath : NodePath {
+	LinkedList<int> Path;
+
+	public NetworkNodePath () {
+		Path = new LinkedList<int>();
+		Path.AddFirst(-1);
+	}
+
+	public NetworkNodePath (NodePath path){
+		Path = new LinkedList<int>();
+		foreach(int p in path) {
+			Path.AddLast(p);
+		}
+	}
+
+	private NetworkNodePath (LinkedList<int> path) {
+		this.Path = path;
+	}
+
+	public IEnumerator<int> iterator () { // iterator error. 
+		yield return this.Path.GetEnumerator().Current;
+	}
+
+	IEnumerator IEnumerable.GetEnumerator()
+	{
+		return this.GetEnumerator();
+	}
+
+	public IEnumerator<int> GetEnumerator()
+	{
+		return iterator ();
+	}
+
+	public NodePath add (int pos) {
+		LinkedList<int> newPath = copyPath();
+		newPath.AddLast(pos);
+		return new NetworkNodePath(newPath);
+	}
+
+	public NodePath addHead(int pos) { // still java code.
+		LinkedList<int> newPath = copyPath();
+		newPath.AddFirst(pos);
+		return new NetworkNodePath(newPath);
+	}
+
+	public Pair<int, NodePath> pop () {
+		LinkedList<int> cPath = copyPath();
+		int e = cPath.First.Value;
+		cPath.RemoveFirst();
+		return new Pair<int, NodePath>(e, new NetworkNodePath(cPath));
+	}
+
+	public int size () {
+		return this.Path.Count;
+	}
+
+
+	public LinkedList<int> copyPath(){
+		LinkedList<int> newPath = new LinkedList<int>();
+		foreach(int i in this.Path) {
+			newPath.AddLast(i);
+		}
+		return newPath;
+	}
+
+	public override string ToString () {
+		return Path.ToString();
+	}
+
+	public NodePath tail() {
+		this.Path.RemoveLast();
+		return new NetworkNodePath(this.Path);
+	}
+
+	public Pair<int, NodePath> last () {
+		int lastValue = this.Path.Last.Value;
+		this.Path.RemoveLast();
+		return new Pair<int, NodePath>(lastValue, new NetworkNodePath(this.Path));
+	}
+
+
+
+}