| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LIB_VFS_CPP_NODE_KIND_H_ |
| #define LIB_VFS_CPP_NODE_KIND_H_ |
| |
| #include <cstdint> |
| |
| namespace vfs { |
| |
| class NodeKind { |
| public: |
| using Type = uint64_t; |
| |
| NodeKind() = delete; |
| |
| // Node is a Directory |
| static constexpr Type kDirectory = 0x01; |
| |
| // Remote node acts as a proxy between client and a remote directory channel. |
| static constexpr Type kRemote = 0x02; |
| |
| // Node is a File. |
| static constexpr Type kFile = 0x04; |
| |
| // Node is a service. |
| static constexpr Type kService = 0x08; |
| |
| // Node is a VMO. |
| static constexpr Type kVmo = 0x10; |
| |
| // Node is Writable. |
| static constexpr Type kWritable = 0x0100; |
| |
| // Node is Readable. |
| static constexpr Type kReadable = 0x0200; |
| |
| // Node can be mounted, |
| static constexpr Type kMountable = 0x0400; |
| |
| // Node can be truncated on open. |
| static constexpr Type kCanTruncate = 0x0800; |
| |
| // Node can be created on open. |
| static constexpr Type kCreatable = 0x1000; |
| static constexpr Type kAppendable = 0x2000; |
| |
| static bool IsDirectory(Type kind) { return (kind & kDirectory) == kDirectory; } |
| |
| static bool IsFile(Type kind) { return (kind & kFile) == kFile; } |
| |
| static bool IsService(Type kind) { return (kind & kService) == kService; } |
| |
| static bool IsVMO(Type kind) { return (kind & kVmo) == kVmo; } |
| |
| static bool IsRemote(Type kind) { return (kind & kRemote) == kRemote; } |
| }; |
| |
| } // namespace vfs |
| |
| #endif // LIB_VFS_CPP_NODE_KIND_H_ |