소스 검색

use manual property to allow As3 compilation

Simon Krajewski 12 년 전
부모
커밋
5d881df493
1개의 변경된 파일12개의 추가작업 그리고 9개의 파일을 삭제
  1. 12 9
      std/haxe/ds/BalancedTree.hx

+ 12 - 9
std/haxe/ds/BalancedTree.hx

@@ -78,7 +78,7 @@ class BalancedTree<K,V> {
 	function setLoop(k:K, v:V, node:TreeNode<K,V>) {
 		if (node == null) return new TreeNode<K,V>(null, k, v, null);
 		var c = compare(k, node.key);
-		return if (c == 0) new TreeNode<K,V>(node.left, k, v, node.right, node.height);
+		return if (c == 0) new TreeNode<K,V>(node.left, k, v, node.right, node.get_height());
 		else if (c < 0) {
 			var nl = setLoop(k, v, node.left);
 			balance(nl, node.key, node.value, node.right);
@@ -131,13 +131,13 @@ class BalancedTree<K,V> {
 	}
 		
 	function balance(l:TreeNode<K,V>, k:K, v:V, r:TreeNode<K,V>):TreeNode<K,V> {
-		var hl = l.height;
-		var hr = r.height;
+		var hl = l.get_height();
+		var hr = r.get_height();
 		return if (hl > hr + 2) {
-			if (l.left.height >= l.right.height) new TreeNode<K,V>(l.left, l.key, l.value, new TreeNode<K,V>(l.right, k, v, r));
+			if (l.left.get_height() >= l.right.get_height()) new TreeNode<K,V>(l.left, l.key, l.value, new TreeNode<K,V>(l.right, k, v, r));
 			else new TreeNode<K,V>(new TreeNode<K,V>(l.left,l.key, l.value, l.right.left), l.right.key, l.right.value, new TreeNode<K,V>(l.right.right, k, v, r));
 		} else if (hr > hl + 2) {
-			if (r.right.height > r.left.height) new TreeNode<K,V>(new TreeNode<K,V>(l, k, v, r.left), r.key, r.value, r.right);
+			if (r.right.get_height() > r.left.get_height()) new TreeNode<K,V>(new TreeNode<K,V>(l, k, v, r.left), r.key, r.value, r.right);
 			else new TreeNode<K,V>(new TreeNode<K,V>(l, k, v, r.left.left), r.left.key, r.left.value, new TreeNode<K,V>(r.left.right, r.key, r.value, r.right));
 		} else {
 			new TreeNode<K,V>(l, k, v, r, (hl > hr ? hl : hr) + 1);
@@ -158,7 +158,10 @@ class TreeNode<K,V> {
 	public var right : TreeNode<K,V>;
 	public var key : K;
 	public var value : V;
-	public var height(get, null) : Int;
+	#if as3
+	public
+	#end
+	var _height : Int;
 	
 	public function new(l, k, v, r, h = -1) {
 		left = l;
@@ -166,12 +169,12 @@ class TreeNode<K,V> {
 		value = v;
 		right = r;
 		if (h == -1)
-			height = (left.height > right.height ? left.height : right.height) + 1;
+			_height = (left.get_height() > right.get_height() ? left.get_height() : right.get_height()) + 1;
 		else
-			height = h;
+			_height = h;
 	}
 	
-	@:extern public inline function get_height() return this == null ? 0 : height;
+	@:extern public inline function get_height() return this == null ? 0 : _height;
 	
 	public function toString() {
 		return (left == null ? "" : left.toString() + ", ") + '$key=$value' + (right == null ? "" : ", " +right.toString());