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