// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "MetasoundDataFactory.h" #include namespace Metasound { namespace Frontend { /** Allow or disallow types to be registered as MetaSound Variables. */ template struct TEnableVariables { // By default, all registered MetaSound data types are variables. static constexpr bool Value = true; }; /** Determine if data type supports necessary operations required of all * MetaSound variable types. */ template struct TVariablesSupport { private: static constexpr bool bIsCopyAssignable = std::is_copy_assignable::value; static constexpr bool bIsParsableFromLiteral = TLiteralTraits::bIsParsableFromAnyLiteralType; public: /* MetaSound variables must be copy-assignable and parsable from a FLiteral */ static constexpr bool bIsVariableSupported = bIsCopyAssignable && bIsParsableFromLiteral; }; } }