A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
IDlgParser.h
Go to the documentation of this file.
1// Copyright Csaba Molnar, Daniel Butum. All Rights Reserved.
2#pragma once
3
4#include "UObject/UnrealType.h"
5#include "UObject/UObjectIterator.h"
6#include "Containers/Array.h"
7#include "UObject/Object.h"
8
9class DLGSYSTEM_API IDlgParser
10{
11public:
12 virtual ~IDlgParser() {}
13
15 virtual void InitializeParser(const FString& FilePath) = 0;
16
18 virtual void InitializeParserFromString(const FString& Text) {};
19
21 virtual bool IsValidFile() const = 0;
22
30 virtual void ReadAllProperty(const UStruct* ReferenceClass, void* TargetObject, UObject* DefaultObjectOuter = nullptr) = 0;
31
32 // bLogVerbose:
33 bool IsLogVerbose() const { return bLogVerbose; }
34 void SetLogVerbose(bool bValue) { bLogVerbose = bValue; }
35
36protected:
45 const UClass* GetChildClassFromName(const UClass* ParentClass, const FString& Name)
46 {
47 for (UClass* Class : StructCache)
48 {
49 if (Class->IsChildOf(ParentClass) && Class->GetName() == Name)
50 {
51 return Class;
52 }
53 }
54
55 for (TObjectIterator<UClass> It; It; ++It)
56 {
57 if (It->IsChildOf(ParentClass) && !It->HasAnyClassFlags(CLASS_Abstract) && (*It)->GetName() == Name)
58 {
59 StructCache.Add(*It);
60 return *It;
61 }
62 }
63
64 return nullptr;
65 }
66
70 static UObject* CreateNewUObject(const UClass* StructDefinition, UObject* ObjectOuter)
71 {
72 return NewObject<UObject>(!IsValid(ObjectOuter) ? (UObject*)GetTransientPackage() : ObjectOuter,
73 const_cast<UClass*>(StructDefinition), NAME_None, RF_Transactional);
74 }
75
76protected:
78 TArray<UClass*> StructCache;
79
80 // Should this class verbose log?
81 bool bLogVerbose = false;
82};
virtual bool IsValidFile() const =0
virtual ~IDlgParser()
Definition IDlgParser.h:12
void SetLogVerbose(bool bValue)
Definition IDlgParser.h:34
virtual void InitializeParserFromString(const FString &Text)
Definition IDlgParser.h:18
TArray< UClass * > StructCache
Definition IDlgParser.h:78
bool IsLogVerbose() const
Definition IDlgParser.h:33
const UClass * GetChildClassFromName(const UClass *ParentClass, const FString &Name)
Definition IDlgParser.h:45
static UObject * CreateNewUObject(const UClass *StructDefinition, UObject *ObjectOuter)
Definition IDlgParser.h:70
virtual void ReadAllProperty(const UStruct *ReferenceClass, void *TargetObject, UObject *DefaultObjectOuter=nullptr)=0
virtual void InitializeParser(const FString &FilePath)=0