Files
Commonwealth-Online-Public/plugin/lib/commonlibf4/include/RE/B/BSScript_Internal_IFunction.h
T
2026-05-30 18:33:24 +12:00

74 lines
4.4 KiB
C++

#pragma once
#include "RE/B/BSFixedString.h"
#include "RE/B/BSIntrusiveRefCounted.h"
#include "RE/B/BSTSmartPointer.h"
#include "RE/M/MemoryManager.h"
namespace RE
{
namespace BSScript
{
class ErrorLogger;
class Stack;
class StackFrame;
class TypeInfo;
namespace Internal
{
class VirtualMachine;
}
class __declspec(novtable) IFunction :
public BSIntrusiveRefCounted // 08
{
public:
static constexpr auto RTTI{ RTTI::BSScript__IFunction };
static constexpr auto VTABLE{ VTABLE::BSScript__IFunction };
enum class CallResult
{
kCompleted = 0x0,
kSetupForVM = 0x1,
kInProgress = 0x2,
kFailedRetry = 0x3,
kFailedAbort = 0x4
};
enum class FunctionType
{
kNormal = 0x0,
kPropertyGetter = 0x1,
kPropertySetter = 0x2
};
virtual ~IFunction() = default; // 00
// add
virtual const BSFixedString& GetName() const = 0; // 01
virtual const BSFixedString& GetObjectTypeName() const = 0; // 02
virtual const BSFixedString& GetStateName() const = 0; // 03
virtual TypeInfo GetReturnType() const = 0; // 04
virtual std::uint32_t GetParamCount() const = 0; // 05
virtual void GetParam(std::uint32_t a_param, BSFixedString& a_paramName, TypeInfo& a_paramType) const = 0; // 06
virtual std::uint32_t GetStackFrameSize() const = 0; // 07
virtual bool GetIsNative() const = 0; // 08
virtual bool GetIsStatic() const = 0; // 09
virtual bool GetIsEmpty() const = 0; // 0A
virtual FunctionType GetFunctionType() const = 0; // 0B
virtual std::uint32_t GetUserFlags() const = 0; // 0C
virtual const BSFixedString& GetDocString() const = 0; // 0D
virtual void InsertLocals(StackFrame& a_frame) const = 0; // 0E
virtual CallResult Call(const BSTSmartPointer<Stack>& a_stack, ErrorLogger& a_errorLogger, Internal::VirtualMachine& a_vm, bool a_inScriptTasklet) const = 0; // 0F
virtual const BSFixedString& GetSourceFilename() const = 0; // 10
virtual bool TranslateIPToLineNumber(std::uint32_t a_ip, std::uint32_t& a_lineNumber) const = 0; // 11
virtual bool GetVarNameForStackIndex(std::uint32_t a_index, BSFixedString& a_variableName) const = 0; // 12
virtual bool CanBeCalledFromTasklets() const = 0; // 13
virtual void SetCallableFromTasklets(bool a_taskletCallable) = 0; // 14
F4_HEAP_REDEFINE_NEW(IFunction);
};
static_assert(sizeof(IFunction) == 0x10);
}
}