73 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
package eval.luv;
 | 
						|
 | 
						|
import eval.luv.File;
 | 
						|
 | 
						|
enum abstract DirentKind(Int) {
 | 
						|
	var UNKNOWN = 0;
 | 
						|
	var FILE = 1;
 | 
						|
	var DIR = 2;
 | 
						|
	var LINK = 3;
 | 
						|
	var FIFO = 4;
 | 
						|
	var SOCKET = 5;
 | 
						|
	var CHAR = 6;
 | 
						|
	var BLOCK = 7;
 | 
						|
}
 | 
						|
 | 
						|
typedef Dirent = {
 | 
						|
	var kind:DirentKind;
 | 
						|
	var name:NativeString;
 | 
						|
}
 | 
						|
 | 
						|
typedef DirectoryScan = {
 | 
						|
	/**
 | 
						|
		Retrieves the next directory entry.
 | 
						|
	**/
 | 
						|
	function next():Null<Dirent>;
 | 
						|
 | 
						|
	/**
 | 
						|
		Cleans up after a directory scan.
 | 
						|
	**/
 | 
						|
	function end():Void;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
	@see https://aantron.github.io/luv/luv/Luv/File#module-Dir
 | 
						|
**/
 | 
						|
@:coreType abstract Dir {
 | 
						|
	/**
 | 
						|
		Opens the directory at the given path for listing.
 | 
						|
	**/
 | 
						|
	static public function open(loop:Loop, path:NativeString, ?request:FileRequest, callback:(result:Result<Dir>)->Void):Void;
 | 
						|
 | 
						|
	/**
 | 
						|
		Closes the directory.
 | 
						|
	**/
 | 
						|
	public function close(loop:Loop, ?request:FileRequest, callback:(result:Result<Result.NoData>)->Void):Void;
 | 
						|
 | 
						|
	/**
 | 
						|
		Retrieves a directory entry.
 | 
						|
	**/
 | 
						|
	public function read(loop:Loop, ?numberOfEntries:Int, ?request:FileRequest, callback:(result:Result<Array<Dirent>>)->Void):Void;
 | 
						|
 | 
						|
	/**
 | 
						|
		Begins directory listing.
 | 
						|
	**/
 | 
						|
	static public function scan(loop:Loop, path:NativeString, ?request:FileRequest, callback:(result:Result<DirectoryScan>)->Void):Void;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
	Synchronous version of `eval.luv.Dir` API
 | 
						|
**/
 | 
						|
extern class DirSync {
 | 
						|
	@:inheritDoc(eval.luv.Dir.open)
 | 
						|
	static public function open(loop:Loop, path:NativeString):Result<Dir>;
 | 
						|
 | 
						|
	@:inheritDoc(eval.luv.Dir.close)
 | 
						|
	static public function close(dir:Dir, loop:Loop):Result<Result.NoData>;
 | 
						|
 | 
						|
	@:inheritDoc(eval.luv.Dir.read)
 | 
						|
	static public function read(dir:Dir, loop:Loop, ?numberOfEntries:Int):Result<Array<Dirent>>;
 | 
						|
 | 
						|
	@:inheritDoc(eval.luv.Dir.scan)
 | 
						|
	static public function scan(loop:Loop, path:NativeString):Result<DirectoryScan>;
 | 
						|
} |