mirror of
				https://github.com/Atmosphere-NX/Atmosphere-libs.git
				synced 2025-10-25 01:45:50 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			255 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			255 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) Atmosphère-NX
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify it
 | |
|  * under the terms and conditions of the GNU General Public License,
 | |
|  * version 2, as published by the Free Software Foundation.
 | |
|  *
 | |
|  * This program is distributed in the hope it will be useful, but WITHOUT
 | |
|  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | |
|  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 | |
|  * more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| #pragma once
 | |
| #include <vapours.hpp>
 | |
| #include <stratosphere/ncm/ncm_ids.hpp>
 | |
| #include <stratosphere/fs/impl/fs_newable.hpp>
 | |
| #include <stratosphere/fssrv/impl/fssrv_access_control_bits.hpp>
 | |
| 
 | |
| namespace ams::fssrv::impl {
 | |
| 
 | |
|     /* ACCURATE_TO_VERSION: 13.4.0.0 */
 | |
|     #define AMS_FSSRV_FOR_EACH_ACCESS_CONTROL_CAPABILITY(HANDLER, _NS_)                                                                                    \
 | |
|         HANDLER(CanAbandonAccessFailure,                             _NS_::AccessFailureResolution)                                                        \
 | |
|         HANDLER(CanChallengeCardExistence,                           _NS_::GameCard)                                                                       \
 | |
|         HANDLER(CanControlMmcPatrol,                                 _NS_::None)                                                                           \
 | |
|         HANDLER(CanCorruptSaveData,                                  _NS_::Debug, _NS_::CorruptSaveData)                                                   \
 | |
|         HANDLER(CanCorruptSystemSaveData,                            _NS_::CorruptSaveData, _NS_::SaveDataManagement, _NS_::SaveDataBackUp)                \
 | |
|         HANDLER(CanCreateOthersSystemSaveData,                       _NS_::SaveDataBackUp)                                                                 \
 | |
|         HANDLER(CanCreateOwnSaveData,                                _NS_::CreateOwnSaveData)                                                              \
 | |
|         HANDLER(CanCreateSaveData,                                   _NS_::CreateSaveData, _NS_::SaveDataBackUp)                                           \
 | |
|         HANDLER(CanCreateSaveDataWithHashSalt,                       _NS_::None)                                                                           \
 | |
|         HANDLER(CanCreateSystemSaveData,                             _NS_::SaveDataBackUp, _NS_::SystemSaveData)                                           \
 | |
|         HANDLER(CanDebugSaveData,                                    _NS_::Debug, _NS_::SaveDataForDebug)                                                  \
 | |
|         HANDLER(CanDeleteOwnSaveData,                                _NS_::CreateOwnSaveData)                                                              \
 | |
|         HANDLER(CanDeleteSaveData,                                   _NS_::SaveDataManagement, _NS_::SaveDataBackUp)                                       \
 | |
|         HANDLER(CanDeleteSystemSaveData,                             _NS_::SystemSaveDataManagement, _NS_::SaveDataBackUp, _NS_::SystemSaveData)           \
 | |
|         HANDLER(CanEraseMmc,                                         _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanExtendOthersSystemSaveData,                       _NS_::SaveDataBackUp)                                                                 \
 | |
|         HANDLER(CanExtendOwnSaveData,                                _NS_::CreateOwnSaveData)                                                              \
 | |
|         HANDLER(CanExtendSaveData,                                   _NS_::CreateSaveData, _NS_::SaveDataBackUp)                                           \
 | |
|         HANDLER(CanExtendSystemSaveData,                             _NS_::SaveDataBackUp, _NS_::SystemSaveData)                                           \
 | |
|         HANDLER(CanFillBis,                                          _NS_::Debug, _NS_::FillBis)                                                           \
 | |
|         HANDLER(CanFinalizeGameCardDriver,                           _NS_::GameCardPrivate)                                                                \
 | |
|         HANDLER(CanFindOwnSaveDataWithFilter,                        _NS_::CreateOwnSaveData)                                                              \
 | |
|         HANDLER(CanFormatSdCard,                                     _NS_::FormatSdCard)                                                                   \
 | |
|         HANDLER(CanGetAccessFailureDetectionEvent,                   _NS_::AccessFailureResolution)                                                        \
 | |
|         HANDLER(CanGetGameCardAsicInfo,                              _NS_::GameCardPrivate)                                                                \
 | |
|         HANDLER(CanGetGameCardDeviceCertificate,                     _NS_::GameCard)                                                                       \
 | |
|         HANDLER(CanGetGameCardIdSet,                                 _NS_::GameCard)                                                                       \
 | |
|         HANDLER(CanGetRightsId,                                      _NS_::GetRightsId)                                                                    \
 | |
|         HANDLER(CanGetSaveDataCommitId,                              _NS_::SaveDataTransferVersion2, _NS_::SaveDataBackUp)                                 \
 | |
|         HANDLER(CanInvalidateBisCache,                               _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanIsAccessFailureDetected,                          _NS_::AccessFailureResolution)                                                        \
 | |
|         HANDLER(CanListAccessibleSaveDataOwnerId,                    _NS_::SaveDataTransferVersion2, _NS_::SaveDataTransfer, _NS_::CreateSaveData)         \
 | |
|         HANDLER(CanMountAllBaseFileSystemRead,                       _NS_::None)                                                                           \
 | |
|         HANDLER(CanMountAllBaseFileSystemWrite,                      _NS_::None)                                                                           \
 | |
|         HANDLER(CanMountApplicationPackageRead,                      _NS_::ContentManager, _NS_::ApplicationInfo)                                          \
 | |
|         HANDLER(CanMountBisCalibrationFileRead,                      _NS_::BisAllRaw, _NS_::Calibration)                                                   \
 | |
|         HANDLER(CanMountBisCalibrationFileWrite,                     _NS_::BisAllRaw, _NS_::Calibration)                                                   \
 | |
|         HANDLER(CanMountBisSafeModeRead,                             _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanMountBisSafeModeWrite,                            _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanMountBisSystemProperEncryptionRead,               _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanMountBisSystemProperEncryptionWrite,              _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanMountBisSystemProperPartitionRead,                _NS_::BisFileSystem, _NS_::BisAllRaw)                                                 \
 | |
|         HANDLER(CanMountBisSystemProperPartitionWrite,               _NS_::BisFileSystem, _NS_::BisAllRaw)                                                 \
 | |
|         HANDLER(CanMountBisSystemRead,                               _NS_::BisFileSystem, _NS_::BisAllRaw)                                                 \
 | |
|         HANDLER(CanMountBisSystemWrite,                              _NS_::BisFileSystem, _NS_::BisAllRaw)                                                 \
 | |
|         HANDLER(CanMountBisUserRead,                                 _NS_::BisFileSystem, _NS_::BisAllRaw)                                                 \
 | |
|         HANDLER(CanMountBisUserWrite,                                _NS_::BisFileSystem, _NS_::BisAllRaw)                                                 \
 | |
|         HANDLER(CanMountCloudBackupWorkStorageRead,                  _NS_::SaveDataTransferVersion2)                                                       \
 | |
|         HANDLER(CanMountCloudBackupWorkStorageWrite,                 _NS_::SaveDataTransferVersion2)                                                       \
 | |
|         HANDLER(CanMountContentControlRead,                          _NS_::ContentManager, _NS_::ApplicationInfo)                                          \
 | |
|         HANDLER(CanMountContentDataRead,                             _NS_::ContentManager, _NS_::ApplicationInfo)                                          \
 | |
|         HANDLER(CanMountContentManualRead,                           _NS_::ContentManager, _NS_::ApplicationInfo)                                          \
 | |
|         HANDLER(CanMountContentMetaRead,                             _NS_::ContentManager, _NS_::ApplicationInfo)                                          \
 | |
|         HANDLER(CanMountContentStorageRead,                          _NS_::ContentManager)                                                                 \
 | |
|         HANDLER(CanMountContentStorageWrite,                         _NS_::ContentManager)                                                                 \
 | |
|         HANDLER(CanMountCustomStorage0Read,                          _NS_::None)                                                                           \
 | |
|         HANDLER(CanMountCustomStorage0Write,                         _NS_::None)                                                                           \
 | |
|         HANDLER(CanMountDeviceSaveDataRead,                          _NS_::DeviceSaveData, _NS_::SaveDataBackUp)                                           \
 | |
|         HANDLER(CanMountDeviceSaveDataWrite,                         _NS_::DeviceSaveData, _NS_::SaveDataBackUp)                                           \
 | |
|         HANDLER(CanMountGameCardRead,                                _NS_::GameCard)                                                                       \
 | |
|         HANDLER(CanMountHostRead,                                    _NS_::Debug, _NS_::Host)                                                              \
 | |
|         HANDLER(CanMountHostWrite,                                   _NS_::Debug, _NS_::Host)                                                              \
 | |
|         HANDLER(CanMountImageAndVideoStorageRead,                    _NS_::ImageManager)                                                                   \
 | |
|         HANDLER(CanMountImageAndVideoStorageWrite,                   _NS_::ImageManager)                                                                   \
 | |
|         HANDLER(CanMountLogoRead,                                    _NS_::ContentManager, _NS_::ApplicationInfo)                                          \
 | |
|         HANDLER(CanMountOthersSaveDataRead,                          _NS_::SaveDataBackUp)                                                                 \
 | |
|         HANDLER(CanMountOthersSaveDataWrite,                         _NS_::SaveDataBackUp)                                                                 \
 | |
|         HANDLER(CanMountOthersSystemSaveDataRead,                    _NS_::SaveDataBackUp)                                                                 \
 | |
|         HANDLER(CanMountOthersSystemSaveDataWrite,                   _NS_::SaveDataBackUp)                                                                 \
 | |
|         HANDLER(CanMountRegisteredUpdatePartitionRead,               _NS_::SystemUpdate)                                                                   \
 | |
|         HANDLER(CanMountSaveDataStorageRead,                         _NS_::None)                                                                           \
 | |
|         HANDLER(CanMountSaveDataStorageWrite,                        _NS_::None)                                                                           \
 | |
|         HANDLER(CanMountSdCardRead,                                  _NS_::Debug, _NS_::SdCard)                                                            \
 | |
|         HANDLER(CanMountSdCardWrite,                                 _NS_::Debug, _NS_::SdCard)                                                            \
 | |
|         HANDLER(CanMountSystemDataPrivateRead,                       _NS_::SystemData, _NS_::SystemSaveData)                                               \
 | |
|         HANDLER(CanMountSystemSaveDataRead,                          _NS_::SaveDataBackUp, _NS_::SystemSaveData)                                           \
 | |
|         HANDLER(CanMountSystemSaveDataWrite,                         _NS_::SaveDataBackUp, _NS_::SystemSaveData)                                           \
 | |
|         HANDLER(CanMountTemporaryDirectoryRead,                      _NS_::Debug)                                                                          \
 | |
|         HANDLER(CanMountTemporaryDirectoryWrite,                     _NS_::Debug)                                                                          \
 | |
|         HANDLER(CanNotifySystemDataUpdateEvent,                      _NS_::SystemUpdate)                                                                   \
 | |
|         HANDLER(CanOpenAccessFailureDetectionEventNotifier,          _NS_::AccessFailureResolution)                                                        \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part1Read,   _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part1Write,  _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part2Read,   _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part2Write,  _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part3Read,   _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part3Write,  _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part4Read,   _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part4Write,  _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part5Read,   _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part5Write,  _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part6Read,   _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootConfigAndPackage2Part6Write,  _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootPartition1RootRead,           _NS_::SystemUpdate, _NS_::BisAllRaw, _NS_::BootModeControl)                           \
 | |
|         HANDLER(CanOpenBisPartitionBootPartition1RootWrite,          _NS_::SystemUpdate, _NS_::BisAllRaw, _NS_::BootModeControl)                           \
 | |
|         HANDLER(CanOpenBisPartitionBootPartition2RootRead,           _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionBootPartition2RootWrite,          _NS_::SystemUpdate, _NS_::BisAllRaw)                                                  \
 | |
|         HANDLER(CanOpenBisPartitionCalibrationBinaryRead,            _NS_::BisAllRaw, _NS_::Calibration)                                                   \
 | |
|         HANDLER(CanOpenBisPartitionCalibrationBinaryWrite,           _NS_::BisAllRaw, _NS_::Calibration)                                                   \
 | |
|         HANDLER(CanOpenBisPartitionCalibrationFileRead,              _NS_::BisAllRaw, _NS_::Calibration)                                                   \
 | |
|         HANDLER(CanOpenBisPartitionCalibrationFileWrite,             _NS_::BisAllRaw, _NS_::Calibration)                                                   \
 | |
|         HANDLER(CanOpenBisPartitionSafeModeRead,                     _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionSafeModeWrite,                    _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionSystemProperEncryptionRead,       _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionSystemProperEncryptionWrite,      _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionSystemProperPartitionRead,        _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionSystemProperPartitionWrite,       _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionSystemRead,                       _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionSystemWrite,                      _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionUserDataRootRead,                 _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionUserDataRootWrite,                _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionUserRead,                         _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisPartitionUserWrite,                        _NS_::BisAllRaw)                                                                      \
 | |
|         HANDLER(CanOpenBisWiper,                                     _NS_::ContentManager)                                                                 \
 | |
|         HANDLER(CanOpenDataStorageByPath,                            _NS_::None)                                                                           \
 | |
|         HANDLER(CanOpenGameCardDetectionEventNotifier,               _NS_::DeviceDetection, _NS_::GameCardRaw, _NS_::GameCard)                             \
 | |
|         HANDLER(CanOpenGameCardStorageRead,                          _NS_::GameCardRaw)                                                                    \
 | |
|         HANDLER(CanOpenGameCardStorageWrite,                         _NS_::GameCardRaw)                                                                    \
 | |
|         HANDLER(CanOpenOwnSaveDataTransferProhibiter,                _NS_::CreateOwnSaveData)                                                              \
 | |
|         HANDLER(CanOpenSaveDataInfoReader,                           _NS_::SaveDataManagement, _NS_::SaveDataBackUp)                                       \
 | |
|         HANDLER(CanOpenSaveDataInfoReaderForInternal,                _NS_::SaveDataManagement)                                                             \
 | |
|         HANDLER(CanOpenSaveDataInfoReaderForSystem,                  _NS_::SystemSaveDataManagement, _NS_::SaveDataBackUp)                                 \
 | |
|         HANDLER(CanOpenSaveDataInternalStorageRead,                  _NS_::None)                                                                           \
 | |
|         HANDLER(CanOpenSaveDataInternalStorageWrite,                 _NS_::None)                                                                           \
 | |
|         HANDLER(CanOpenSaveDataMetaFile,                             _NS_::SaveDataMeta)                                                                   \
 | |
|         HANDLER(CanOpenSaveDataMover,                                _NS_::MoveCacheStorage)                                                               \
 | |
|         HANDLER(CanOpenSaveDataTransferManager,                      _NS_::SaveDataTransfer)                                                               \
 | |
|         HANDLER(CanOpenSaveDataTransferManagerForRepair,             _NS_::SaveDataBackUp)                                                                 \
 | |
|         HANDLER(CanOpenSaveDataTransferManagerForSaveDataRepair,     _NS_::SaveDataTransferVersion2)                                                       \
 | |
|         HANDLER(CanOpenSaveDataTransferManagerForSaveDataRepairTool, _NS_::None)                                                                           \
 | |
|         HANDLER(CanOpenSaveDataTransferManagerVersion2,              _NS_::SaveDataTransferVersion2)                                                       \
 | |
|         HANDLER(CanOpenSaveDataTransferProhibiter,                   _NS_::SaveDataTransferVersion2, _NS_::CreateSaveData)                                 \
 | |
|         HANDLER(CanOpenSdCardDetectionEventNotifier,                 _NS_::DeviceDetection, _NS_::SdCard)                                                  \
 | |
|         HANDLER(CanOpenSdCardStorageRead,                            _NS_::Debug, _NS_::SdCard)                                                            \
 | |
|         HANDLER(CanOpenSdCardStorageWrite,                           _NS_::Debug, _NS_::SdCard)                                                            \
 | |
|         HANDLER(CanOpenSystemDataUpdateEventNotifier,                _NS_::SystemData, _NS_::SystemSaveData)                                               \
 | |
|         HANDLER(CanOverrideSaveDataTransferTokenSignVerificationKey, _NS_::None)                                                                           \
 | |
|         HANDLER(CanQuerySaveDataInternalStorageTotalSize,            _NS_::SaveDataTransfer)                                                               \
 | |
|         HANDLER(CanReadOwnSaveDataFileSystemExtraData,               _NS_::CreateOwnSaveData)                                                              \
 | |
|         HANDLER(CanReadSaveDataFileSystemExtraData,                  _NS_::SystemSaveDataManagement, _NS_::SaveDataManagement, _NS_::SaveDataBackUp)       \
 | |
|         HANDLER(CanRegisterExternalKey,                              _NS_::RegisterExternalKey)                                                            \
 | |
|         HANDLER(CanRegisterProgramIndexMapInfo,                      _NS_::RegisterProgramIndexMapInfo)                                                    \
 | |
|         HANDLER(CanRegisterUpdatePartition,                          _NS_::RegisterUpdatePartition)                                                        \
 | |
|         HANDLER(CanResolveAccessFailure,                             _NS_::AccessFailureResolution)                                                        \
 | |
|         HANDLER(CanSetCurrentPosixTime,                              _NS_::SetTime)                                                                        \
 | |
|         HANDLER(CanSetDebugConfiguration,                            _NS_::None)                                                                           \
 | |
|         HANDLER(CanSetEncryptionSeed,                                _NS_::ContentManager)                                                                 \
 | |
|         HANDLER(CanSetGlobalAccessLogMode,                           _NS_::SettingsControl)                                                                \
 | |
|         HANDLER(CanSetSdCardAccessibility,                           _NS_::SdCard)                                                                         \
 | |
|         HANDLER(CanSetSpeedEmulationMode,                            _NS_::SettingsControl)                                                                \
 | |
|         HANDLER(CanSimulateDevice,                                   _NS_::Debug)                                                                          \
 | |
|         HANDLER(CanVerifySaveData,                                   _NS_::SaveDataManagement, _NS_::SaveDataBackUp)                                       \
 | |
|         HANDLER(CanWriteSaveDataFileSystemExtraDataAll,              _NS_::None)                                                                           \
 | |
|         HANDLER(CanWriteSaveDataFileSystemExtraDataCommitId,         _NS_::SaveDataBackUp)                                                                 \
 | |
|         HANDLER(CanWriteSaveDataFileSystemExtraDataFlags,            _NS_::SaveDataTransferVersion2, _NS_::SystemSaveDataManagement, _NS_::SaveDataBackUp) \
 | |
|         HANDLER(CanWriteSaveDataFileSystemExtraDataTimeStamp,        _NS_::SaveDataBackUp)
 | |
| 
 | |
|     /* ACCURATE_TO_VERSION: 13.4.0.0 */
 | |
|     class AccessControlBits {
 | |
|         public:
 | |
|             enum class Bits : u64 {
 | |
|                 None                        = 0,
 | |
| 
 | |
|                 ApplicationInfo             = UINT64_C(1) <<  0,
 | |
|                 BootModeControl             = UINT64_C(1) <<  1,
 | |
|                 Calibration                 = UINT64_C(1) <<  2,
 | |
|                 SystemSaveData              = UINT64_C(1) <<  3,
 | |
|                 GameCard                    = UINT64_C(1) <<  4,
 | |
|                 SaveDataBackUp              = UINT64_C(1) <<  5,
 | |
|                 SaveDataManagement          = UINT64_C(1) <<  6,
 | |
|                 BisAllRaw                   = UINT64_C(1) <<  7,
 | |
|                 GameCardRaw                 = UINT64_C(1) <<  8,
 | |
|                 GameCardPrivate             = UINT64_C(1) <<  9,
 | |
|                 SetTime                     = UINT64_C(1) << 10,
 | |
|                 ContentManager              = UINT64_C(1) << 11,
 | |
|                 ImageManager                = UINT64_C(1) << 12,
 | |
|                 CreateSaveData              = UINT64_C(1) << 13,
 | |
|                 SystemSaveDataManagement    = UINT64_C(1) << 14,
 | |
|                 BisFileSystem               = UINT64_C(1) << 15,
 | |
|                 SystemUpdate                = UINT64_C(1) << 16,
 | |
|                 SaveDataMeta                = UINT64_C(1) << 17,
 | |
|                 DeviceSaveData              = UINT64_C(1) << 18,
 | |
|                 SettingsControl             = UINT64_C(1) << 19,
 | |
|                 SystemData                  = UINT64_C(1) << 20,
 | |
|                 SdCard                      = UINT64_C(1) << 21,
 | |
|                 Host                        = UINT64_C(1) << 22,
 | |
|                 FillBis                     = UINT64_C(1) << 23,
 | |
|                 CorruptSaveData             = UINT64_C(1) << 24,
 | |
|                 SaveDataForDebug            = UINT64_C(1) << 25,
 | |
|                 FormatSdCard                = UINT64_C(1) << 26,
 | |
|                 GetRightsId                 = UINT64_C(1) << 27,
 | |
|                 RegisterExternalKey         = UINT64_C(1) << 28,
 | |
|                 RegisterUpdatePartition     = UINT64_C(1) << 29,
 | |
|                 SaveDataTransfer            = UINT64_C(1) << 30,
 | |
|                 DeviceDetection             = UINT64_C(1) << 31,
 | |
|                 AccessFailureResolution     = UINT64_C(1) << 32,
 | |
|                 SaveDataTransferVersion2    = UINT64_C(1) << 33,
 | |
|                 RegisterProgramIndexMapInfo = UINT64_C(1) << 34,
 | |
|                 CreateOwnSaveData           = UINT64_C(1) << 35,
 | |
|                 MoveCacheStorage            = UINT64_C(1) << 36,
 | |
| 
 | |
|                 Debug                       = UINT64_C(1) << 62,
 | |
|                 FullPermission              = UINT64_C(1) << 63
 | |
|             };
 | |
|         private:
 | |
|             static constexpr u64 CombineBits(Bits b) {
 | |
|                 return util::ToUnderlying(b);
 | |
|             }
 | |
| 
 | |
|             template<typename... Args>
 | |
|             static constexpr u64 CombineBits(Bits b, Args... args) {
 | |
|                 return CombineBits(b) | CombineBits(args...);
 | |
|             }
 | |
|         private:
 | |
|             const u64 m_value;
 | |
|         public:
 | |
|             constexpr AccessControlBits(u64 v) : m_value(v) { /* ... */ }
 | |
| 
 | |
|             constexpr u64 GetValue() const { return m_value; }
 | |
| 
 | |
|             #define DEFINE_ACCESS_GETTER(name, ...) \
 | |
|                 constexpr bool name() const { constexpr u64 Mask = CombineBits(Bits::FullPermission, ## __VA_ARGS__); return (m_value & Mask); }
 | |
| 
 | |
|             AMS_FSSRV_FOR_EACH_ACCESS_CONTROL_CAPABILITY(DEFINE_ACCESS_GETTER, Bits)
 | |
| 
 | |
|             #undef DEFINE_ACCESS_GETTER
 | |
|     };
 | |
| 
 | |
| }
 |