Files
UnrealEngineUWP/Engine/Source/Developer/DerivedDataCache/Private/DerivedDataCachePrivate.h
devin doucette d50e330b94 DDC: Split the new API from the old API
The new API uses exported functions and cannot be included with the old API without compile errors in existing code that has an include-only dependency on DDC.

#rb Zousar.Shaker
#rnx
#preflight 610c01e3aeb05700011dc5ab

#ROBOMERGE-SOURCE: CL 17071263 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v853-17066230)

[CL 17071271 by devin doucette in ue5-release-engine-test branch]
2021-08-05 13:12:08 -04:00

49 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/StringFwd.h"
#include "Misc/AsciiSet.h"
class FCbPackage;
class FDerivedDataCacheInterface;
enum class ECachePolicy : uint8;
namespace UE::DerivedData { class FCacheBucket; }
namespace UE::DerivedData { class FCacheRecord; }
namespace UE::DerivedData { class FCacheRecordBuilder; }
namespace UE::DerivedData { class FOptionalCacheRecord; }
namespace UE::DerivedData { class ICache; }
namespace UE::DerivedData { struct FCacheKey; }
namespace UE::DerivedData::Private
{
// Implemented in DerivedDataCache.cpp
ICache* CreateCache(FDerivedDataCacheInterface** OutLegacyCache);
// Implemented in DerivedDataCacheKey.cpp
FCacheBucket CreateCacheBucket(FStringView Name);
// Implemented in DerivedDataCacheRecord.cpp
FCacheRecordBuilder CreateCacheRecordBuilder(const FCacheKey& Key);
FCbPackage SaveCacheRecord(const FCacheRecord& Record);
FOptionalCacheRecord LoadCacheRecord(const FCbPackage& Package);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
inline bool IsValidCacheBucketName(FStringView Name)
{
constexpr FAsciiSet Valid("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
return !Name.IsEmpty() && Name.Len() < 256 && FAsciiSet::HasOnly(Name, Valid);
}
inline void AssertValidCacheBucketName(FStringView Name)
{
checkf(IsValidCacheBucketName(Name),
TEXT("A cache bucket name must be alphanumeric, non-empty, and contain fewer than 256 code units. ")
TEXT("Name: '%.*s'"), Name.Len(), Name.GetData());
}
} // UE::DerivedData::Private