UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CADKernelArchive.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Core/Types.h"
5#include "UI/Message.h"
6
7#include "HAL/FileManager.h"
11
12namespace UE::CADKernel
13{
14class FEntity;
15class FSession;
16class FModel;
17
19{
20public:
26 FModel* ArchiveModel = nullptr;
27
33
43
50
57
59 {
61 if (Ar == nullptr)
62 {
63 FMessage::Printf(Log, TEXT("The archive file %s is corrupted\n"), FileName);
65 }
67 }
68
70 {
72 if (!Ar)
73 {
74 FMessage::Printf(Log, TEXT("The archive file %s is corrupted\n"), FileName);
76 }
78 }
79
81 {
82 FArchive* Ar = new FMemoryWriter(InRawData, true);
83 if (!Ar)
84 {
85 FMessage::Printf(Log, TEXT("The archive is corrupted\n"));
87 }
89 }
90
92 {
93 FArchive* Ar = new FMemoryReader(InRawData, true);
94 if (!Ar)
95 {
96 FMessage::Printf(Log, TEXT("The archive buffer is corrupted\n"));
98 }
100 }
101
102 template<typename EntityType>
103 void operator<<(EntityType& Entity)
104 {
105 Archive << Entity;
106 }
107
108 bool IsLoading() const
109 {
110 return Archive.IsLoading();
111 }
112
113 bool IsSaving() const
114 {
115 return Archive.IsSaving();
116 }
117
119 {
121 }
122
123 template<typename EntityType>
125 {
126 if (Archive.IsLoading())
127 {
128 int32 ElementCount = 0;
129 Archive << ElementCount;
130 EntityArray.SetNum(ElementCount);
131 }
132 else
133 {
134 int32 ElementCount = EntityArray.Num();
135 Archive << ElementCount;
136 }
137 Archive.Serialize((void*)EntityArray.GetData(), EntityArray.Num() * sizeof(EntityType));
138 }
139
140 template<typename EntityType>
141 void Serialize(EntityType& EntityArray)
142 {
143 Archive.Serialize((void*)&EntityArray, sizeof(EntityType));
144 }
145
149
152
153 template<typename EntityType>
158
160 {
161 return Archive.TotalSize();
162 }
163
165 {
166 return Archive.Tell();
167 }
168
169 void Close()
170 {
171 Archive.Close();
172 }
173};
174}
175
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
SharedPointerInternals::TRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
Definition SharedPointer.h:1947
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint32 FIdent
Definition Types.h:27
return true
Definition ExternalRpcRegistry.cpp:601
UE_FORCEINLINE_HINT TUniquePtr< T > MakeUnique(TArgs &&... Args)
Definition UniquePtr.h:918
Definition Archive.h:1208
virtual void Serialize(void *V, int64 Length)
Definition Archive.h:1689
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
virtual int64 Tell()
Definition Archive.h:149
virtual int64 TotalSize()
Definition Archive.h:155
virtual bool Close()
Definition Archive.h:1847
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
Definition MemoryReader.h:17
Definition MemoryWriter.h:101
virtual FArchive * CreateFileWriter(const TCHAR *Filename, uint32 WriteFlags=0)=0
static CORE_API IFileManager & Get()
Definition FileManagerGeneric.cpp:1072
virtual FArchive * CreateFileReader(const TCHAR *Filename, uint32 ReadFlags=0)=0
Definition Array.h:670
Definition SharedPointer.h:692
Definition UniquePtr.h:107
Definition SharedPointer.h:1295
Definition CADKernelArchive.h:19
static TSharedPtr< FCADKernelArchive > CreateArchiveWriter(FSession &InSession, TArray< uint8 > &InRawData)
Definition CADKernelArchive.h:80
void Serialize(TArray< EntityType > &EntityArray)
Definition CADKernelArchive.h:124
FCADKernelArchive(FSession &InSession, const TArray< uint8 > &InRawData)
Definition CADKernelArchive.h:37
TUniquePtr< FMemoryReader > MemoryReader
Definition CADKernelArchive.h:21
void AddEntityFromArchive(TSharedPtr< EntityType > &Entity)
Definition CADKernelArchive.h:154
void Close()
Definition CADKernelArchive.h:169
int64 TotalSize()
Definition CADKernelArchive.h:159
static TSharedPtr< FCADKernelArchive > CreateArchiveWriter(FSession &InSession, const TCHAR *FileName)
Definition CADKernelArchive.h:58
TUniquePtr< FMemoryArchive > MemoryArchive
Definition CADKernelArchive.h:22
int64 Tell()
Definition CADKernelArchive.h:164
void SetReferencedEntityOrAddToWaitingList(FIdent ArchiveId, FEntity **Entity)
Definition Database.cpp:210
bool IsLoading() const
Definition CADKernelArchive.h:108
void Serialize(EntityType &EntityArray)
Definition CADKernelArchive.h:141
void Serialize(void *Value, int64 Length)
Definition CADKernelArchive.h:118
FSession & Session
Definition CADKernelArchive.h:25
FArchive & Archive
Definition CADKernelArchive.h:24
FCADKernelArchive(FSession &InSession, FArchive *InArchive)
Definition CADKernelArchive.h:51
bool IsSaving() const
Definition CADKernelArchive.h:113
TSharedPtr< FArchive > ArchivePtr
Definition CADKernelArchive.h:23
void AddEntityToSave(FIdent Id)
Definition Database.cpp:225
static TSharedPtr< FCADKernelArchive > CreateArchiveReader(FSession &InSession, const TArray< uint8 > &InRawData)
Definition CADKernelArchive.h:91
void AddEntityFromArchive(TSharedPtr< FEntity > &Entity)
Definition Database.cpp:230
FModel * ArchiveModel
Definition CADKernelArchive.h:26
static TSharedPtr< FCADKernelArchive > CreateArchiveReader(FSession &InSession, const TCHAR *FileName)
Definition CADKernelArchive.h:69
FCADKernelArchive(FSession &InSession, FArchive &InArchive)
Definition CADKernelArchive.h:28
void operator<<(EntityType &Entity)
Definition CADKernelArchive.h:103
FCADKernelArchive(FSession &InSession, TArray< uint8 > &InRawData)
Definition CADKernelArchive.h:44
Definition CADEntity.h:56
static void Printf(EVerboseLevel Level, const FmtType &Text, Types... Args)
Definition Message.h:29
Definition Model.h:22
Definition Session.h:18
Definition CADEntity.cpp:23
@ Log
Definition Types.h:107