CommonLibVR
RE::BSScript::Internal::VirtualMachine Class Reference

#include <VirtualMachine.h>

Inheritance diagram for RE::BSScript::Internal::VirtualMachine:
RE::BSScript::IVirtualMachine RE::BSScript::IVMObjectBindInterface RE::BSScript::IVMSaveLoadInterface RE::BSScript::IVMDebugInterface RE::BSTEventSource< StatsEvent > RE::BSIntrusiveRefCounted

Classes

struct  QueuedUnbindRefs
 

Public Types

enum class  FreezeState { kNotFrozen = 0 , kFreezing , kFrozen }
 
- Public Types inherited from RE::BSScript::IVirtualMachine
using Severity = BSScript::ErrorLogger::Severity
 
- Public Types inherited from RE::BSTEventSource< StatsEvent >
using Sink = BSTEventSink< StatsEvent >
 

Public Member Functions

 ~VirtualMachine () override
 
void SetLinkedCallback (ITypeLinkedCallback *a_callback) override
 
void TraceStack (const char *a_str, VMStackID a_stackID, Severity a_severity=Severity::kInfo) override
 
void FormatAndPostMessage (const char *a_message, Severity a_severity) override
 
void Update (float a_budget) override
 
void UpdateTasklets (float a_budget) override
 
void SetOverstressed (bool a_set) override
 
bool IsCompletelyFrozen () const override
 
bool RegisterObjectType (VMTypeID a_typeID, const char *a_className) override
 
bool GetScriptObjectType1 (const BSFixedString &a_className, BSTSmartPointer< ObjectTypeInfo > &a_outTypeInfoPtr) override
 
bool GetScriptObjectType2 (VMTypeID a_typeID, BSTSmartPointer< ObjectTypeInfo > &a_outTypeInfoPtr) override
 
bool GetScriptObjectTypeNoLoad1 (const BSFixedString &a_className, BSTSmartPointer< ObjectTypeInfo > &a_typeInfoPtr) const override
 
bool GetScriptObjectTypeNoLoad2 (VMTypeID a_typeID, BSTSmartPointer< ObjectTypeInfo > &a_outTypeInfoPtr) const override
 
bool GetTypeIDForScriptObject (const BSFixedString &a_className, VMTypeID &a_typeID) const override
 
void GetScriptObjectsWithATypeID (BSScrapArray< BSFixedString > &a_results) const override
 
bool GetParentNativeType (const BSFixedString &a_className, BSTSmartPointer< ObjectTypeInfo > &a_typeInfoPtr) override
 
bool TypeIsValid (const BSFixedString &a_className) override
 
bool ReloadType (const char *a_className) override
 
void TasksToJobs (BSJobs::JobList &a_jobList) override
 
void CalculateFullReloadList (void) const override
 
bool CreateObject1 (const BSFixedString &a_className, void *a_property, BSTSmartPointer< Object > &a_objPtr) override
 
bool CreateObject2 (const BSFixedString &a_className, BSTSmartPointer< Object > &a_result) override
 
bool CreateArray1 (const TypeInfo &a_typeInfo, std::uint32_t a_size, BSTSmartPointer< Array > &a_arrayPtr) override
 
bool CreateArray2 (TypeInfo::RawType a_typeID, const BSFixedString &a_className, std::uint32_t a_size, BSTSmartPointer< Array > &a_arrayPtr) override
 
bool BindNativeMethod (IFunction *a_fn) override
 
void SetCallableFromTasklets1 (const char *a_className, const char *a_stateName, const char *a_fnName, bool a_callable) override
 
void SetCallableFromTasklets2 (const char *a_className, const char *a_fnName, bool a_callable) override
 
void ForEachBoundObject (VMHandle a_handle, IForEachScriptObjectFunctor *a_functor) override
 
bool FindBoundObject (VMHandle a_handle, const char *a_className, BSTSmartPointer< Object > &a_result) const override
 
void MoveBoundObjects (VMHandle a_from, VMHandle a_to) override
 
void ResetAllBoundObjects (VMHandle a_handle) override
 
bool CastObject (const BSTSmartPointer< Object > &a_fromObjPtr, const BSTSmartPointer< ObjectTypeInfo > &a_toTypeInfoPtr, BSTSmartPointer< Object > &a_toObjPtr) override
 
bool SetPropertyValue (BSTSmartPointer< Object > &a_obj, const char *a_propertyName, Variable &a_setVal) override
 
bool GetPropertyValue (BSTSmartPointer< Object > &a_obj, const char *a_propertyName, Variable &a_getVal) override
 
bool GetVariableValue1 (const BSTSmartPointer< Object > &a_objPtr, std::uint32_t a_index, Variable &a_out) const override
 
bool GetVariableValue2 (VMHandle a_handle, const BSFixedString &a_className, std::int32_t a_variableIndex, Variable &a_out) const override
 
void SendEvent (VMHandle a_handle, const BSFixedString &a_eventName, IFunctionArguments *a_args) override
 
void SendEventAll (const BSFixedString &a_eventName, IFunctionArguments *a_args) override
 
bool DispatchStaticCall (const BSFixedString &a_className, const BSFixedString &a_fnName, IFunctionArguments *a_args, BSTSmartPointer< IStackCallbackFunctor > &a_result) override
 
bool DispatchMethodCall1 (BSTSmartPointer< Object > &a_obj, const BSFixedString &a_fnName, IFunctionArguments *a_args, BSTSmartPointer< IStackCallbackFunctor > &a_result) override
 
bool DispatchMethodCall2 (VMHandle a_handle, const BSFixedString &a_className, const BSFixedString &a_fnName, IFunctionArguments *a_args, BSTSmartPointer< IStackCallbackFunctor > &a_result) override
 
bool DispatchUnboundMethodCall (void) override
 
bool IsWaitingOnLatent (VMStackID a_stackID) const override
 
void ReturnFromLatent (VMStackID a_stackID, const Variable &a_val) override
 
ErrorLoggerGetErrorLogger () override
 
IObjectHandlePolicyGetObjectHandlePolicy1 () override
 
const IObjectHandlePolicyGetObjectHandlePolicy2 () const override
 
ObjectBindPolicyGetObjectBindPolicy1 () override
 
const ObjectBindPolicyGetObjectBindPolicy2 () const override
 
ISavePatcherInterfaceGetSavePatcherInterface () override
 
void RegisterForLogEvent (BSTEventSink< LogEvent > *a_sink) override
 
void UnregisterForLogEvent (BSTEventSink< LogEvent > *a_sink) override
 
void RegisterForStatsEvent (BSTEventSink< StatsEvent > *a_sink) override
 
void UnregisterForStatsEvent (BSTEventSink< StatsEvent > *a_sink) override
 
VMHandle GetBoundHandle (const BSTSmartPointer< Object > &a_objPtr) const override
 
bool TypeCanBeBound (const BSFixedString &a_className, VMHandle a_handle) override
 
void BindObject (BSTSmartPointer< Object > &a_objPtr, VMHandle a_handle, bool a_conditional) override
 
void HandleLoadedBinding (BSTSmartPointer< Object > &a_objPtr, VMHandle a_handle, bool a_conditional) override
 
void RemoveAllBoundObjects (VMHandle a_handle) override
 
void RemoveAllDiskLoadedBoundObjects (VMHandle a_handle) override
 
void HandleCObjectDeletion (VMHandle a_handle) override
 
void UnbindObject (const BSTSmartPointer< Object > &a_objPtr) override
 
bool CreateObjectWithProperties (const BSFixedString &a_className, std::uint32_t a_numProperties, BSTSmartPointer< Object > &a_objPtr) override
 
bool InitObjectProperties (BSTSmartPointer< Object > &a_objPtr, void *a_property, bool a_arg3) override
 
void SaveGame (SaveStorageWrapper *a_wrapper, SkyrimScript::SaveFileHandleReaderWriter *a_handle, bool unk) override
 
void LoadGame (LoadStorageWrapper *a_wrapper, SkyrimScript::SaveFileHandleReaderWriter *a_handle) override
 
void MarkSaveInvalid (BSStorage *a_storage) override
 
std::byte GetSaveGameVersion () override
 
void CleanupSave () override
 
void Unk_06 () override
 
void DropAllRunningData () override
 
void Unk_08 (void *unk) override
 
void Unk_09 (void) override
 
void Unk_0A (VMHandle a_handle, Object **a_out) override
 
void Unk_0B (void *unk) override
 
void Unk_0C (void) override
 
void Unk_0D (VMHandle a_handle, Array **a_out) override
 
void Unk_0E (LoadStorageWrapper *a_storage, void *unk) override
 
bool GetStackByID (VMStackID a_stackID, Stack **a_out) override
 
WritableStringTable GetWritableStringTable () override
 
const WritableStringTable GetWritableStringTable2 () override
 
ReadableStringTable GetReadableStringTable () override
 
BSTHashMap< BSFixedString, BSTSmartPointer< ObjectTypeInfo > > * GetWritableTypeTable () override
 
const BSTHashMap< BSFixedString, BSTSmartPointer< ObjectTypeInfo > > * GetWritableTypeTable2 () override
 
BSTHashMap< BSFixedString, BSTSmartPointer< ObjectTypeInfo > > * GetReadableTypeTable () override
 
bool CreateEmptyTasklet (Stack *a_stack, Internal::CodeTasklet **a_out) override
 
- Public Member Functions inherited from RE::BSScript::IVirtualMachine
virtual ~IVirtualMachine ()
 
bool CreateArray (const TypeInfo &a_typeInfo, std::uint32_t a_size, BSTSmartPointer< Array > &a_arrayPtr)
 
bool CreateArray (TypeInfo::RawType a_typeID, const BSFixedString &a_className, std::uint32_t a_size, BSTSmartPointer< Array > &a_arrayPtr)
 
bool CreateObject (const BSFixedString &a_className, void *a_property, BSTSmartPointer< Object > &a_objPtr)
 
bool CreateObject (const BSFixedString &a_className, BSTSmartPointer< Object > &a_result)
 
bool DispatchMethodCall (BSTSmartPointer< Object > &a_obj, const BSFixedString &a_fnName, IFunctionArguments *a_args, BSTSmartPointer< IStackCallbackFunctor > &a_result)
 
Awaitable DispatchMethodCall (BSTSmartPointer< Object > &a_obj, const BSFixedString &a_fnName, IFunctionArguments *a_args)
 
bool DispatchMethodCall (VMHandle a_handle, const BSFixedString &a_className, const BSFixedString &a_fnName, IFunctionArguments *a_args, BSTSmartPointer< IStackCallbackFunctor > &a_result)
 
Awaitable DispatchMethodCall (VMHandle a_handle, const BSFixedString &a_className, const BSFixedString &a_fnName, IFunctionArguments *a_args)
 
Awaitable DispatchStaticCall (const BSFixedString &a_className, const BSFixedString &a_fnName, IFunctionArguments *a_args)
 
ObjectBindPolicyGetObjectBindPolicy ()
 
const ObjectBindPolicyGetObjectBindPolicy () const
 
IObjectHandlePolicyGetObjectHandlePolicy ()
 
const IObjectHandlePolicyGetObjectHandlePolicy () const
 
bool GetScriptObjectType (const BSFixedString &a_className, BSTSmartPointer< ObjectTypeInfo > &a_outTypeInfoPtr)
 
bool GetScriptObjectType (VMTypeID a_typeID, BSTSmartPointer< ObjectTypeInfo > &a_outTypeInfoPtr)
 
bool GetScriptObjectTypeNoLoad (const BSFixedString &a_className, BSTSmartPointer< ObjectTypeInfo > &a_typeInfoPtr) const
 
bool GetScriptObjectTypeNoLoad (VMTypeID a_typeID, BSTSmartPointer< ObjectTypeInfo > &a_outTypeInfoPtr) const
 
bool GetVariableValue (const BSTSmartPointer< Object > &a_objPtr, std::uint32_t a_index, Variable &a_out) const
 
bool GetVariableValue (VMHandle a_handle, const BSFixedString &a_className, std::int32_t a_variableIndex, Variable &a_out) const
 
template<class F >
void RegisterFunction (std::string_view a_fnName, std::string_view a_className, F a_callback, bool a_callableFromTasklets=false)
 
template<class R , class F >
void RegisterLatentFunction (std::string_view a_fnName, std::string_view a_className, F a_callback, bool a_callableFromTasklets=false)
 Registers a latent function. Unlike normal native functions, latent functions do not return a result to the script immediately. More...
 
template<class V >
requires is_return_convertible_v< V > void ReturnLatentResult (VMStackID a_stackID, V result)
 Returns a result to the stack if it is waiting for a latent function to return. This is a wrapper over ReturnFromLatent. More...
 
void SetCallableFromTasklets (const char *a_className, const char *a_stateName, const char *a_fnName, bool a_callable)
 
void SetCallableFromTasklets (const char *a_className, const char *a_fnName, bool a_callable)
 
void TraceForm (TESForm *a_form, const char *a_str, VMStackID a_stackID, Severity a_severity=Severity::kError)
 
void VTraceStack (VMStackID a_stackID, Severity a_severity, const char *a_fmt,...)
 
- Public Member Functions inherited from RE::BSIntrusiveRefCounted
std::uint32_t IncRef () const
 
std::uint32_t DecRef () const
 
 TES_HEAP_REDEFINE_NEW ()
 
- Public Member Functions inherited from RE::BSScript::IVMObjectBindInterface
virtual ~IVMObjectBindInterface ()
 
- Public Member Functions inherited from RE::BSScript::IVMSaveLoadInterface
virtual ~IVMSaveLoadInterface ()
 
- Public Member Functions inherited from RE::BSScript::IVMDebugInterface
virtual ~IVMDebugInterface ()
 
virtual void DumpRunningStacksToLog ()=0
 
- Public Member Functions inherited from RE::BSTEventSource< StatsEvent >
 BSTEventSource ()
 
void AddEventSink (Sink *a_eventSink)
 
void AddEventSink (BSTEventSink< SinkEvent > *a_sink)
 
void RemoveEventSink (Sink *a_eventSink)
 
void SendEvent (const StatsEvent *a_event)
 
void operator() (const StatsEvent *a_event)
 

Static Public Member Functions

static VirtualMachineGetSingleton ()
 

Public Attributes

ErrorLoggererrorLogger
 
IMemoryPagePolicymemoryPagePolicy
 
IObjectHandlePolicyhandlePolicy
 
ObjectBindPolicyobjectBindPolicy
 
IFreezeQueryfreezeQuery
 
IStackCallbackSaveInterfacestackCallbackSaveInterface
 
IProfilePolicyprofilePolicy
 
ISavePatcherInterfacesavePatcherInterface
 
BSSpinLock typeInfoLock
 
LinkerProcessor linker
 
BSTHashMap< BSFixedString, BSTSmartPointer< ObjectTypeInfo > > objectTypeMap
 
BSTHashMap< VMTypeID, BSFixedStringtypeIDToObjectType
 
BSTHashMap< BSFixedString, VMTypeIDobjectTypeToTypeID
 
BSTArray< BSTSmartPointer< ObjectTypeInfo > > typesToUnload
 
BSSpinLock funcQueueLock
 
BSTStaticFreeList< FunctionMessage, 1024 > funcMsgPool
 
BSTCommonLLMessageQueue< FunctionMessagefuncMsgQueue
 
BSTArray< FunctionMessageoverflowFuncMsgs
 
BSTArray< CodeTasklet * > vmTasks
 
std::uint32_t uiWaitingFunctionMessages
 
bool overstressed
 
bool initialized
 
std::uint16_t pad827E
 
BSTCommonStaticMessageQueue< SuspendedStack, 128 > suspendQueue1
 
BSTCommonStaticMessageQueue< SuspendedStack, 128 > suspendQueue2
 
BSTArray< SuspendedStackoverflowSuspendArray1
 
BSTArray< SuspendedStackoverflowSuspendArray2
 
BSSpinLock suspendQueueLock
 
BSTCommonStaticMessageQueue< SuspendedStack, 128 > * stacksToResume
 
BSTArray< SuspendedStack > * stacksToResumeOverflow
 
BSTCommonStaticMessageQueue< SuspendedStack, 128 > * stacksToSuspend
 
BSTArray< SuspendedStack > * stacksToSuspendOverflow
 
BSSpinLock runningStacksLock
 
BSTHashMap< VMStackID, BSTSmartPointer< Stack > > allRunningStacks
 
BSTHashMap< VMStackID, BSTSmartPointer< Stack > > waitingLatentReturns
 
VMStackID nextStackID
 
BSSpinLock frozenStacksLock
 
std::uint32_t pad938C
 
BSScript::StackfrozenStacks
 
std::uint32_t frozenStacksCount
 
stl::enumeration< FreezeState, std::uint32_t > freezeState
 
BSSpinLock attachedScriptsLock
 
BSTHashMap< VMHandle, BSTSmallSharedArray< AttachedScript > > attachedScripts
 
std::uint32_t unk93D8
 
std::uint32_t unk93DC
 
BSTArray< BSTSmartPointer< Object > > objectsAwaitingCleanup
 
BSSpinLock arraysLock
 
std::uint32_t nextArrayToClean
 
std::uint32_t pad9404
 
BSTArray< BSTSmartPointer< Array > > arrays
 
BSSpinLock objectResetLock
 
BSTArray< BSTSmartPointer< Object > > objectsAwaitingReset
 
BSSpinLock objectLock
 
BSTHashMap< VMHandle, BSTSmartPointer< Object > > objectTable
 
BSTHashMap< VMHandle, BSTSmartPointer< Array > > arrayTable
 
BSSpinLock queuedUnbindLock
 
BSTArray< QueuedUnbindRefsqueuedUnbinds
 
std::byte saveGameVersion
 
std::uint32_t unk94CC
 
std::uint32_t unk94D0
 
WritableStringTable writableStringTable
 
ReadableStringTable readableStringTable
 
BSTHashMap< BSFixedString, BSTSmartPointer< ObjectTypeInfo > > * writeableTypeTable
 
BSTHashMap< BSFixedString, BSTSmartPointer< ObjectTypeInfo > > * readableTypeTable
 
- Public Attributes inherited from RE::BSScript::IVirtualMachine
std::uint32_t pad0C
 
- Public Attributes inherited from RE::BSTEventSource< StatsEvent >
BSTArray< Sink * > sinks
 
BSTArray< Sink * > pendingRegisters
 
BSTArray< Sink * > pendingUnregisters
 
BSSpinLock lock
 
bool notifying
 
std::uint8_t pad51
 
std::uint16_t pad52
 
std::uint32_t pad54
 

Static Public Attributes

static constexpr auto RTTI = RTTI_BSScript__Internal__VirtualMachine
 
static constexpr auto VTABLE = VTABLE_BSScript__Internal__VirtualMachine
 
- Static Public Attributes inherited from RE::BSScript::IVirtualMachine
static constexpr auto RTTI = RTTI_BSScript__IVirtualMachine
 
static constexpr auto VTABLE = VTABLE_BSScript__IVirtualMachine
 
- Static Public Attributes inherited from RE::BSScript::IVMObjectBindInterface
static constexpr auto RTTI = RTTI_BSScript__IVMObjectBindInterface
 
static constexpr auto VTABLE = VTABLE_BSScript__IVMObjectBindInterface
 
- Static Public Attributes inherited from RE::BSScript::IVMSaveLoadInterface
static constexpr auto RTTI = RTTI_BSScript__IVMSaveLoadInterface
 
static constexpr auto VTABLE = VTABLE_BSScript__IVMSaveLoadInterface
 
- Static Public Attributes inherited from RE::BSScript::IVMDebugInterface
static constexpr auto RTTI = RTTI_BSScript__IVMDebugInterface
 
static constexpr auto VTABLE = VTABLE_BSScript__IVMDebugInterface
 

Additional Inherited Members

- Protected Attributes inherited from RE::BSIntrusiveRefCounted
volatile std::uint32_t _refCount { 0 }
 

Member Enumeration Documentation

◆ FreezeState

Enumerator
kNotFrozen 
kFreezing 
kFrozen 

Constructor & Destructor Documentation

◆ ~VirtualMachine()

RE::BSScript::Internal::VirtualMachine::~VirtualMachine ( )
override

Member Function Documentation

◆ BindNativeMethod()

bool RE::BSScript::Internal::VirtualMachine::BindNativeMethod ( IFunction a_fn)
overridevirtual

◆ BindObject()

void RE::BSScript::Internal::VirtualMachine::BindObject ( BSTSmartPointer< Object > &  a_objPtr,
VMHandle  a_handle,
bool  a_conditional 
)
overridevirtual

◆ CalculateFullReloadList()

void RE::BSScript::Internal::VirtualMachine::CalculateFullReloadList ( void  ) const
overridevirtual

◆ CastObject()

bool RE::BSScript::Internal::VirtualMachine::CastObject ( const BSTSmartPointer< Object > &  a_fromObjPtr,
const BSTSmartPointer< ObjectTypeInfo > &  a_toTypeInfoPtr,
BSTSmartPointer< Object > &  a_toObjPtr 
)
overridevirtual

◆ CleanupSave()

void RE::BSScript::Internal::VirtualMachine::CleanupSave ( )
overridevirtual

◆ CreateArray1()

bool RE::BSScript::Internal::VirtualMachine::CreateArray1 ( const TypeInfo a_typeInfo,
std::uint32_t  a_size,
BSTSmartPointer< Array > &  a_arrayPtr 
)
overridevirtual

◆ CreateArray2()

bool RE::BSScript::Internal::VirtualMachine::CreateArray2 ( TypeInfo::RawType  a_typeID,
const BSFixedString a_className,
std::uint32_t  a_size,
BSTSmartPointer< Array > &  a_arrayPtr 
)
overridevirtual

◆ CreateEmptyTasklet()

bool RE::BSScript::Internal::VirtualMachine::CreateEmptyTasklet ( Stack a_stack,
Internal::CodeTasklet **  a_out 
)
overridevirtual

◆ CreateObject1()

bool RE::BSScript::Internal::VirtualMachine::CreateObject1 ( const BSFixedString a_className,
void *  a_property,
BSTSmartPointer< Object > &  a_objPtr 
)
overridevirtual

◆ CreateObject2()

bool RE::BSScript::Internal::VirtualMachine::CreateObject2 ( const BSFixedString a_className,
BSTSmartPointer< Object > &  a_result 
)
overridevirtual

◆ CreateObjectWithProperties()

bool RE::BSScript::Internal::VirtualMachine::CreateObjectWithProperties ( const BSFixedString a_className,
std::uint32_t  a_numProperties,
BSTSmartPointer< Object > &  a_objPtr 
)
overridevirtual

◆ DispatchMethodCall1()

bool RE::BSScript::Internal::VirtualMachine::DispatchMethodCall1 ( BSTSmartPointer< Object > &  a_obj,
const BSFixedString a_fnName,
IFunctionArguments a_args,
BSTSmartPointer< IStackCallbackFunctor > &  a_result 
)
overridevirtual

◆ DispatchMethodCall2()

bool RE::BSScript::Internal::VirtualMachine::DispatchMethodCall2 ( VMHandle  a_handle,
const BSFixedString a_className,
const BSFixedString a_fnName,
IFunctionArguments a_args,
BSTSmartPointer< IStackCallbackFunctor > &  a_result 
)
overridevirtual

◆ DispatchStaticCall()

bool RE::BSScript::Internal::VirtualMachine::DispatchStaticCall ( const BSFixedString a_className,
const BSFixedString a_fnName,
IFunctionArguments a_args,
BSTSmartPointer< IStackCallbackFunctor > &  a_result 
)
overridevirtual

◆ DispatchUnboundMethodCall()

bool RE::BSScript::Internal::VirtualMachine::DispatchUnboundMethodCall ( void  )
overridevirtual

◆ DropAllRunningData()

void RE::BSScript::Internal::VirtualMachine::DropAllRunningData ( )
overridevirtual

◆ FindBoundObject()

bool RE::BSScript::Internal::VirtualMachine::FindBoundObject ( VMHandle  a_handle,
const char *  a_className,
BSTSmartPointer< Object > &  a_result 
) const
overridevirtual

◆ ForEachBoundObject()

void RE::BSScript::Internal::VirtualMachine::ForEachBoundObject ( VMHandle  a_handle,
IForEachScriptObjectFunctor *  a_functor 
)
overridevirtual

◆ FormatAndPostMessage()

void RE::BSScript::Internal::VirtualMachine::FormatAndPostMessage ( const char *  a_message,
Severity  a_severity 
)
overridevirtual

◆ GetBoundHandle()

VMHandle RE::BSScript::Internal::VirtualMachine::GetBoundHandle ( const BSTSmartPointer< Object > &  a_objPtr) const
overridevirtual

◆ GetErrorLogger()

ErrorLogger* RE::BSScript::Internal::VirtualMachine::GetErrorLogger ( )
overridevirtual

◆ GetObjectBindPolicy1()

ObjectBindPolicy* RE::BSScript::Internal::VirtualMachine::GetObjectBindPolicy1 ( )
overridevirtual

◆ GetObjectBindPolicy2()

const ObjectBindPolicy* RE::BSScript::Internal::VirtualMachine::GetObjectBindPolicy2 ( ) const
overridevirtual

◆ GetObjectHandlePolicy1()

IObjectHandlePolicy* RE::BSScript::Internal::VirtualMachine::GetObjectHandlePolicy1 ( )
overridevirtual

◆ GetObjectHandlePolicy2()

const IObjectHandlePolicy* RE::BSScript::Internal::VirtualMachine::GetObjectHandlePolicy2 ( ) const
overridevirtual

◆ GetParentNativeType()

bool RE::BSScript::Internal::VirtualMachine::GetParentNativeType ( const BSFixedString a_className,
BSTSmartPointer< ObjectTypeInfo > &  a_typeInfoPtr 
)
overridevirtual

◆ GetPropertyValue()

bool RE::BSScript::Internal::VirtualMachine::GetPropertyValue ( BSTSmartPointer< Object > &  a_obj,
const char *  a_propertyName,
Variable a_getVal 
)
overridevirtual

◆ GetReadableStringTable()

ReadableStringTable RE::BSScript::Internal::VirtualMachine::GetReadableStringTable ( )
overridevirtual

◆ GetReadableTypeTable()

BSTHashMap<BSFixedString, BSTSmartPointer<ObjectTypeInfo> >* RE::BSScript::Internal::VirtualMachine::GetReadableTypeTable ( )
overridevirtual

◆ GetSaveGameVersion()

std::byte RE::BSScript::Internal::VirtualMachine::GetSaveGameVersion ( )
overridevirtual

◆ GetSavePatcherInterface()

ISavePatcherInterface* RE::BSScript::Internal::VirtualMachine::GetSavePatcherInterface ( )
overridevirtual

◆ GetScriptObjectsWithATypeID()

void RE::BSScript::Internal::VirtualMachine::GetScriptObjectsWithATypeID ( BSScrapArray< BSFixedString > &  a_results) const
overridevirtual

◆ GetScriptObjectType1()

bool RE::BSScript::Internal::VirtualMachine::GetScriptObjectType1 ( const BSFixedString a_className,
BSTSmartPointer< ObjectTypeInfo > &  a_outTypeInfoPtr 
)
overridevirtual

◆ GetScriptObjectType2()

bool RE::BSScript::Internal::VirtualMachine::GetScriptObjectType2 ( VMTypeID  a_typeID,
BSTSmartPointer< ObjectTypeInfo > &  a_outTypeInfoPtr 
)
overridevirtual

◆ GetScriptObjectTypeNoLoad1()

bool RE::BSScript::Internal::VirtualMachine::GetScriptObjectTypeNoLoad1 ( const BSFixedString a_className,
BSTSmartPointer< ObjectTypeInfo > &  a_typeInfoPtr 
) const
overridevirtual

◆ GetScriptObjectTypeNoLoad2()

bool RE::BSScript::Internal::VirtualMachine::GetScriptObjectTypeNoLoad2 ( VMTypeID  a_typeID,
BSTSmartPointer< ObjectTypeInfo > &  a_outTypeInfoPtr 
) const
overridevirtual

◆ GetSingleton()

static VirtualMachine* RE::BSScript::Internal::VirtualMachine::GetSingleton ( )
static

◆ GetStackByID()

bool RE::BSScript::Internal::VirtualMachine::GetStackByID ( VMStackID  a_stackID,
Stack **  a_out 
)
overridevirtual

◆ GetTypeIDForScriptObject()

bool RE::BSScript::Internal::VirtualMachine::GetTypeIDForScriptObject ( const BSFixedString a_className,
VMTypeID a_typeID 
) const
overridevirtual

◆ GetVariableValue1()

bool RE::BSScript::Internal::VirtualMachine::GetVariableValue1 ( const BSTSmartPointer< Object > &  a_objPtr,
std::uint32_t  a_index,
Variable a_out 
) const
overridevirtual

◆ GetVariableValue2()

bool RE::BSScript::Internal::VirtualMachine::GetVariableValue2 ( VMHandle  a_handle,
const BSFixedString a_className,
std::int32_t  a_variableIndex,
Variable a_out 
) const
overridevirtual

◆ GetWritableStringTable()

WritableStringTable RE::BSScript::Internal::VirtualMachine::GetWritableStringTable ( )
overridevirtual

◆ GetWritableStringTable2()

const WritableStringTable RE::BSScript::Internal::VirtualMachine::GetWritableStringTable2 ( )
overridevirtual

◆ GetWritableTypeTable()

BSTHashMap<BSFixedString, BSTSmartPointer<ObjectTypeInfo> >* RE::BSScript::Internal::VirtualMachine::GetWritableTypeTable ( )
overridevirtual

◆ GetWritableTypeTable2()

const BSTHashMap<BSFixedString, BSTSmartPointer<ObjectTypeInfo> >* RE::BSScript::Internal::VirtualMachine::GetWritableTypeTable2 ( )
overridevirtual

◆ HandleCObjectDeletion()

void RE::BSScript::Internal::VirtualMachine::HandleCObjectDeletion ( VMHandle  a_handle)
overridevirtual

◆ HandleLoadedBinding()

void RE::BSScript::Internal::VirtualMachine::HandleLoadedBinding ( BSTSmartPointer< Object > &  a_objPtr,
VMHandle  a_handle,
bool  a_conditional 
)
overridevirtual

◆ InitObjectProperties()

bool RE::BSScript::Internal::VirtualMachine::InitObjectProperties ( BSTSmartPointer< Object > &  a_objPtr,
void *  a_property,
bool  a_arg3 
)
overridevirtual

◆ IsCompletelyFrozen()

bool RE::BSScript::Internal::VirtualMachine::IsCompletelyFrozen ( ) const
overridevirtual

◆ IsWaitingOnLatent()

bool RE::BSScript::Internal::VirtualMachine::IsWaitingOnLatent ( VMStackID  a_stackID) const
overridevirtual

◆ LoadGame()

void RE::BSScript::Internal::VirtualMachine::LoadGame ( LoadStorageWrapper a_wrapper,
SkyrimScript::SaveFileHandleReaderWriter a_handle 
)
overridevirtual

◆ MarkSaveInvalid()

void RE::BSScript::Internal::VirtualMachine::MarkSaveInvalid ( BSStorage a_storage)
overridevirtual

◆ MoveBoundObjects()

void RE::BSScript::Internal::VirtualMachine::MoveBoundObjects ( VMHandle  a_from,
VMHandle  a_to 
)
overridevirtual

◆ RegisterForLogEvent()

void RE::BSScript::Internal::VirtualMachine::RegisterForLogEvent ( BSTEventSink< LogEvent > *  a_sink)
overridevirtual

◆ RegisterForStatsEvent()

void RE::BSScript::Internal::VirtualMachine::RegisterForStatsEvent ( BSTEventSink< StatsEvent > *  a_sink)
overridevirtual

◆ RegisterObjectType()

bool RE::BSScript::Internal::VirtualMachine::RegisterObjectType ( VMTypeID  a_typeID,
const char *  a_className 
)
overridevirtual

◆ ReloadType()

bool RE::BSScript::Internal::VirtualMachine::ReloadType ( const char *  a_className)
overridevirtual

◆ RemoveAllBoundObjects()

void RE::BSScript::Internal::VirtualMachine::RemoveAllBoundObjects ( VMHandle  a_handle)
overridevirtual

◆ RemoveAllDiskLoadedBoundObjects()

void RE::BSScript::Internal::VirtualMachine::RemoveAllDiskLoadedBoundObjects ( VMHandle  a_handle)
overridevirtual

◆ ResetAllBoundObjects()

void RE::BSScript::Internal::VirtualMachine::ResetAllBoundObjects ( VMHandle  a_handle)
overridevirtual

◆ ReturnFromLatent()

void RE::BSScript::Internal::VirtualMachine::ReturnFromLatent ( VMStackID  a_stackID,
const Variable a_val 
)
overridevirtual

◆ SaveGame()

void RE::BSScript::Internal::VirtualMachine::SaveGame ( SaveStorageWrapper a_wrapper,
SkyrimScript::SaveFileHandleReaderWriter a_handle,
bool  unk 
)
overridevirtual

◆ SendEvent()

void RE::BSScript::Internal::VirtualMachine::SendEvent ( VMHandle  a_handle,
const BSFixedString a_eventName,
IFunctionArguments a_args 
)
overridevirtual

◆ SendEventAll()

void RE::BSScript::Internal::VirtualMachine::SendEventAll ( const BSFixedString a_eventName,
IFunctionArguments a_args 
)
overridevirtual

◆ SetCallableFromTasklets1()

void RE::BSScript::Internal::VirtualMachine::SetCallableFromTasklets1 ( const char *  a_className,
const char *  a_stateName,
const char *  a_fnName,
bool  a_callable 
)
overridevirtual

◆ SetCallableFromTasklets2()

void RE::BSScript::Internal::VirtualMachine::SetCallableFromTasklets2 ( const char *  a_className,
const char *  a_fnName,
bool  a_callable 
)
overridevirtual

◆ SetLinkedCallback()

void RE::BSScript::Internal::VirtualMachine::SetLinkedCallback ( ITypeLinkedCallback *  a_callback)
overridevirtual

◆ SetOverstressed()

void RE::BSScript::Internal::VirtualMachine::SetOverstressed ( bool  a_set)
overridevirtual

◆ SetPropertyValue()

bool RE::BSScript::Internal::VirtualMachine::SetPropertyValue ( BSTSmartPointer< Object > &  a_obj,
const char *  a_propertyName,
Variable a_setVal 
)
overridevirtual

◆ TasksToJobs()

void RE::BSScript::Internal::VirtualMachine::TasksToJobs ( BSJobs::JobList &  a_jobList)
overridevirtual

◆ TraceStack()

void RE::BSScript::Internal::VirtualMachine::TraceStack ( const char *  a_str,
VMStackID  a_stackID,
Severity  a_severity = Severity::kInfo 
)
overridevirtual

◆ TypeCanBeBound()

bool RE::BSScript::Internal::VirtualMachine::TypeCanBeBound ( const BSFixedString a_className,
VMHandle  a_handle 
)
overridevirtual

◆ TypeIsValid()

bool RE::BSScript::Internal::VirtualMachine::TypeIsValid ( const BSFixedString a_className)
overridevirtual

◆ UnbindObject()

void RE::BSScript::Internal::VirtualMachine::UnbindObject ( const BSTSmartPointer< Object > &  a_objPtr)
overridevirtual

◆ Unk_06()

void RE::BSScript::Internal::VirtualMachine::Unk_06 ( )
overridevirtual

◆ Unk_08()

void RE::BSScript::Internal::VirtualMachine::Unk_08 ( void *  unk)
overridevirtual

◆ Unk_09()

void RE::BSScript::Internal::VirtualMachine::Unk_09 ( void  )
overridevirtual

◆ Unk_0A()

void RE::BSScript::Internal::VirtualMachine::Unk_0A ( VMHandle  a_handle,
Object **  a_out 
)
overridevirtual

◆ Unk_0B()

void RE::BSScript::Internal::VirtualMachine::Unk_0B ( void *  unk)
overridevirtual

◆ Unk_0C()

void RE::BSScript::Internal::VirtualMachine::Unk_0C ( void  )
overridevirtual

◆ Unk_0D()

void RE::BSScript::Internal::VirtualMachine::Unk_0D ( VMHandle  a_handle,
Array **  a_out 
)
overridevirtual

◆ Unk_0E()

void RE::BSScript::Internal::VirtualMachine::Unk_0E ( LoadStorageWrapper a_storage,
void *  unk 
)
overridevirtual

◆ UnregisterForLogEvent()

void RE::BSScript::Internal::VirtualMachine::UnregisterForLogEvent ( BSTEventSink< LogEvent > *  a_sink)
overridevirtual

◆ UnregisterForStatsEvent()

void RE::BSScript::Internal::VirtualMachine::UnregisterForStatsEvent ( BSTEventSink< StatsEvent > *  a_sink)
overridevirtual

◆ Update()

void RE::BSScript::Internal::VirtualMachine::Update ( float  a_budget)
overridevirtual

◆ UpdateTasklets()

void RE::BSScript::Internal::VirtualMachine::UpdateTasklets ( float  a_budget)
overridevirtual

Member Data Documentation

◆ allRunningStacks

BSTHashMap<VMStackID, BSTSmartPointer<Stack> > RE::BSScript::Internal::VirtualMachine::allRunningStacks

◆ arrays

BSTArray<BSTSmartPointer<Array> > RE::BSScript::Internal::VirtualMachine::arrays

◆ arraysLock

BSSpinLock RE::BSScript::Internal::VirtualMachine::arraysLock
mutable

◆ arrayTable

BSTHashMap<VMHandle, BSTSmartPointer<Array> > RE::BSScript::Internal::VirtualMachine::arrayTable

◆ attachedScripts

BSTHashMap<VMHandle, BSTSmallSharedArray<AttachedScript> > RE::BSScript::Internal::VirtualMachine::attachedScripts

◆ attachedScriptsLock

BSSpinLock RE::BSScript::Internal::VirtualMachine::attachedScriptsLock
mutable

◆ errorLogger

ErrorLogger* RE::BSScript::Internal::VirtualMachine::errorLogger

◆ freezeQuery

IFreezeQuery* RE::BSScript::Internal::VirtualMachine::freezeQuery

◆ freezeState

stl::enumeration<FreezeState, std::uint32_t> RE::BSScript::Internal::VirtualMachine::freezeState

◆ frozenStacks

BSScript::Stack* RE::BSScript::Internal::VirtualMachine::frozenStacks

◆ frozenStacksCount

std::uint32_t RE::BSScript::Internal::VirtualMachine::frozenStacksCount

◆ frozenStacksLock

BSSpinLock RE::BSScript::Internal::VirtualMachine::frozenStacksLock
mutable

◆ funcMsgPool

BSTStaticFreeList<FunctionMessage, 1024> RE::BSScript::Internal::VirtualMachine::funcMsgPool

◆ funcMsgQueue

BSTCommonLLMessageQueue<FunctionMessage> RE::BSScript::Internal::VirtualMachine::funcMsgQueue

◆ funcQueueLock

BSSpinLock RE::BSScript::Internal::VirtualMachine::funcQueueLock
mutable

◆ handlePolicy

IObjectHandlePolicy* RE::BSScript::Internal::VirtualMachine::handlePolicy

◆ initialized

bool RE::BSScript::Internal::VirtualMachine::initialized

◆ linker

LinkerProcessor RE::BSScript::Internal::VirtualMachine::linker

◆ memoryPagePolicy

IMemoryPagePolicy* RE::BSScript::Internal::VirtualMachine::memoryPagePolicy

◆ nextArrayToClean

std::uint32_t RE::BSScript::Internal::VirtualMachine::nextArrayToClean

◆ nextStackID

VMStackID RE::BSScript::Internal::VirtualMachine::nextStackID

◆ objectBindPolicy

ObjectBindPolicy* RE::BSScript::Internal::VirtualMachine::objectBindPolicy

◆ objectLock

BSSpinLock RE::BSScript::Internal::VirtualMachine::objectLock
mutable

◆ objectResetLock

BSSpinLock RE::BSScript::Internal::VirtualMachine::objectResetLock
mutable

◆ objectsAwaitingCleanup

BSTArray<BSTSmartPointer<Object> > RE::BSScript::Internal::VirtualMachine::objectsAwaitingCleanup

◆ objectsAwaitingReset

BSTArray<BSTSmartPointer<Object> > RE::BSScript::Internal::VirtualMachine::objectsAwaitingReset

◆ objectTable

BSTHashMap<VMHandle, BSTSmartPointer<Object> > RE::BSScript::Internal::VirtualMachine::objectTable

◆ objectTypeMap

BSTHashMap<BSFixedString, BSTSmartPointer<ObjectTypeInfo> > RE::BSScript::Internal::VirtualMachine::objectTypeMap

◆ objectTypeToTypeID

BSTHashMap<BSFixedString, VMTypeID> RE::BSScript::Internal::VirtualMachine::objectTypeToTypeID

◆ overflowFuncMsgs

BSTArray<FunctionMessage> RE::BSScript::Internal::VirtualMachine::overflowFuncMsgs

◆ overflowSuspendArray1

BSTArray<SuspendedStack> RE::BSScript::Internal::VirtualMachine::overflowSuspendArray1

◆ overflowSuspendArray2

BSTArray<SuspendedStack> RE::BSScript::Internal::VirtualMachine::overflowSuspendArray2

◆ overstressed

bool RE::BSScript::Internal::VirtualMachine::overstressed

◆ pad827E

std::uint16_t RE::BSScript::Internal::VirtualMachine::pad827E

◆ pad938C

std::uint32_t RE::BSScript::Internal::VirtualMachine::pad938C

◆ pad9404

std::uint32_t RE::BSScript::Internal::VirtualMachine::pad9404

◆ profilePolicy

IProfilePolicy* RE::BSScript::Internal::VirtualMachine::profilePolicy

◆ queuedUnbindLock

BSSpinLock RE::BSScript::Internal::VirtualMachine::queuedUnbindLock
mutable

◆ queuedUnbinds

BSTArray<QueuedUnbindRefs> RE::BSScript::Internal::VirtualMachine::queuedUnbinds

◆ readableStringTable

ReadableStringTable RE::BSScript::Internal::VirtualMachine::readableStringTable

◆ readableTypeTable

BSTHashMap<BSFixedString, BSTSmartPointer<ObjectTypeInfo> >* RE::BSScript::Internal::VirtualMachine::readableTypeTable

◆ RTTI

constexpr auto RE::BSScript::Internal::VirtualMachine::RTTI = RTTI_BSScript__Internal__VirtualMachine
inlinestaticconstexpr

◆ runningStacksLock

BSSpinLock RE::BSScript::Internal::VirtualMachine::runningStacksLock
mutable

◆ saveGameVersion

std::byte RE::BSScript::Internal::VirtualMachine::saveGameVersion

◆ savePatcherInterface

ISavePatcherInterface* RE::BSScript::Internal::VirtualMachine::savePatcherInterface

◆ stackCallbackSaveInterface

IStackCallbackSaveInterface* RE::BSScript::Internal::VirtualMachine::stackCallbackSaveInterface

◆ stacksToResume

BSTCommonStaticMessageQueue<SuspendedStack, 128>* RE::BSScript::Internal::VirtualMachine::stacksToResume

◆ stacksToResumeOverflow

BSTArray<SuspendedStack>* RE::BSScript::Internal::VirtualMachine::stacksToResumeOverflow

◆ stacksToSuspend

BSTCommonStaticMessageQueue<SuspendedStack, 128>* RE::BSScript::Internal::VirtualMachine::stacksToSuspend

◆ stacksToSuspendOverflow

BSTArray<SuspendedStack>* RE::BSScript::Internal::VirtualMachine::stacksToSuspendOverflow

◆ suspendQueue1

BSTCommonStaticMessageQueue<SuspendedStack, 128> RE::BSScript::Internal::VirtualMachine::suspendQueue1

◆ suspendQueue2

BSTCommonStaticMessageQueue<SuspendedStack, 128> RE::BSScript::Internal::VirtualMachine::suspendQueue2

◆ suspendQueueLock

BSSpinLock RE::BSScript::Internal::VirtualMachine::suspendQueueLock
mutable

◆ typeIDToObjectType

BSTHashMap<VMTypeID, BSFixedString> RE::BSScript::Internal::VirtualMachine::typeIDToObjectType

◆ typeInfoLock

BSSpinLock RE::BSScript::Internal::VirtualMachine::typeInfoLock
mutable

◆ typesToUnload

BSTArray<BSTSmartPointer<ObjectTypeInfo> > RE::BSScript::Internal::VirtualMachine::typesToUnload

◆ uiWaitingFunctionMessages

std::uint32_t RE::BSScript::Internal::VirtualMachine::uiWaitingFunctionMessages

◆ unk93D8

std::uint32_t RE::BSScript::Internal::VirtualMachine::unk93D8

◆ unk93DC

std::uint32_t RE::BSScript::Internal::VirtualMachine::unk93DC

◆ unk94CC

std::uint32_t RE::BSScript::Internal::VirtualMachine::unk94CC

◆ unk94D0

std::uint32_t RE::BSScript::Internal::VirtualMachine::unk94D0

◆ vmTasks

BSTArray<CodeTasklet*> RE::BSScript::Internal::VirtualMachine::vmTasks

◆ VTABLE

constexpr auto RE::BSScript::Internal::VirtualMachine::VTABLE = VTABLE_BSScript__Internal__VirtualMachine
inlinestaticconstexpr

◆ waitingLatentReturns

BSTHashMap<VMStackID, BSTSmartPointer<Stack> > RE::BSScript::Internal::VirtualMachine::waitingLatentReturns

◆ writableStringTable

WritableStringTable RE::BSScript::Internal::VirtualMachine::writableStringTable

◆ writeableTypeTable

BSTHashMap<BSFixedString, BSTSmartPointer<ObjectTypeInfo> >* RE::BSScript::Internal::VirtualMachine::writeableTypeTable

The documentation for this class was generated from the following file: