FString UStructProperty::GetCPPMacroType( FString& ExtendedTypeText ) const { ExtendedTypeText = GetCPPType(NULL, CPPF_None); return TEXT("STRUCT"); }
void UArrayProperty::ExportTextItem( FString& ValueStr, const void* PropertyValue, const void* DefaultValue, UObject* Parent, int32 PortFlags, UObject* ExportRootScope ) const { checkSlow(Inner); if (0 != (PortFlags & PPF_ExportCpp)) { FString ExtendedTypeText; FString TypeText = GetCPPType(&ExtendedTypeText, EPropertyExportCPPFlags::CPPF_BlueprintCppBackend); ValueStr += FString::Printf(TEXT("%s%s()"), *TypeText, *ExtendedTypeText); return; } FScriptArrayHelper ArrayHelper(this, PropertyValue); FScriptArrayHelper DefaultArrayHelper(this, DefaultValue); uint8* StructDefaults = NULL; UStructProperty* StructProperty = dynamic_cast<UStructProperty*>(Inner); if ( StructProperty != NULL ) { checkSlow(StructProperty->Struct); StructDefaults = (uint8*)FMemory::Malloc(StructProperty->Struct->GetStructureSize()); StructProperty->InitializeValue(StructDefaults); } const bool bReadableForm = (0 != (PPF_BlueprintDebugView & PortFlags)); int32 Count = 0; for( int32 i=0; i<ArrayHelper.Num(); i++ ) { ++Count; if(!bReadableForm) { if ( Count == 1 ) { ValueStr += TCHAR('('); } else { ValueStr += TCHAR(','); } } else { if(Count > 1) { ValueStr += TCHAR('\n'); } ValueStr += FString::Printf(TEXT("[%i] "), i); } uint8* PropData = ArrayHelper.GetRawPtr(i); // Always use struct defaults if the inner is a struct, for symmetry with the import of array inner struct defaults uint8* PropDefault = ( StructProperty != NULL ) ? StructDefaults : ( ( DefaultValue && DefaultArrayHelper.Num() > i ) ? DefaultArrayHelper.GetRawPtr(i) : NULL ); Inner->ExportTextItem( ValueStr, PropData, PropDefault, Parent, PortFlags|PPF_Delimited, ExportRootScope ); } if ((Count > 0) && !bReadableForm) { ValueStr += TEXT(")"); } if (StructDefaults) { StructProperty->DestroyValue(StructDefaults); FMemory::Free(StructDefaults); } }