|
@@ -1,22 +1,33 @@
|
|
package neko.db;
|
|
package neko.db;
|
|
|
|
|
|
-class Result {
|
|
|
|
|
|
+class ResultSet implements Iterator<Dynamic> {
|
|
|
|
|
|
public var length : Int;
|
|
public var length : Int;
|
|
public var nfields : Int;
|
|
public var nfields : Int;
|
|
- public var current : { };
|
|
|
|
private var __r : Void;
|
|
private var __r : Void;
|
|
|
|
+ private var cache : Dynamic;
|
|
|
|
|
|
private function new(r) {
|
|
private function new(r) {
|
|
__r = r;
|
|
__r = r;
|
|
|
|
+ length = result_get_length(r);
|
|
|
|
+ nfields = result_get_nfields(r);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public function hasNext() {
|
|
|
|
+ if( cache == null )
|
|
|
|
+ cache = next();
|
|
|
|
+ return (cache != null);
|
|
|
|
+ }
|
|
|
|
|
|
- public function next() : Bool {
|
|
|
|
- var c = result_next(__r);
|
|
|
|
- current = c;
|
|
|
|
|
|
+ public function next() : Dynamic {
|
|
|
|
+ var c = cache;
|
|
|
|
+ if( c != null ) {
|
|
|
|
+ cache = null;
|
|
|
|
+ return c;
|
|
|
|
+ }
|
|
|
|
+ c = result_next(__r);
|
|
if( c == null )
|
|
if( c == null )
|
|
- return false;
|
|
|
|
|
|
+ return null;
|
|
untyped {
|
|
untyped {
|
|
var f = __dollar__objfields(c);
|
|
var f = __dollar__objfields(c);
|
|
var i = 0;
|
|
var i = 0;
|
|
@@ -28,7 +39,7 @@ class Result {
|
|
i = i + 1;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return true;
|
|
|
|
|
|
+ return c;
|
|
}
|
|
}
|
|
|
|
|
|
public function getResult( n : Int ) {
|
|
public function getResult( n : Int ) {
|
|
@@ -43,13 +54,6 @@ class Result {
|
|
return result_get_float(__r,n);
|
|
return result_get_float(__r,n);
|
|
}
|
|
}
|
|
|
|
|
|
- public function results() : Array<{}> {
|
|
|
|
- var a = new Array();
|
|
|
|
- while( next() )
|
|
|
|
- a.push(current);
|
|
|
|
- return a;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
private static var result_get_length = neko.Lib.load("mysql","result_get_length",1);
|
|
private static var result_get_length = neko.Lib.load("mysql","result_get_length",1);
|
|
private static var result_get_nfields = neko.Lib.load("mysql","result_get_nfields",1);
|
|
private static var result_get_nfields = neko.Lib.load("mysql","result_get_nfields",1);
|
|
private static var result_next = neko.Lib.load("mysql","result_next",1);
|
|
private static var result_next = neko.Lib.load("mysql","result_next",1);
|