File: VirtualArray.hx

package info (click to toggle)
haxe 1%3A3.4.7-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 29,888 kB
  • sloc: ml: 106,129; ansic: 1,978; makefile: 609; cpp: 357; java: 349; cs: 323; python: 250; sh: 75; objc: 64; xml: 29
file content (76 lines) | stat: -rw-r--r-- 3,673 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package cpp;

@:native("cpp::VirtualArray")
@:coreType extern class NativeVirtualArray implements ArrayAccess<Dynamic>
{
   public function new() : Void;
   public var length(get,null) : Int;
   // concat<T>( a:Array<T> ) : Array<T> ?
   public function concat( a : VirtualArray ) : VirtualArray;
   public function join( sep : String ) : String;
   public function pop() : Dynamic;
   public function push(x : Dynamic) : Int;
   public function reverse() : Void;
   public function shift() : Dynamic;
   public function slice( pos : Int, ?end : Int ) : VirtualArray;
   public function sort( f : Dynamic -> Dynamic -> Int ) : Void;
   public function splice( pos : Int, len : Int ) : VirtualArray;
   public function toString() : String;
   public function unshift( x : Dynamic ) : Void;
   public function insert( pos : Int, x : Dynamic ) : Void;
   public function remove( x : Dynamic ) : Bool;
   public function indexOf( x : Dynamic, ?fromIndex:Int ) : Int;
   public function lastIndexOf( x : Dynamic, ?fromIndex:Int ) : Int;
   public function copy() : VirtualArray;
   public function iterator() : Iterator<Dynamic>;
   public function map<S>( f : Dynamic -> S ) : VirtualArray;
   public function filter( f : Dynamic -> Bool ) : VirtualArray;
}


abstract VirtualArray(NativeVirtualArray)
{
   // Add these two functions...
   @:from @:extern inline static public function fromArray<T>(a:Array<T>) : VirtualArray
      return untyped a;
   @:to @:extern inline public function toArray<T>() : Array<T>
      return untyped this;




   // The rest is just boiler-plate
   inline public function new() this=new NativeVirtualArray();

   @:extern @:arrayAccess inline function get(idx:Int) : Dynamic
      return untyped this[idx];

   @:extern @:arrayAccess inline function set<T>(pos:Int, value:T ) : T
      return untyped this[idx] = value;

   public var length(get,never) : Int;
   @:extern inline public function get_length() : Int return this.length;



   // concat<T>( a:Array<T> ) : Array<T> ?
   @:extern inline public function concat( a : VirtualArray ) : VirtualArray return this.concat(a);
   @:extern inline public function join( sep : String ) : String return this.join(sep);
   @:extern inline public function pop() : Dynamic return this.pop();
   @:extern inline public function push(x : Dynamic) : Int return this.push(x);
   @:extern inline public function reverse() : Void this.reverse();
   @:extern inline public function shift() : Dynamic return this.shift();
   @:extern inline public function slice( pos : Int, ?end : Int ) : VirtualArray return this.slice(pos,end);
   @:extern inline public function sort( f : Dynamic -> Dynamic -> Int ) : Void this.sort(f);
   @:extern inline public function splice( pos : Int, len : Int ) : VirtualArray return this.slice(pos,len);
   @:extern inline public function unshift( x : Dynamic ) : Void this.unshift(x);
   @:extern inline public function insert( pos : Int, x : Dynamic ) : Void this.insert(pos,x);
   @:extern inline public function remove( x : Dynamic ) : Bool return this.remove(x);
   @:extern inline public function indexOf( x : Dynamic, ?fromIndex:Int ) : Int return this.indexOf(x,fromIndex);
   @:extern inline public function lastIndexOf( x : Dynamic, ?fromIndex:Int ) : Int return this.lastIndexOf(x,fromIndex);
   @:extern inline public function copy() : VirtualArray return this.copy();
   @:extern inline public function iterator() : Iterator<Dynamic> return this.iterator();
   @:extern inline public function map<S>( f : Dynamic -> S ) : VirtualArray return this.map(f);
   @:extern inline public function filter( f : Dynamic -> Bool ) : VirtualArray return this.filter(f);
}