14#include <unordered_map>
18#define PHOTON_ECMA_UNDEFINED "undefined"
19#define PHOTON_ECMA_NULL "null"
20#define PHOTON_ECMA_WINDOW "window"
28 class ECMAVirtualMachine;
29 struct ECMAEnvironment;
32 using ECMAValue = std::variant<std::monostate, Real, std::string, bool, ECMAObject>;
JavaScriptEngine class program.
Definition ECMAVirtualMachine.hpp:85
std::vector< ECMAValue > m_stack
Definition ECMAVirtualMachine.hpp:89
std::vector< ECMAObject > m_objects
Definition ECMAVirtualMachine.hpp:88
~ECMAVirtualMachine()=default
Bool pre_eval(const String &line, BOOL &comment_ctrl)
Bool eval(ECMAInstruction &opcode)
Bool execute()
Definition ECMAVirtualMachine.mm:148
std::vector< ECMAValue > m_variables
Definition ECMAVirtualMachine.hpp:90
std::vector< String > m_script
Definition ECMAVirtualMachine.hpp:87
PHOTON_COPY_DEFAULT(ECMAVirtualMachine)
This file is also about defining core js concepts.
Definition BasePhotonWindow.hpp:22
ECMAOpcode
Definition ECMAVirtualMachine.hpp:61
@ kECMALoadConst
Definition ECMAVirtualMachine.hpp:63
@ kECMALoadVar
Definition ECMAVirtualMachine.hpp:65
@ kECMASetProp
Definition ECMAVirtualMachine.hpp:69
@ kECMASubExpr
Definition ECMAVirtualMachine.hpp:67
@ kECMAStoreVar
Definition ECMAVirtualMachine.hpp:64
@ kECMAInvalid
Definition ECMAVirtualMachine.hpp:62
@ kECMACallNative
Definition ECMAVirtualMachine.hpp:68
@ kECMAAddExpr
Definition ECMAVirtualMachine.hpp:66
std::function< bool(ECMAVirtualMachine &)> ECMAFunction
Definition ECMAVirtualMachine.hpp:34
bool Bool
Definition Config.hpp:101
std::variant< std::monostate, Real, std::string, bool, ECMAObject > ECMAValue
Definition ECMAVirtualMachine.hpp:32
std::string String
Definition Core.hpp:37
Definition ECMAVirtualMachine.hpp:73
size_t m_index
Definition ECMAVirtualMachine.hpp:80
String m_name
Definition ECMAVirtualMachine.hpp:79
Definition ECMAVirtualMachine.hpp:37
ECMAObject & operator-=(const ECMAObject &rhs)
Definition ECMAVirtualMachine.hpp:49
std::unordered_map< String, ECMAValue > m_properties
Definition ECMAVirtualMachine.hpp:41
ECMAObject & operator+=(const ECMAObject &rhs)
Definition ECMAVirtualMachine.hpp:54
ECMAObject & operator=(const ECMAObject &rhs)
Definition ECMAVirtualMachine.hpp:43
std::unordered_map< String, ECMAFunction > m_methods
Definition ECMAVirtualMachine.hpp:40
String m_name
Definition ECMAVirtualMachine.hpp:38