Files
UnrealEngineUWP/Engine/Source/Runtime/RenderCore/Private/ShaderSource.cpp
dan elksnitis 89776aba21 [shaders] add ANSICHAR path for FShaderSource and enable by default
#rb Yuriy.ODonnell, Laura.Hermanns
#jira UE-196110

[CL 30632304 by dan elksnitis in ue5-main branch]
2024-01-16 09:15:51 -05:00

44 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ShaderSource.h"
#include "Containers/StringConv.h"
#include "HAL/UnrealMemory.h"
FShaderSource::FShaderSource(FShaderSource::FViewType InSrc, int32 AdditionalSlack)
{
Set(InSrc, AdditionalSlack);
}
void FShaderSource::Set(FShaderSource::FViewType InSrc, int32 AdditionalSlack)
{
SetLen(InSrc.Len() + AdditionalSlack);
FShaderSource::CharType* SourceData = Source.GetData();
FMemory::Memcpy(SourceData, InSrc.GetData(), sizeof(FShaderSource::CharType) * InSrc.Len());
}
#if !SHADER_SOURCE_ANSI
void FShaderSource::Set(FAnsiStringView InSrc)
{
TStringConvert<ANSICHAR, TCHAR> Convert;
SetLen(InSrc.Len());
Convert.Convert(Source.GetData(), Source.Num(), InSrc.GetData(), InSrc.Len());
}
#endif
FShaderSource& FShaderSource::operator=(FShaderSource::FStringType&& InSrc)
{
int32 InInitialLen = InSrc.Len();
// input char array already has a null terminator appended, so can add one less padding char
TArray<CharType>& InSrcArray = InSrc.GetCharArray();
InSrcArray.AddZeroed(ShaderSourceSimdPadding - 1);
Source = MoveTemp(InSrcArray);
return *this;
}
FArchive& operator<<(FArchive& Ar, FShaderSource& Src)
{
Ar << Src.Source;
return Ar;
}