UObjectBaseUtility

Класс **UObjectBaseUtility** расширяет функционал класса UObjectBase и является прямым предком класса UObject.

## Конструкторы

```
public  UObjectBaseUtility()

```

Этот конструктор никаких реальных действий не выполняет.

```
public  UObjectBaseUtility(
            EObjectFlags  InFlags)

```

Параметры:

* InFlags — флаги создаваемого объекта.

Этот конструктор инициализирует следующие поля:

* ObjectFlags получает значение параметра InFlags;
* InternalIndex получает значение INDEX\_NONE (-1);
* Class получает значение NULL;
* Outer получает значение NULL.

Для выполнения своих функций этот конструктор вызывает конструктор базового класса UObjectBase().

## Методы

### AddToRoot

```
public void  AddToRoot()

```

Этот метод добавляет данный объект к корневому набору, устанавливая флаг RF\_RootSet. Объекты, входящие в корневой набор, не могут быть уничтожены при сборке мусора.

### AppendName

```
public void  AppendName(
                 FString &ResultString
             ) const

```

Параметры:

* ResultString — строка, к которой добавляется имя данного объекта.

### ClearFlags

```
public void  ClearFlags (
                 EObjectFlags  NewFlags)

```

Параметры:

* NewFlags — набор сбрасываемых флагов.

Этот метод сбрасывает заданные флаги объекта.

### FindNearestCommonBaseClass

```
public const UClass *FindNearestCommonBaseClass(
                 const UClass *TestClass
             ) const

```

Этот метод возвращает класс, являющийся ближайшим общим предком текущего объекта и класса, заданного параметром TestClass.

### GetFullGroupName

```
public FString  GetFullGroupName(
                    bool  bStartWithOuter
                ) const

```

Параметры:

* bStartWithOuter — если равен true, в возвращаемый путь включается имя текущего объекта, в противном случае включаются лишь имена его «хозяев».

Этот метод возвращает путь, начинающийся с самого внешнего «хозяина» текущего объекта и кончая либо самим объектом, либо его непосредственным «хозяином». Если «хозяев» у объекта нет, возвращается пустая строка.

### GetFullName

```
public FString  GetFullName(
                    const UObject *StopOuter=NULL
                ) const

```

Параметры:

* StopOuter — указатель объекта, который должен послужить корнем для возвращаемого пути. Если задан NULL, возвращается полный путь.

Этот метод возвращает абсолютный или относительный (если задан ненулевой параметр StopOuter) путь к данному объекту, а также соответствующее имя класса в следующем формате: 'ClassName Outermost[.Outer].Name'.

### GetInterfaceAddress

```
public void *GetInterfaceAddress(
                 UClass *InterfaceClass)

```

Параметры:

* InterfaceClass — тип интерфейсного класса, который должен быть возвращён.

Этот метод производит безопасное преобразование указателя на текущий объект в указатель на интерфейс заданного типа и возвращает последний. Если текущий класс не реализует запрошенный интерфейс, возвращается nullptr. Если интерфейсный класс является скриптовым, а не родным (флаг CLASS\_Native сброшен), возвращается указатель this.

### GetLinker

```
public FLinkerLoad *GetLinker() const

```

!TODO!

### GetLinkerCustomVersion

```
public int32  GetLinkerCustomVersion(
                  FGuid  CustomVersionKey
              ) const

```

!TODO!

### GetLinkerIndex

```
public int32  GetLinkerIndex() const

```

!TODO!

### GetLinkerLicenseeUE4Version

```
public int32  GetLinkerLicenseeUE4Version() const

```

!TODO!

### GetLinkerUE4Version

```
public int32  GetLinkerUE4Version() const

```

!TODO!

### GetMaskedFlags

```
public EObjectFlags  GetMaskedFlags(
                         EObjectFlags  Mask = RF_AllFlags
                     ) const

```

Параметры:

* Mask — маска флагов.

Этот метод возвращает значения флагов, заданных маской; все остальные флаги в возвращаемом значении будут равны нулю независимо от их состояния в соответствующем поле объекта.

### GetName

```
public FString  GetName() const

```

Этот метод возвращает имя данного объекта (значение поля Name, преобразованное в тип FString).

```
public void GetName(FString &ResultString) const

```

Параметры:

* ResultString — строка, в которую будет помещено имя объекта. Исходное значение строки безразлично.

Второй вариант того же метода.

### GetNativeInterfaceAddress

```
public void *GetNativeInterfaceAddress(
                 UClass *InterfaceClass)

```

```
public const void *GetNativeInterfaceAddress(
                       UClass *InterfaceClass
                   ) const

```

Параметры:

* InterfaceClass — требуемый тип интерфейса.

Оба варианта метода возвращают указатель на интерфейс заданного типа, нативно (имеется флаг CLASS\_Native) реализованный данным объектом. Если интерфейс не реализован вообще или является скриптовым, возвращается nullptr.

### GetOutermost

```
public UPackage *GetOutermost() const

```

Возвращает указатель на «хозяина» самого верхнего уровня для данного объекта. Этот самый внешний «хозяин» должен иметь тип UPackage, хотя принудительный контроль типов осуществляется лишь в отладочной версии.

### GetPathName

```
public FString  GetPathName(
                    const UObject *StopOuter=NULL
                ) const

```

Параметры:

* StopOuter — указатель объекта, который должен послужить корнем для возвращаемого пути. Если задан NULL, возвращается полный путь.

Этот метод возвращает абсолютный или относительный (если задан ненулевой параметр StopOuter) путь к данному объекту в следующем формате: 'Outermost[.Outer].Name'.

```
protected void  GetPathName(
                    const UObject *StopOuter,
                    FString       &ResultString
                ) const

```

Параметры:

* StopOuter — указатель объекта, который должен послужить корнем для возвращаемого пути. Если задан NULL, возвращается полный путь.
* ResultString — строка, к которой добавляется путь к объекту. Перед вызовом метода она должна быть очищена. Если вызов производится для несуществующего объекта (this равен нулю) или если объект, для которого производится вызов, одновременно является ограничителем (this равен параметру StopOuter), возвращается строка "None".

Внутренний вариант метода, вызывающий сам себя рекурсивно для каждого внешнего объекта до тех пор, пока не будет достигнут верхний запрошенный уровень.

В качестве разделителей имён объектов в их иерархии используются два символа — точка и двоеточие (последнее задано константой SUBOBJECT\_DELIMITER). Двоеточие разделяет имя объекта и имя его «хозяина» в том случае, если «хозяин» не является пакетом, а «хозяин хозяина» — является; в других случаях используется точка. Смысл именно такого условия пока неясен.

### GetTypedOuter

```
public UObject *GetTypedOuter(
                    UClass *Target
                ) const

```

```
public template<typename T> T *GetTypedOuter() const

```

Параметры:

* Target — требуемый класс объекта.
* T — требуемый тип объекта. Должен быть потомком UObject.

Эти методы возвращают указатель на ближайшего к данному объекту «хозяина», относящегося к заданному классу (типу).

### HasAllFlags

```
public bool  HasAllFlags(
                 EObjectFlags  FlagsToCheck
             ) const

```

Параметры:

* FlagsToCheck — набор проверяемых флагов.

Эта функция возвращает true, если все заданные флаги установлены, и false в противном случае.

### HasAllMarks

```
public bool  HasAllMarks(
                 EObjectMark  Marks
             ) const

```

Параметры:

* Marks — проверяемые отметки.

Этот метод возвращает true, если у объекта имеются все заданные отметки. Реальную проверку осуществляет функция ObjectHasAllMarks.

### HasAnyFlags

```
public bool  HasAnyFlags(
                 EObjectFlags  FlagsToCheck
             ) const

```

Параметры:

* FlagsToCheck — набор проверяемых флагов.

Эта функция возвращает true, если хотя бы один из заданных флагов установлен, и false в противном случае.

### HasAnyMarks

```
public bool  HasAnyMarks(
                 EObjectMark  Marks
             ) const

```

Параметры:

* Marks — проверяемые отметки.

Этот метод возвращает true, если у объекта имеется хотя бы одна из заданных отметок. Реальную проверку осуществляет функция ObjectHasAnyMarks.

### IsA

```
public bool  IsA(
         const UClass *SomeBaseClass
     ) const

```

Этот метод возвращает true, если текущий объект относится к заданному классу (типу) или является его потомком.

```
public template<class T>
bool  IsA() const

```

Этот метод возвращает true, если текущий объект имеет класс своего архетипа или его предка.

### IsDefaultSubobject

```
public bool  IsDefaultSubobject() const

```

Этот метод возвращает true, если данный компонент был создан из шаблона, и false, если он был создан вручную во время выполнения.

Технически true возвращается в случае, если у текущего объекта есть «хозяин» (метод GetOuter возвращает ненулевой указатель) и либо этот хозяин является CDO (у него установлен флаг RF\_ClassDefaultObject), либо архетип текущего объекта (его возвращает метод UObject::GetArchetype) отличен от CDO для класса текущего объекта.

### IsIn

```
public bool  IsIn(
                 const UObject *SomeOuter
             ) const

```

Параметры:

* SomeOuter — указатель на объект, предположительно являющийся одним из «хозяев» текущего объекта.

Этот метод возвращает true, если заданный объект действительно является одним из «хозяев» текущего.

### IsInA

```
public bool  IsInA(
                 const UClass *SomeBaseClass
             ) const

```

Параметры:

* SomeBaseClass — требуемый класс объекта-«хозяина».

Этот метод возвращает true, если текущий объект имеет хотя бы одного «хозяина» указанного класса.

### IsPendingKill

```
public bool  IsPendingKill() const

```

Этот метод возвращает true, если установлен флаг RF\_PendingKill, т.е. если объект помечен для уничтожения, но реально ещё не уничтожен.

### IsRooted

```
public bool  IsRooted()

```

Этот метод возвращает true, если данный объект относится к корневому набору (у него установлен флаг RF\_RootSet).

### IsTemplate

```
public bool  IsTemplate(
                 EObjectFlags  TemplateTypes = RF_ArchetypeObject|RF_ClassDefaultObject
             ) const

```

Параметры:

* TemplateTypes — набор флагов, подлежащих проверке. Значение по умолчанию обеспечивает проверку на шаблонность объекта или какого-либо из его «хозяев».

Этот метод возвращает true, если для объекта или любого из его «хозяев» установлен хотя бы один из заданных флагов.

### Mark

```
public void  Mark(
                 EObjectMark  Marks
             ) const

```

Параметры:

* Marks — добавляемые отметки.

Этот метод добавляет к объекту заданные отметки, для чего вызывается функция MarkObject.

### MarkPackageDirty

```
public void  MarkPackageDirty() const

```

Этот метод находит пакет, являющийся «хозяином» самого верхнего уровня для данного объекта, и помечает его «грязным».

Пометка не выполняется, если пакет уже помечен «грязным», однако в любом случае производится выдача всем заинтересованным уведомления о том, что пакет отмечен «грязным».

Похоже, этот метод предназначен для использования только в составе редактора.

### MarkPendingKill

```
public void  MarkPendingKill()

```

Этот метод устанавливает флаг RF\_PendingKill, отмечая тем самым данный объект как подлежащий уничтожению. Он не должен вызываться для объектов, относящихся к корневому набору (у которых установлен флаг RF\_RootSet).

### RemoveFromRoot

```
public void  RemoveFromRoot()

```

Этот метод удаляет данный объект из корневого набора, сбрасывая флаг RF\_RootSet.

### RootPackageHasAnyFlags

```
public bool  RootPackageHasAnyFlags(
                 uint32  CheckFlagMask
             ) const

```

Параметры:

* CheckFlagMask — проверяемый набор флагов.

Этот метод возвращает true, если у пакета, являющегося конечным «хозяином» текущего объекта, установлен хотя бы один из заданных флагов.

### SetFlags

```
public void  SetFlags(
                 EObjectFlags  NewFlags)

```

Параметры:

* NewFlags — набор устанавливаемых флагов.

Этот метод устанавливает заданные флаги объекта.

### UnMark

```
public void  UnMark(
                 EObjectMark  Marks
             ) const

```

Параметры:

* Marks — удаляемые отметки.

Этот метод удаляет заданные отметки объекта, для чего вызывается функция UnMarkObject.

## Операторы

### operator<

```
public bool  operator<(
                 const UObjectBaseUtility &Other
             ) const

```

Этот оператор предназначен для лексикографического сравнения имён двух объектов — текущего и заданного. Возвращает true, если имя текущего объекта меньше, чем имя заданного объекта.