feat: add Stat.isFile, Stat.isDirectory, File.exists, and Directory.exists methods

Add four new file system checking functions: Stat.isFile and Stat.isDirectory for querying entry type from a Stat object, and File.exists and Directory.exists static methods that return booleans by attempting to stat the path and checking the appropriate type. Also bump MAX_METHODS_PER_CLASS from 12 to 14 to accommodate the new Stat foreign methods, and clean up unused Scheduler imports in existing stat tests.
This commit is contained in:
Bob Nystrom
2016-02-21 20:23:33 +00:00
parent 7f744565fc
commit 1973934fa2
15 changed files with 149 additions and 28 deletions
+5 -1
View File
@@ -32,6 +32,8 @@ extern void statMode(WrenVM* vm);
extern void statSize(WrenVM* vm);
extern void statSpecialDevice(WrenVM* vm);
extern void statUser(WrenVM* vm);
extern void statIsDirectory(WrenVM* vm);
extern void statIsFile(WrenVM* vm);
extern void stdinReadStart(WrenVM* vm);
extern void stdinReadStop(WrenVM* vm);
extern void schedulerCaptureMethods(WrenVM* vm);
@@ -45,7 +47,7 @@ extern void timerStartTimer(WrenVM* vm);
// If you add a new method to the longest class below, make sure to bump this.
// Note that it also includes an extra slot for the sentinel value indicating
// the end of the list.
#define MAX_METHODS_PER_CLASS 12
#define MAX_METHODS_PER_CLASS 14
// The maximum number of foreign classes a single built-in module defines.
//
@@ -133,6 +135,8 @@ static ModuleRegistry modules[] =
METHOD("size", statSize)
METHOD("specialDevice", statSpecialDevice)
METHOD("user", statUser)
METHOD("isDirectory", statIsDirectory)
METHOD("isFile", statIsFile)
END_CLASS
CLASS(Stdin)
STATIC_METHOD("readStart_()", stdinReadStart)