CommonLibVR
StackFrame.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSTSmartPointer.h"
4 #include "RE/V/Variable.h"
5 
6 namespace RE
7 {
8  namespace BSScript
9  {
10  class IFunction;
11  class ObjectTypeInfo;
12  class Stack;
13 
14  class StackFrame
15  {
16  public:
17  [[nodiscard]] std::uint32_t GetPageForFrame() const;
18  [[nodiscard]] Variable& GetStackFrameVariable(std::uint32_t a_index, std::uint32_t a_pageHint) const;
19 
20  // members
21  Stack* parent; // 00
25  std::uint32_t instructionPointer; // 20
26  std::uint32_t pad24; // 24
27  Variable self; // 28
28  std::uint32_t size; // 38
29  bool instructionsValid; // 3C
30  std::uint8_t pad3D; // 3D
31  std::uint16_t pad3E; // 3E
32 
33  //Variable args[4]; 40 - minimum space for 4 args is allocated
34  };
35  static_assert(sizeof(StackFrame) == 0x40); // frames can be larger
36  }
37 }
Definition: StackFrame.h:15
std::uint32_t GetPageForFrame() const
std::uint32_t pad24
Definition: StackFrame.h:26
StackFrame * previousFrame
Definition: StackFrame.h:22
std::uint16_t pad3E
Definition: StackFrame.h:31
std::uint32_t size
Definition: StackFrame.h:28
std::uint8_t pad3D
Definition: StackFrame.h:30
BSTSmartPointer< ObjectTypeInfo > owningObjectType
Definition: StackFrame.h:24
bool instructionsValid
Definition: StackFrame.h:29
Variable & GetStackFrameVariable(std::uint32_t a_index, std::uint32_t a_pageHint) const
BSTSmartPointer< IFunction > owningFunction
Definition: StackFrame.h:23
Stack * parent
Definition: StackFrame.h:21
std::uint32_t instructionPointer
Definition: StackFrame.h:25
Definition: Stack.h:25
Definition: Variable.h:15
Definition: BSTSmartPointer.h:37
Definition: AbsorbEffect.h:6