Where Online Learning is simpler!
The C and C++ Include Header Files
cat -n /usr/include/nodejs/src/permission/permission_base.h
1 #ifndef SRC_PERMISSION_PERMISSION_BASE_H_ 2 #define SRC_PERMISSION_PERMISSION_BASE_H_ 3 4 #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 5 6 #include <map> 7 #include <string> 8 #include <string_view> 9 #include "v8.h" 10 11 namespace node { 12 13 class Environment; 14 15 namespace permission { 16 17 #define FILESYSTEM_PERMISSIONS(V) \ 18 V(FileSystem, "fs", PermissionsRoot, "") \ 19 V(FileSystemRead, "fs.read", FileSystem, "--allow-fs-read") \ 20 V(FileSystemWrite, "fs.write", FileSystem, "--allow-fs-write") 21 22 #define CHILD_PROCESS_PERMISSIONS(V) \ 23 V(ChildProcess, "child", PermissionsRoot, "--allow-child-process") 24 25 #define WASI_PERMISSIONS(V) V(WASI, "wasi", PermissionsRoot, "--allow-wasi") 26 27 #define WORKER_THREADS_PERMISSIONS(V) \ 28 V(WorkerThreads, "worker", PermissionsRoot, "--allow-worker") 29 30 #define INSPECTOR_PERMISSIONS(V) V(Inspector, "inspector", PermissionsRoot, "") 31 32 #define ADDON_PERMISSIONS(V) \ 33 V(Addon, "addon", PermissionsRoot, "--allow-addons") 34 35 #define PERMISSIONS(V) \ 36 FILESYSTEM_PERMISSIONS(V) \ 37 CHILD_PROCESS_PERMISSIONS(V) \ 38 WASI_PERMISSIONS(V) \ 39 WORKER_THREADS_PERMISSIONS(V) \ 40 INSPECTOR_PERMISSIONS(V) \ 41 ADDON_PERMISSIONS(V) 42 43 #define V(name, _, __, ___) k##name, 44 enum class PermissionScope { 45 kPermissionsRoot = -1, 46 PERMISSIONS(V) kPermissionsCount 47 }; 48 #undef V 49 50 class PermissionBase { 51 public: 52 virtual void Apply(Environment* env, 53 const std::vector<std::string>& allow, 54 PermissionScope scope) = 0; 55 virtual bool is_granted(Environment* env, 56 PermissionScope perm, 57 const std::string_view& param = "") const = 0; 58 }; 59 60 } // namespace permission 61 62 } // namespace node 63 64 #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 65 #endif // SRC_PERMISSION_PERMISSION_BASE_H_