Mercurial > hg > Database > jungle-sharp
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)); + } + + + +}