#pragma once #include "APIHelp.h" #include #include #include //////////////////// APIs //////////////////// Local OpenFile(const Arguments& args); Local FileReadFrom(const Arguments& args); Local FileWriteTo(const Arguments& args); Local FileWriteLine(const Arguments& args); Local DirCreate(const Arguments& args); Local PathCopy(const Arguments& args); Local PathMove(const Arguments& args); Local PathRename(const Arguments& args); Local PathDelete(const Arguments& args); Local PathExists(const Arguments& args); Local CheckIsDir(const Arguments& args); Local GetFileSize(const Arguments& args); Local GetFilesList(const Arguments& args); //////////////////// Classes //////////////////// class FileClass : public ScriptClass { private: std::fstream file; string path; bool isBinary; std::mutex lock; public: explicit FileClass(const Local& scriptObj, std::fstream&& f, const std::string& path, bool isBinary); explicit FileClass(std::fstream&& f, const std::string& path, bool isBinary); static FileClass* constructor(const Arguments& args); Local getPath(); Local getAbsolutePath(); Local getSize(); Local readSync(const Arguments& args); Local readLineSync(const Arguments& args); Local readAllSync(const Arguments& args); Local writeSync(const Arguments& args); Local writeLineSync(const Arguments& args); Local read(const Arguments& args); Local readLine(const Arguments& args); Local readAll(const Arguments& args); Local write(const Arguments& args); Local writeLine(const Arguments& args); Local seekTo(const Arguments& args); Local setSize(const Arguments& args); Local close(const Arguments& args); Local isEOF(const Arguments& args); Local flush(const Arguments& args); Local errorCode(const Arguments& args); Local clear(const Arguments& args); static Local readFromStatic(const Arguments& args) { return FileReadFrom(args); } static Local writeToStatic(const Arguments& args) { return FileWriteTo(args); } static Local writeLineStatic(const Arguments& args) { return FileWriteLine(args); } static Local createDir(const Arguments& args) { return DirCreate(args); } static Local copy(const Arguments& args) { return PathCopy(args); } static Local move(const Arguments& args) { return PathMove(args); } static Local rename(const Arguments& args) { return PathRename(args); } static Local del(const Arguments& args) { return PathDelete(args); } static Local exists(const Arguments& args) { return PathExists(args); } static Local checkIsDir(const Arguments& args) { return CheckIsDir(args); } static Local getFileSize(const Arguments& args) { return GetFileSize(args); } static Local getFilesList(const Arguments& args) { return GetFilesList(args); } // For Compatibility static Local newFile(std::fstream&& f, const std::string& path, bool isBinary); static Local open(const Arguments& args) { return OpenFile(args); } }; extern ClassDefine FileClassBuilder;