1 #pragma once 2 3 namespace fineftp 4 { 5 enum class Permission : int 6 { 7 FileRead = (1 << 0), /**< Download files */ 8 FileWrite = (1 << 1), /**< Upload files as new files */ 9 FileAppend = (1 << 2), /**< Upload files that get appended to existing files */ 10 FileDelete = (1 << 3), /**< Delete existing files or overwrite an existing file */ 11 FileRename = (1 << 4), /**< Rename existing files */ 12 13 DirList = (1 << 5), /**< Retrieve the content of directories */ 14 DirCreate = (1 << 6), /**< Create new directories */ 15 DirDelete = (1 << 7), /**< Delete existing directories */ 16 DirRename = (1 << 8), /**< Rename existing directories */ 17 18 All = (FileRead | FileWrite | FileAppend | FileDelete | FileRename | DirList | DirCreate | DirDelete | DirRename), 19 ReadOnly = (FileRead | DirList), 20 None = 0 21 }; 22 23 inline Permission operator~ (Permission a) { return (Permission)~(int)a; } 24 inline Permission operator| (Permission a, Permission b) { return (Permission)((int)a | (int)b); } 25 inline Permission operator& (Permission a, Permission b) { return (Permission)((int)a & (int)b); } 26 inline Permission operator^ (Permission a, Permission b) { return (Permission)((int)a ^ (int)b); } 27 inline Permission& operator|= (Permission& a, Permission b) { return (Permission&)((int&)a |= (int)b); } 28 inline Permission& operator&= (Permission& a, Permission b) { return (Permission&)((int&)a &= (int)b); } 29 inline Permission& operator^= (Permission& a, Permission b) { return (Permission&)((int&)a ^= (int)b); } 30 31 }