-
Notifications
You must be signed in to change notification settings - Fork 195
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-Authored-By: Ne_Eo <NeeEoo@users.noreply.github.com>
- Loading branch information
Showing
3 changed files
with
354 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,292 @@ | ||
package funkin.backend.utils; | ||
|
||
import funkin.backend.utils.NativeAPI.FileAttribute; | ||
|
||
/** | ||
* Currently only for Windows, but planned to work on other platforms later. | ||
*/ | ||
class FileAttributeWrapper | ||
{ | ||
public var flags:Int; | ||
|
||
public function new(flags:Int) | ||
{ | ||
this.flags = flags; | ||
} | ||
|
||
public var isArchived(get, set):Bool; | ||
|
||
private function get_isArchived():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.ARCHIVE) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
private function set_isArchived(value:Bool):Bool | ||
{ | ||
#if windows | ||
if (value) | ||
flags |= FileAttribute.ARCHIVE; | ||
else | ||
flags &= ~FileAttribute.ARCHIVE; | ||
return value; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isHidden(get, set):Bool; | ||
|
||
private function get_isHidden():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.HIDDEN) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
private function set_isHidden(value:Bool):Bool | ||
{ | ||
#if windows | ||
if (value) | ||
flags |= FileAttribute.HIDDEN; | ||
else | ||
flags &= ~FileAttribute.HIDDEN; | ||
return value; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isNormal(get, set):Bool; | ||
|
||
private function get_isNormal():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.NORMAL) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
private function set_isNormal(value:Bool):Bool | ||
{ | ||
#if windows | ||
if (value) | ||
flags |= FileAttribute.NORMAL; | ||
else | ||
flags &= ~FileAttribute.NORMAL; | ||
return value; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isNotContentIndexed(get, set):Bool; | ||
|
||
private function get_isNotContentIndexed():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.NOT_CONTENT_INDEXED) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
private function set_isNotContentIndexed(value:Bool):Bool | ||
{ | ||
#if windows | ||
if (value) | ||
flags |= FileAttribute.NOT_CONTENT_INDEXED; | ||
else | ||
flags &= ~FileAttribute.NOT_CONTENT_INDEXED; | ||
return value; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isOffline(get, set):Bool; | ||
|
||
private function get_isOffline():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.OFFLINE) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
private function set_isOffline(value:Bool):Bool | ||
{ | ||
#if windows | ||
if (value) | ||
flags |= FileAttribute.OFFLINE; | ||
else | ||
flags &= ~FileAttribute.OFFLINE; | ||
return value; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isReadOnly(get, set):Bool; | ||
|
||
private function get_isReadOnly():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.READONLY) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
private function set_isReadOnly(value:Bool):Bool | ||
{ | ||
#if windows | ||
if (value) | ||
flags |= FileAttribute.READONLY; | ||
else | ||
flags &= ~FileAttribute.READONLY; | ||
return value; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isSystem(get, set):Bool; | ||
|
||
private function get_isSystem():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.SYSTEM) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
private function set_isSystem(value:Bool):Bool | ||
{ | ||
#if windows | ||
if (value) | ||
flags |= FileAttribute.SYSTEM; | ||
else | ||
flags &= ~FileAttribute.SYSTEM; | ||
return value; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isTemporary(get, set):Bool; | ||
|
||
private function get_isTemporary():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.TEMPORARY) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
private function set_isTemporary(value:Bool):Bool | ||
{ | ||
#if windows | ||
if (value) | ||
flags |= FileAttribute.TEMPORARY; | ||
else | ||
flags &= ~FileAttribute.TEMPORARY; | ||
return value; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
// Non Settables | ||
public var isCompressed(get, never):Bool; | ||
|
||
private function get_isCompressed():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.COMPRESSED) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isDevice(get, never):Bool; | ||
|
||
private function get_isDevice():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.DEVICE) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isDirectory(get, never):Bool; | ||
|
||
private function get_isDirectory():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.DIRECTORY) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isEncrypted(get, never):Bool; | ||
|
||
private function get_isEncrypted():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.ENCRYPTED) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isReparsePoint(get, never):Bool; | ||
|
||
private function get_isReparsePoint():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.REPARSE_POINT) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public var isSparseFile(get, never):Bool; | ||
|
||
private function get_isSparseFile():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.SPARSE_FILE) != 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
// For checking (mainly) | ||
public var isNothing(get, never):Bool; | ||
|
||
private function get_isNothing():Bool | ||
{ | ||
#if windows | ||
return (flags & FileAttribute.NOTHING) == 0; | ||
#else | ||
return false; | ||
#end | ||
} | ||
|
||
public function getValue():Int | ||
{ | ||
return flags; | ||
} | ||
} |
Oops, something went wrong.