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>;
							 | 
						||
| 
								 | 
							
								}
							 |