diff --git a/Source/PluginProcessor.cpp b/Source/PluginProcessor.cpp index 2b83b58..0b583b0 100644 --- a/Source/PluginProcessor.cpp +++ b/Source/PluginProcessor.cpp @@ -14,7 +14,6 @@ #include "audio/VectorCancellingEffect.h" #include "audio/DistortEffect.h" #include "audio/SmoothEffect.h" -#include "lua/luaimport.h" //============================================================================== OscirenderAudioProcessor::OscirenderAudioProcessor() @@ -39,49 +38,6 @@ OscirenderAudioProcessor::OscirenderAudioProcessor() allEffects.push_back(std::make_shared(std::make_unique(true), "Vertical shift", "verticalDistort")); allEffects.push_back(std::make_shared(std::make_unique(false), "Horizontal shift", "horizontalDistort")); allEffects.push_back(std::make_shared(std::make_unique(), "Smoothing", "smoothing")); - - // initialization - lua_State * L = luaL_newstate(); - luaL_openlibs(L); - - // execute script - const char* lua_script = "print('Hello World!')"; - int load_stat = luaL_loadbuffer(L, lua_script, strlen(lua_script), lua_script); - lua_pcall(L, 0, 0, 0); - - const char* lua_function_script = - R"LUA( - function add(x, y) - return x + y - end - )LUA"; - - // execute script - load_stat = luaL_loadbuffer(L, lua_function_script, strlen(lua_function_script), lua_function_script); - lua_pcall(L, 0, 0, 0); - - int a = 5; - int b = 6; - int sum; - - // fetch the function - lua_getglobal(L, "add"); - - // pass two numbers to lua as arguemnt 1 and 2 - lua_pushnumber(L, a); - lua_pushnumber(L, b); - - // call the function with 2 arguments and receive 1 result - lua_call(L, 2, 1); - - // read the restul from the top of the stack and cast to int - sum = (int)lua_tointeger(L, -1); - lua_pop(L, 1); - - DBG("Result: " << sum); - - // cleanup - lua_close(L); } OscirenderAudioProcessor::~OscirenderAudioProcessor() @@ -348,7 +304,7 @@ void OscirenderAudioProcessor::updateFrame() { } void OscirenderAudioProcessor::updateLengthIncrement() { - lengthIncrement = max(frameLength / (currentSampleRate / frequency), MIN_LENGTH_INCREMENT); + lengthIncrement = std::max(frameLength / (currentSampleRate / frequency), MIN_LENGTH_INCREMENT); } void OscirenderAudioProcessor::processBlock (juce::AudioBuffer& buffer, juce::MidiBuffer& midiMessages) @@ -414,8 +370,8 @@ void OscirenderAudioProcessor::processBlock (juce::AudioBuffer& buffer, j // hard cap on how many times it can be over the length to // prevent audio stuttering - frameDrawn += min(lengthIncrement, 20 * length); - shapeDrawn += min(lengthIncrement, 20 * length); + frameDrawn += std::min(lengthIncrement, 20 * length); + shapeDrawn += std::min(lengthIncrement, 20 * length); // Need to skip all shapes that the lengthIncrement draws over. // This is especially an issue when there are lots of small lines being diff --git a/Source/lua/LuaParser.cpp b/Source/lua/LuaParser.cpp new file mode 100644 index 0000000..f697b25 --- /dev/null +++ b/Source/lua/LuaParser.cpp @@ -0,0 +1,52 @@ +#include "LuaParser.h" +#include "luaimport.h" + + +LuaParser::LuaParser(juce::String script) { + // initialization + L = luaL_newstate(); + luaL_openlibs(L); + + this->script = script; +} + +LuaParser::~LuaParser() { + lua_close(L); +} + +std::vector> LuaParser::draw() { + std::vector> shapes; + + for (int i = 0; i < 100; i++) { + lua_pushnumber(L, step); + lua_setglobal(L, "step"); + + const int ret = luaL_dostring(L, script.toUTF8()); + if (ret != 0) { + const char* error = lua_tostring(L, -1); + DBG(error); + lua_pop(L, 1); + } else if (lua_istable(L, -1)) { + // get the first element of the table + lua_pushinteger(L, 1); + lua_gettable(L, -2); + float x = (int)lua_tonumber(L, -1); + lua_pop(L, 1); + + // get the second element of the table + lua_pushinteger(L, 2); + lua_gettable(L, -2); + float y = (int)lua_tonumber(L, -1); + lua_pop(L, 1); + + shapes.push_back(std::make_unique(x, y)); + } + + // pop the table + lua_pop(L, 1); + + step++; + } + + return shapes; +} diff --git a/Source/lua/LuaParser.h b/Source/lua/LuaParser.h new file mode 100644 index 0000000..1596168 --- /dev/null +++ b/Source/lua/LuaParser.h @@ -0,0 +1,17 @@ +#pragma once +#include "../shape/Vector2.h" +#include +#include "../shape/Shape.h" + +struct lua_State; +class LuaParser { +public: + LuaParser(juce::String script); + ~LuaParser(); + + std::vector> draw(); +private: + long step = 1; + lua_State* L; + juce::String script; +}; \ No newline at end of file diff --git a/Source/lua/sol.hpp b/Source/lua/sol.hpp deleted file mode 100644 index 0bb68eb..0000000 --- a/Source/lua/sol.hpp +++ /dev/null @@ -1,28907 +0,0 @@ -// The MIT License (MIT) - -// Copyright (c) 2013-2020 Rapptz, ThePhD and contributors - -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -// This file was generated with a script. -// Generated 2022-06-25 08:14:19.151876 UTC -// This header was generated with sol v3.3.0 (revision eba86625) -// https://github.com/ThePhD/sol2 - -#ifndef SOL_SINGLE_INCLUDE_HPP -#define SOL_SINGLE_INCLUDE_HPP - -// beginning of sol/sol.hpp - -#ifndef SOL_HPP -#define SOL_HPP - -// beginning of sol/version.hpp - -#include - -#define SOL_VERSION_MAJOR 3 -#define SOL_VERSION_MINOR 2 -#define SOL_VERSION_PATCH 3 -#define SOL_VERSION_STRING "3.2.3" -#define SOL_VERSION ((SOL_VERSION_MAJOR * 100000) + (SOL_VERSION_MINOR * 100) + (SOL_VERSION_PATCH)) - -#define SOL_TOKEN_TO_STRING_POST_EXPANSION_I_(_TOKEN) #_TOKEN -#define SOL_TOKEN_TO_STRING_I_(_TOKEN) SOL_TOKEN_TO_STRING_POST_EXPANSION_I_(_TOKEN) - -#define SOL_CONCAT_TOKENS_POST_EXPANSION_I_(_LEFT, _RIGHT) _LEFT##_RIGHT -#define SOL_CONCAT_TOKENS_I_(_LEFT, _RIGHT) SOL_CONCAT_TOKENS_POST_EXPANSION_I_(_LEFT, _RIGHT) - -#define SOL_RAW_IS_ON(OP_SYMBOL) ((3 OP_SYMBOL 3) != 0) -#define SOL_RAW_IS_OFF(OP_SYMBOL) ((3 OP_SYMBOL 3) == 0) -#define SOL_RAW_IS_DEFAULT_ON(OP_SYMBOL) ((3 OP_SYMBOL 3) > 3) -#define SOL_RAW_IS_DEFAULT_OFF(OP_SYMBOL) ((3 OP_SYMBOL 3 OP_SYMBOL 3) < 0) - -#define SOL_IS_ON(OP_SYMBOL) SOL_RAW_IS_ON(OP_SYMBOL ## _I_) -#define SOL_IS_OFF(OP_SYMBOL) SOL_RAW_IS_OFF(OP_SYMBOL ## _I_) -#define SOL_IS_DEFAULT_ON(OP_SYMBOL) SOL_RAW_IS_DEFAULT_ON(OP_SYMBOL ## _I_) -#define SOL_IS_DEFAULT_OFF(OP_SYMBOL) SOL_RAW_IS_DEFAULT_OFF(OP_SYMBOL ## _I_) - -#define SOL_ON | -#define SOL_OFF ^ -#define SOL_DEFAULT_ON + -#define SOL_DEFAULT_OFF - - -#if defined(SOL_BUILD_CXX_MODE) - #if (SOL_BUILD_CXX_MODE != 0) - #define SOL_BUILD_CXX_MODE_I_ SOL_ON - #else - #define SOL_BUILD_CXX_MODE_I_ SOL_OFF - #endif -#elif defined(__cplusplus) - #define SOL_BUILD_CXX_MODE_I_ SOL_DEFAULT_ON -#else - #define SOL_BUILD_CXX_MODE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_BUILD_C_MODE) - #if (SOL_BUILD_C_MODE != 0) - #define SOL_BUILD_C_MODE_I_ SOL_ON - #else - #define SOL_BUILD_C_MODE_I_ SOL_OFF - #endif -#elif defined(__STDC__) - #define SOL_BUILD_C_MODE_I_ SOL_DEFAULT_ON -#else - #define SOL_BUILD_C_MODE_I_ SOL_DEFAULT_OFF -#endif - -#if SOL_IS_ON(SOL_BUILD_C_MODE) - #include - #include - #include -#else - #include - #include - #include -#endif - -#if defined(SOL_COMPILER_VCXX) - #if defined(SOL_COMPILER_VCXX != 0) - #define SOL_COMPILER_VCXX_I_ SOL_ON - #else - #define SOL_COMPILER_VCXX_I_ SOL_OFF - #endif -#elif defined(_MSC_VER) - #define SOL_COMPILER_VCXX_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_VCXX_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_GCC) - #if defined(SOL_COMPILER_GCC != 0) - #define SOL_COMPILER_GCC_I_ SOL_ON - #else - #define SOL_COMPILER_GCC_I_ SOL_OFF - #endif -#elif defined(__GNUC__) - #define SOL_COMPILER_GCC_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_GCC_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_CLANG) - #if defined(SOL_COMPILER_CLANG != 0) - #define SOL_COMPILER_CLANG_I_ SOL_ON - #else - #define SOL_COMPILER_CLANG_I_ SOL_OFF - #endif -#elif defined(__clang__) - #define SOL_COMPILER_CLANG_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_CLANG_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_EDG) - #if defined(SOL_COMPILER_EDG != 0) - #define SOL_COMPILER_EDG_I_ SOL_ON - #else - #define SOL_COMPILER_EDG_I_ SOL_OFF - #endif -#else - #define SOL_COMPILER_EDG_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_MINGW) - #if (SOL_COMPILER_MINGW != 0) - #define SOL_COMPILER_MINGW_I_ SOL_ON - #else - #define SOL_COMPILER_MINGW_I_ SOL_OFF - #endif -#elif defined(__MINGW32__) - #define SOL_COMPILER_MINGW_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_MINGW_I_ SOL_DEFAULT_OFF -#endif - -#if SIZE_MAX <= 0xFFFFULL - #define SOL_PLATFORM_X16_I_ SOL_ON - #define SOL_PLATFORM_X86_I_ SOL_OFF - #define SOL_PLATFORM_X64_I_ SOL_OFF -#elif SIZE_MAX <= 0xFFFFFFFFULL - #define SOL_PLATFORM_X16_I_ SOL_OFF - #define SOL_PLATFORM_X86_I_ SOL_ON - #define SOL_PLATFORM_X64_I_ SOL_OFF -#else - #define SOL_PLATFORM_X16_I_ SOL_OFF - #define SOL_PLATFORM_X86_I_ SOL_OFF - #define SOL_PLATFORM_X64_I_ SOL_ON -#endif - -#define SOL_PLATFORM_ARM32_I_ SOL_OFF -#define SOL_PLATFORM_ARM64_I_ SOL_OFF - -#if defined(SOL_PLATFORM_WINDOWS) - #if (SOL_PLATFORM_WINDOWS != 0) - #define SOL_PLATFORM_WINDOWS_I_ SOL_ON - #else - #define SOL_PLATFORM_WINDOWS_I_ SOL_OFF - #endif -#elif defined(_WIN32) - #define SOL_PLATFORM_WINDOWS_I_ SOL_DEFAULT_ON -#else - #define SOL_PLATFORM_WINDOWS_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_CYGWIN) - #if (SOL_PLATFORM_CYGWIN != 0) - #define SOL_PLATFORM_CYGWIN_I_ SOL_ON - #else - #define SOL_PLATFORM_CYGWIN_I_ SOL_ON - #endif -#elif defined(__CYGWIN__) - #define SOL_PLATFORM_CYGWIN_I_ SOL_DEFAULT_ON -#else - #define SOL_PLATFORM_CYGWIN_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_APPLE) - #if (SOL_PLATFORM_APPLE != 0) - #define SOL_PLATFORM_APPLE_I_ SOL_ON - #else - #define SOL_PLATFORM_APPLE_I_ SOL_OFF - #endif -#elif defined(__APPLE__) - #define SOL_PLATFORM_APPLE_I_ SOL_DEFAULT_ON -#else - #define SOL_PLATFORM_APPLE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_UNIX) - #if (SOL_PLATFORM_UNIX != 0) - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_ON - #else - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_OFF - #endif -#elif defined(__unix__) - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_DEFAUKT_ON -#else - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_LINUX) - #if (SOL_PLATFORM_LINUX != 0) - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_ON - #else - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_OFF - #endif -#elif defined(__LINUX__) - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_DEFAUKT_ON -#else - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_DEFAULT_OFF -#endif - -#define SOL_PLATFORM_APPLE_IPHONE_I_ SOL_OFF -#define SOL_PLATFORM_BSDLIKE_I_ SOL_OFF - -#if defined(SOL_IN_DEBUG_DETECTED) - #if SOL_IN_DEBUG_DETECTED != 0 - #define SOL_DEBUG_BUILD_I_ SOL_ON - #else - #define SOL_DEBUG_BUILD_I_ SOL_OFF - #endif -#elif !defined(NDEBUG) - #if SOL_IS_ON(SOL_COMPILER_VCXX) && defined(_DEBUG) - #define SOL_DEBUG_BUILD_I_ SOL_ON - #elif (SOL_IS_ON(SOL_COMPILER_CLANG) || SOL_IS_ON(SOL_COMPILER_GCC)) && !defined(__OPTIMIZE__) - #define SOL_DEBUG_BUILD_I_ SOL_ON - #else - #define SOL_DEBUG_BUILD_I_ SOL_OFF - #endif -#else - #define SOL_DEBUG_BUILD_I_ SOL_DEFAULT_OFF -#endif // We are in a debug mode of some sort - -#if defined(SOL_NO_EXCEPTIONS) - #if (SOL_NO_EXCEPTIONS != 0) - #define SOL_EXCEPTIONS_I_ SOL_OFF - #else - #define SOL_EXCEPTIONS_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_VCXX) - #if !defined(_CPPUNWIND) - #define SOL_EXCEPTIONS_I_ SOL_OFF - #else - #define SOL_EXCEPTIONS_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_CLANG) || SOL_IS_ON(SOL_COMPILER_GCC) - #if !defined(__EXCEPTIONS) - #define SOL_EXCEPTIONS_I_ SOL_OFF - #else - #define SOL_EXCEPTIONS_I_ SOL_ON - #endif -#else - #define SOL_EXCEPTIONS_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_NO_RTTI) - #if (SOL_NO_RTTI != 0) - #define SOL_RTTI_I_ SOL_OFF - #else - #define SOL_RTTI_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_VCXX) - #if !defined(_CPPRTTI) - #define SOL_RTTI_I_ SOL_OFF - #else - #define SOL_RTTI_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_CLANG) || SOL_IS_ON(SOL_COMPILER_GCC) - #if !defined(__GXX_RTTI) - #define SOL_RTTI_I_ SOL_OFF - #else - #define SOL_RTTI_I_ SOL_ON - #endif -#else - #define SOL_RTTI_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_NO_THREAD_LOCAL) - #if SOL_NO_THREAD_LOCAL != 0 - #define SOL_USE_THREAD_LOCAL_I_ SOL_OFF - #else - #define SOL_USE_THREAD_LOCAL_I_ SOL_ON - #endif -#else - #define SOL_USE_THREAD_LOCAL_I_ SOL_DEFAULT_ON -#endif // thread_local keyword is bjorked on some platforms - -#if defined(SOL_ALL_SAFETIES_ON) - #if SOL_ALL_SAFETIES_ON != 0 - #define SOL_ALL_SAFETIES_ON_I_ SOL_ON - #else - #define SOL_ALL_SAFETIES_ON_I_ SOL_OFF - #endif -#else - #define SOL_ALL_SAFETIES_ON_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_SAFE_GETTER) - #if SOL_SAFE_GETTER != 0 - #define SOL_SAFE_GETTER_I_ SOL_ON - #else - #define SOL_SAFE_GETTER_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_GETTER_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_GETTER_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_GETTER_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_USERTYPE) - #if SOL_SAFE_USERTYPE != 0 - #define SOL_SAFE_USERTYPE_I_ SOL_ON - #else - #define SOL_SAFE_USERTYPE_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_USERTYPE_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_USERTYPE_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_USERTYPE_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_REFERENCES) - #if SOL_SAFE_REFERENCES != 0 - #define SOL_SAFE_REFERENCES_I_ SOL_ON - #else - #define SOL_SAFE_REFERENCES_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_REFERENCES_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_REFERENCES_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_REFERENCES_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_FUNCTIONS) - #if SOL_SAFE_FUNCTIONS != 0 - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_ON - #else - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_OFF - #endif -#elif defined (SOL_SAFE_FUNCTION_OBJECTS) - #if SOL_SAFE_FUNCTION_OBJECTS != 0 - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_ON - #else - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_FUNCTION_CALLS) - #if SOL_SAFE_FUNCTION_CALLS != 0 - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_ON - #else - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_PROXIES) - #if SOL_SAFE_PROXIES != 0 - #define SOL_SAFE_PROXIES_I_ SOL_ON - #else - #define SOL_SAFE_PROXIES_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_PROXIES_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_PROXIES_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_PROXIES_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_NUMERICS) - #if SOL_SAFE_NUMERICS != 0 - #define SOL_SAFE_NUMERICS_I_ SOL_ON - #else - #define SOL_SAFE_NUMERICS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_NUMERICS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_NUMERICS_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_NUMERICS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_ALL_INTEGER_VALUES_FIT) - #if (SOL_ALL_INTEGER_VALUES_FIT != 0) - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_ON - #else - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_OFF - #endif -#elif !SOL_IS_DEFAULT_OFF(SOL_SAFE_NUMERICS) && SOL_IS_OFF(SOL_SAFE_NUMERICS) - // if numerics is intentionally turned off, flip this on - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_DEFAULT_ON -#else - // default to off - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_SAFE_STACK_CHECK) - #if SOL_SAFE_STACK_CHECK != 0 - #define SOL_SAFE_STACK_CHECK_I_ SOL_ON - #else - #define SOL_SAFE_STACK_CHECK_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_STACK_CHECK_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_STACK_CHECK_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_STACK_CHECK_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_NO_CHECK_NUMBER_PRECISION) - #if SOL_NO_CHECK_NUMBER_PRECISION != 0 - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_OFF - #else - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #endif -#elif defined(SOL_NO_CHECKING_NUMBER_PRECISION) - #if SOL_NO_CHECKING_NUMBER_PRECISION != 0 - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_OFF - #else - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #elif SOL_IS_ON(SOL_SAFE_NUMERICS) - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_DEFAULT_ON - #else - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_STRINGS_ARE_NUMBERS) - #if (SOL_STRINGS_ARE_NUMBERS != 0) - #define SOL_STRINGS_ARE_NUMBERS_I_ SOL_ON - #else - #define SOL_STRINGS_ARE_NUMBERS_I_ SOL_OFF - #endif -#else - #define SOL_STRINGS_ARE_NUMBERS_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_ENABLE_INTEROP) - #if SOL_ENABLE_INTEROP != 0 - #define SOL_USE_INTEROP_I_ SOL_ON - #else - #define SOL_USE_INTEROP_I_ SOL_OFF - #endif -#elif defined(SOL_USE_INTEROP) - #if SOL_USE_INTEROP != 0 - #define SOL_USE_INTEROP_I_ SOL_ON - #else - #define SOL_USE_INTEROP_I_ SOL_OFF - #endif -#else - #define SOL_USE_INTEROP_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_NO_NIL) - #if (SOL_NO_NIL != 0) - #define SOL_NIL_I_ SOL_OFF - #else - #define SOL_NIL_I_ SOL_ON - #endif -#elif defined(__MAC_OS_X_VERSION_MAX_ALLOWED) || defined(__OBJC__) || defined(nil) - #define SOL_NIL_I_ SOL_DEFAULT_OFF -#else - #define SOL_NIL_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_USERTYPE_TYPE_BINDING_INFO) - #if (SOL_USERTYPE_TYPE_BINDING_INFO != 0) - #define SOL_USERTYPE_TYPE_BINDING_INFO_I_ SOL_ON - #else - #define SOL_USERTYPE_TYPE_BINDING_INFO_I_ SOL_OFF - #endif -#else - #define SOL_USERTYPE_TYPE_BINDING_INFO_I_ SOL_DEFAULT_ON -#endif // We should generate a my_type.__type table with lots of class information for usertypes - -#if defined(SOL_AUTOMAGICAL_TYPES_BY_DEFAULT) - #if (SOL_AUTOMAGICAL_TYPES_BY_DEFAULT != 0) - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_ON - #else - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_OFF - #endif -#elif defined(SOL_DEFAULT_AUTOMAGICAL_USERTYPES) - #if (SOL_DEFAULT_AUTOMAGICAL_USERTYPES != 0) - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_ON - #else - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_OFF - #endif -#else - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_DEFAULT_ON -#endif // make is_automagical on/off by default - -#if defined(SOL_STD_VARIANT) - #if (SOL_STD_VARIANT != 0) - #define SOL_STD_VARIANT_I_ SOL_ON - #else - #define SOL_STD_VARIANT_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_COMPILER_CLANG) && SOL_IS_ON(SOL_PLATFORM_APPLE) - #if defined(__has_include) - #if __has_include() - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_ON - #else - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_OFF - #endif - #else - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_OFF - #endif - #else - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_ON - #endif -#endif // make is_automagical on/off by default - -#if defined(SOL_NOEXCEPT_FUNCTION_TYPE) - #if (SOL_NOEXCEPT_FUNCTION_TYPE != 0) - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_ON - #else - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_OFF - #endif -#else - #if defined(__cpp_noexcept_function_type) - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_ON - #elif SOL_IS_ON(SOL_COMPILER_VCXX) && (defined(_MSVC_LANG) && (_MSVC_LANG < 201403L)) - // There is a bug in the VC++ compiler?? - // on /std:c++latest under x86 conditions (VS 15.5.2), - // compiler errors are tossed for noexcept markings being on function types - // that are identical in every other way to their non-noexcept marked types function types... - // VS 2019: There is absolutely a bug. - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_OFF - #else - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_DEFAULT_ON - #endif -#endif // noexcept is part of a function's type - -#if defined(SOL_STACK_STRING_OPTIMIZATION_SIZE) && SOL_STACK_STRING_OPTIMIZATION_SIZE > 0 - #define SOL_OPTIMIZATION_STRING_CONVERSION_STACK_SIZE_I_ SOL_STACK_STRING_OPTIMIZATION_SIZE -#else - #define SOL_OPTIMIZATION_STRING_CONVERSION_STACK_SIZE_I_ 1024 -#endif - -#if defined(SOL_ID_SIZE) && SOL_ID_SIZE > 0 - #define SOL_ID_SIZE_I_ SOL_ID_SIZE -#else - #define SOL_ID_SIZE_I_ 512 -#endif - -#if defined(LUA_IDSIZE) && LUA_IDSIZE > 0 - #define SOL_FILE_ID_SIZE_I_ LUA_IDSIZE -#elif defined(SOL_ID_SIZE) && SOL_ID_SIZE > 0 - #define SOL_FILE_ID_SIZE_I_ SOL_FILE_ID_SIZE -#else - #define SOL_FILE_ID_SIZE_I_ 2048 -#endif - -#if defined(SOL_PRINT_ERRORS) - #if (SOL_PRINT_ERRORS != 0) - #define SOL_PRINT_ERRORS_I_ SOL_ON - #else - #define SOL_PRINT_ERRORS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_PRINT_ERRORS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_PRINT_ERRORS_I_ SOL_DEFAULT_ON - #else - #define SOL_PRINT_ERRORS_I_ SOL_OFF - #endif -#endif - -#if defined(SOL_DEFAULT_PASS_ON_ERROR) - #if (SOL_DEFAULT_PASS_ON_ERROR != 0) - #define SOL_DEFAULT_PASS_ON_ERROR_I_ SOL_ON - #else - #define SOL_DEFAULT_PASS_ON_ERROR_I_ SOL_OFF - #endif -#else - #define SOL_DEFAULT_PASS_ON_ERROR_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_USING_CXX_LUA) - #if (SOL_USING_CXX_LUA != 0) - #define SOL_USE_CXX_LUA_I_ SOL_ON - #else - #define SOL_USE_CXX_LUA_I_ SOL_OFF - #endif -#elif defined(SOL_USE_CXX_LUA) - #if (SOL_USE_CXX_LUA != 0) - #define SOL_USE_CXX_LUA_I_ SOL_ON - #else - #define SOL_USE_CXX_LUA_I_ SOL_OFF - #endif -#else - #define SOL_USE_CXX_LUA_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_USING_CXX_LUAJIT) - #if (SOL_USING_CXX_LUA != 0) - #define SOL_USE_CXX_LUAJIT_I_ SOL_ON - #else - #define SOL_USE_CXX_LUAJIT_I_ SOL_OFF - #endif -#elif defined(SOL_USE_CXX_LUAJIT) - #if (SOL_USE_CXX_LUA != 0) - #define SOL_USE_CXX_LUAJIT_I_ SOL_ON - #else - #define SOL_USE_CXX_LUAJIT_I_ SOL_OFF - #endif -#else - #define SOL_USE_CXX_LUAJIT_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_NO_LUA_HPP) - #if (SOL_NO_LUA_HPP != 0) - #define SOL_USE_LUA_HPP_I_ SOL_OFF - #else - #define SOL_USE_LUA_HPP_I_ SOL_ON - #endif -#elif defined(SOL_USING_CXX_LUA) - #define SOL_USE_LUA_HPP_I_ SOL_OFF -#elif defined(__has_include) - #if __has_include() - #define SOL_USE_LUA_HPP_I_ SOL_ON - #else - #define SOL_USE_LUA_HPP_I_ SOL_OFF - #endif -#else - #define SOL_USE_LUA_HPP_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_CONTAINERS_START) - #define SOL_CONTAINER_START_INDEX_I_ SOL_CONTAINERS_START -#elif defined(SOL_CONTAINERS_START_INDEX) - #define SOL_CONTAINER_START_INDEX_I_ SOL_CONTAINERS_START_INDEX -#elif defined(SOL_CONTAINER_START_INDEX) - #define SOL_CONTAINER_START_INDEX_I_ SOL_CONTAINER_START_INDEX -#else - #define SOL_CONTAINER_START_INDEX_I_ 1 -#endif - -#if defined (SOL_NO_MEMORY_ALIGNMENT) - #if (SOL_NO_MEMORY_ALIGNMENT != 0) - #define SOL_ALIGN_MEMORY_I_ SOL_OFF - #else - #define SOL_ALIGN_MEMORY_I_ SOL_ON - #endif -#else - #define SOL_ALIGN_MEMORY_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_USE_BOOST) - #if (SOL_USE_BOOST != 0) - #define SOL_USE_BOOST_I_ SOL_ON - #else - #define SOL_USE_BOOST_I_ SOL_OFF - #endif -#else - #define SOL_USE_BOOST_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_USE_UNSAFE_BASE_LOOKUP) - #if (SOL_USE_UNSAFE_BASE_LOOKUP != 0) - #define SOL_USE_UNSAFE_BASE_LOOKUP_I_ SOL_ON - #else - #define SOL_USE_UNSAFE_BASE_LOOKUP_I_ SOL_OFF - #endif -#else - #define SOL_USE_UNSAFE_BASE_LOOKUP_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_INSIDE_UNREAL) - #if (SOL_INSIDE_UNREAL != 0) - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_ON - #else - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_OFF - #endif -#else - #if defined(UE_BUILD_DEBUG) || defined(UE_BUILD_DEVELOPMENT) || defined(UE_BUILD_TEST) || defined(UE_BUILD_SHIPPING) || defined(UE_SERVER) - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_DEFAULT_ON - #else - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_NO_COMPAT) - #if (SOL_NO_COMPAT != 0) - #define SOL_USE_COMPATIBILITY_LAYER_I_ SOL_OFF - #else - #define SOL_USE_COMPATIBILITY_LAYER_I_ SOL_ON - #endif -#else - #define SOL_USE_COMPATIBILITY_LAYER_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_GET_FUNCTION_POINTER_UNSAFE) - #if (SOL_GET_FUNCTION_POINTER_UNSAFE != 0) - #define SOL_GET_FUNCTION_POINTER_UNSAFE_I_ SOL_ON - #else - #define SOL_GET_FUNCTION_POINTER_UNSAFE_I_ SOL_OFF - #endif -#else - #define SOL_GET_FUNCTION_POINTER_UNSAFE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_FUNCTION_CALL_VALUE_SEMANTICS) - #if (SOL_FUNCTION_CALL_VALUE_SEMANTICS != 0) - #define SOL_FUNCTION_CALL_VALUE_SEMANTICS_I_ SOL_ON - #else - #define SOL_FUNCTION_CALL_VALUE_SEMANTICS_I_ SOL_OFF - #endif -#else - #define SOL_FUNCTION_CALL_VALUE_SEMANTICS_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_MINGW_CCTYPE_IS_POISONED) - #if (SOL_MINGW_CCTYPE_IS_POISONED != 0) - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_ON - #else - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_OFF - #endif -#elif SOL_IS_ON(SOL_COMPILER_MINGW) && defined(__GNUC__) && (__GNUC__ < 6) - // MinGW is off its rocker in some places... - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_DEFAULT_ON -#else - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_CHAR8_T) - #if (SOL_CHAR8_T != 0) - #define SOL_CHAR8_T_I_ SOL_ON - #else - #define SOL_CHAR8_T_I_ SOL_OFF - #endif -#else - #if defined(__cpp_char8_t) - #define SOL_CHAR8_T_I_ SOL_DEFAULT_ON - #else - #define SOL_CHAR8_T_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if SOL_IS_ON(SOL_USE_BOOST) - #include - - #if BOOST_VERSION >= 107500 // Since Boost 1.75.0 boost::none is constexpr - #define SOL_BOOST_NONE_CONSTEXPR_I_ constexpr - #else - #define SOL_BOOST_NONE_CONSTEXPR_I_ const - #endif // BOOST_VERSION -#else - // assume boost isn't using a garbage version - #define SOL_BOOST_NONE_CONSTEXPR_I_ constexpr -#endif - -#if defined(SOL2_CI) - #if (SOL2_CI != 0) - #define SOL2_CI_I_ SOL_ON - #else - #define SOL2_CI_I_ SOL_OFF - #endif -#else - #define SOL2_CI_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_C_ASSERT) - #define SOL_USER_C_ASSERT_I_ SOL_ON -#else - #define SOL_USER_C_ASSERT_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_M_ASSERT) - #define SOL_USER_M_ASSERT_I_ SOL_ON -#else - #define SOL_USER_M_ASSERT_I_ SOL_DEFAULT_OFF -#endif - -// beginning of sol/prologue.hpp - -#if defined(SOL_PROLOGUE_I_) - #error "[sol2] Library Prologue was already included in translation unit and not properly ended with an epilogue." -#endif - -#define SOL_PROLOGUE_I_ 1 - -#if SOL_IS_ON(SOL_BUILD_CXX_MODE) - #define _FWD(...) static_cast( __VA_ARGS__ ) - - #if SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define _MOVE(...) static_cast<__typeof( __VA_ARGS__ )&&>( __VA_ARGS__ ) - #else - #include - - #define _MOVE(...) static_cast<::std::remove_reference_t<( __VA_ARGS__ )>&&>( __VA_OPT__(,) ) - #endif -#endif - -// end of sol/prologue.hpp - -// beginning of sol/epilogue.hpp - -#if !defined(SOL_PROLOGUE_I_) - #error "[sol2] Library Prologue is missing from this translation unit." -#else - #undef SOL_PROLOGUE_I_ -#endif - -#if SOL_IS_ON(SOL_BUILD_CXX_MODE) - #undef _FWD - #undef _MOVE -#endif - -// end of sol/epilogue.hpp - -// beginning of sol/detail/build_version.hpp - -#if defined(SOL_DLL) - #if (SOL_DLL != 0) - #define SOL_DLL_I_ SOL_ON - #else - #define SOL_DLL_I_ SOL_OFF - #endif -#elif SOL_IS_ON(SOL_COMPILER_VCXX) && (defined(DLL_) || defined(_DLL)) - #define SOL_DLL_I_ SOL_DEFAULT_ON -#else - #define SOL_DLL_I_ SOL_DEFAULT_OFF -#endif // DLL definition - -#if defined(SOL_HEADER_ONLY) - #if (SOL_HEADER_ONLY != 0) - #define SOL_HEADER_ONLY_I_ SOL_ON - #else - #define SOL_HEADER_ONLY_I_ SOL_OFF - #endif -#else - #define SOL_HEADER_ONLY_I_ SOL_DEFAULT_OFF -#endif // Header only library - -#if defined(SOL_BUILD) - #if (SOL_BUILD != 0) - #define SOL_BUILD_I_ SOL_ON - #else - #define SOL_BUILD_I_ SOL_OFF - #endif -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_BUILD_I_ SOL_DEFAULT_OFF -#else - #define SOL_BUILD_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_UNITY_BUILD) - #if (SOL_UNITY_BUILD != 0) - #define SOL_UNITY_BUILD_I_ SOL_ON - #else - #define SOL_UNITY_BUILD_I_ SOL_OFF - #endif -#else - #define SOL_UNITY_BUILD_I_ SOL_DEFAULT_OFF -#endif // Header only library - -#if defined(SOL_C_FUNCTION_LINKAGE) - #define SOL_C_FUNCTION_LINKAGE_I_ SOL_C_FUNCTION_LINKAGE -#else - #if SOL_IS_ON(SOL_BUILD_CXX_MODE) - // C++ - #define SOL_C_FUNCTION_LINKAGE_I_ extern "C" - #else - // normal - #define SOL_C_FUNCTION_LINKAGE_I_ - #endif // C++ or not -#endif // Linkage specification for C functions - -#if defined(SOL_API_LINKAGE) - #define SOL_API_LINKAGE_I_ SOL_API_LINKAGE -#else - #if SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) || SOL_IS_ON(SOL_PLATFORM_WINDOWS) || SOL_IS_ON(SOL_PLATFORM_CYGWIN) - // MSVC Compiler; or, Windows, or Cygwin platforms - #if SOL_IS_ON(SOL_BUILD) - // Building the library - #if SOL_IS_ON(SOL_COMPILER_GCC) - // Using GCC - #define SOL_API_LINKAGE_I_ __attribute__((dllexport)) - #else - // Using Clang, MSVC, etc... - #define SOL_API_LINKAGE_I_ __declspec(dllexport) - #endif - #else - #if SOL_IS_ON(SOL_COMPILER_GCC) - #define SOL_API_LINKAGE_I_ __attribute__((dllimport)) - #else - #define SOL_API_LINKAGE_I_ __declspec(dllimport) - #endif - #endif - #else - // extern if building normally on non-MSVC - #define SOL_API_LINKAGE_I_ extern - #endif - #elif SOL_IS_ON(SOL_UNITY_BUILD) - // Built-in library, like how stb typical works - #if SOL_IS_ON(SOL_HEADER_ONLY) - // Header only, so functions are defined "inline" - #define SOL_API_LINKAGE_I_ inline - #else - // Not header only, so seperately compiled files - #define SOL_API_LINKAGE_I_ extern - #endif - #else - // Normal static library - #if SOL_IS_ON(SOL_BUILD_CXX_MODE) - #define SOL_API_LINKAGE_I_ - #else - #define SOL_API_LINKAGE_I_ extern - #endif - #endif // DLL or not -#endif // Build definitions - -#if defined(SOL_PUBLIC_FUNC_DECL) - #define SOL_PUBLIC_FUNC_DECL_I_ SOL_PUBLIC_FUNC_DECL -#else - #define SOL_PUBLIC_FUNC_DECL_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_INTERNAL_FUNC_DECL_) - #define SOL_INTERNAL_FUNC_DECL_I_ SOL_INTERNAL_FUNC_DECL_ -#else - #define SOL_INTERNAL_FUNC_DECL_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_PUBLIC_FUNC_DEF) - #define SOL_PUBLIC_FUNC_DEF_I_ SOL_PUBLIC_FUNC_DEF -#else - #define SOL_PUBLIC_FUNC_DEF_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_INTERNAL_FUNC_DEF) - #define SOL_INTERNAL_FUNC_DEF_I_ SOL_INTERNAL_FUNC_DEF -#else - #define SOL_INTERNAL_FUNC_DEF_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_FUNC_DECL) - #define SOL_FUNC_DECL_I_ SOL_FUNC_DECL -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_FUNC_DECL_I_ -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_FUNC_DECL_I_ extern __declspec(dllexport) - #else - #define SOL_FUNC_DECL_I_ extern __declspec(dllimport) - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_FUNC_DECL_I_ extern __attribute__((visibility("default"))) - #else - #define SOL_FUNC_DECL_I_ extern - #endif -#endif - -#if defined(SOL_FUNC_DEFN) - #define SOL_FUNC_DEFN_I_ SOL_FUNC_DEFN -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_FUNC_DEFN_I_ inline -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_FUNC_DEFN_I_ __declspec(dllexport) - #else - #define SOL_FUNC_DEFN_I_ __declspec(dllimport) - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_FUNC_DEFN_I_ __attribute__((visibility("default"))) - #else - #define SOL_FUNC_DEFN_I_ - #endif -#endif - -#if defined(SOL_HIDDEN_FUNC_DECL) - #define SOL_HIDDEN_FUNC_DECL_I_ SOL_HIDDEN_FUNC_DECL -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_HIDDEN_FUNC_DECL_I_ -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_HIDDEN_FUNC_DECL_I_ extern __declspec(dllexport) - #else - #define SOL_HIDDEN_FUNC_DECL_I_ extern __declspec(dllimport) - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_HIDDEN_FUNC_DECL_I_ extern __attribute__((visibility("default"))) - #else - #define SOL_HIDDEN_FUNC_DECL_I_ extern - #endif -#endif - -#if defined(SOL_HIDDEN_FUNC_DEFN) - #define SOL_HIDDEN_FUNC_DEFN_I_ SOL_HIDDEN_FUNC_DEFN -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_HIDDEN_FUNC_DEFN_I_ inline -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_HIDDEN_FUNC_DEFN_I_ - #else - #define SOL_HIDDEN_FUNC_DEFN_I_ - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_HIDDEN_FUNC_DEFN_I_ __attribute__((visibility("hidden"))) - #else - #define SOL_HIDDEN_FUNC_DEFN_I_ - #endif -#endif - -// end of sol/detail/build_version.hpp - -// end of sol/version.hpp - -#if SOL_IS_ON(SOL_INSIDE_UNREAL_ENGINE) -#ifdef check -#pragma push_macro("check") -#undef check -#endif -#endif // Unreal Engine 4 Bullshit - -#if SOL_IS_ON(SOL_COMPILER_GCC) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wshadow" -#pragma GCC diagnostic ignored "-Wconversion" -#if __GNUC__ > 6 -#pragma GCC diagnostic ignored "-Wnoexcept-type" -#endif -#elif SOL_IS_ON(SOL_COMPILER_CLANG) -#elif SOL_IS_ON(SOL_COMPILER_VCXX) -#pragma warning(push) -#pragma warning(disable : 4505) // unreferenced local function has been removed GEE THANKS -#endif // clang++ vs. g++ vs. VC++ - -// beginning of sol/forward.hpp - -#ifndef SOL_FORWARD_HPP -#define SOL_FORWARD_HPP - -#include -#include -#include - -#if SOL_IS_ON(SOL_USE_CXX_LUA) || SOL_IS_ON(SOL_USE_CXX_LUAJIT) -struct lua_State; -#else -extern "C" { -struct lua_State; -} -#endif // C++ Mangling for Lua vs. Not - -namespace sol { - - enum class type; - - class stateless_reference; - template - class basic_reference; - using reference = basic_reference; - using main_reference = basic_reference; - class stateless_stack_reference; - class stack_reference; - - template - class basic_bytecode; - - struct lua_value; - - struct proxy_base_tag; - template - struct proxy_base; - template - struct table_proxy; - - template - class basic_table_core; - template - using table_core = basic_table_core; - template - using main_table_core = basic_table_core; - template - using stack_table_core = basic_table_core; - template - using basic_table = basic_table_core; - using table = table_core; - using global_table = table_core; - using main_table = main_table_core; - using main_global_table = main_table_core; - using stack_table = stack_table_core; - using stack_global_table = stack_table_core; - - template - struct basic_lua_table; - using lua_table = basic_lua_table; - using stack_lua_table = basic_lua_table; - - template - class basic_usertype; - template - using usertype = basic_usertype; - template - using stack_usertype = basic_usertype; - - template - class basic_metatable; - using metatable = basic_metatable; - using stack_metatable = basic_metatable; - - template - struct basic_environment; - using environment = basic_environment; - using main_environment = basic_environment; - using stack_environment = basic_environment; - - template - class basic_function; - template - class basic_protected_function; - using unsafe_function = basic_function; - using safe_function = basic_protected_function; - using main_unsafe_function = basic_function; - using main_safe_function = basic_protected_function; - using stack_unsafe_function = basic_function; - using stack_safe_function = basic_protected_function; - using stack_aligned_unsafe_function = basic_function; - using stack_aligned_safe_function = basic_protected_function; - using protected_function = safe_function; - using main_protected_function = main_safe_function; - using stack_protected_function = stack_safe_function; - using stack_aligned_protected_function = stack_aligned_safe_function; -#if SOL_IS_ON(SOL_SAFE_FUNCTION_OBJECTS) - using function = protected_function; - using main_function = main_protected_function; - using stack_function = stack_protected_function; - using stack_aligned_function = stack_aligned_safe_function; -#else - using function = unsafe_function; - using main_function = main_unsafe_function; - using stack_function = stack_unsafe_function; - using stack_aligned_function = stack_aligned_unsafe_function; -#endif - using stack_aligned_stack_handler_function = basic_protected_function; - - struct unsafe_function_result; - struct protected_function_result; - using safe_function_result = protected_function_result; -#if SOL_IS_ON(SOL_SAFE_FUNCTION_OBJECTS) - using function_result = safe_function_result; -#else - using function_result = unsafe_function_result; -#endif - - template - class basic_object_base; - template - class basic_object; - template - class basic_userdata; - template - class basic_lightuserdata; - template - class basic_coroutine; - template - class basic_packaged_coroutine; - template - class basic_thread; - - using object = basic_object; - using userdata = basic_userdata; - using lightuserdata = basic_lightuserdata; - using thread = basic_thread; - using coroutine = basic_coroutine; - using packaged_coroutine = basic_packaged_coroutine; - using main_object = basic_object; - using main_userdata = basic_userdata; - using main_lightuserdata = basic_lightuserdata; - using main_coroutine = basic_coroutine; - using stack_object = basic_object; - using stack_userdata = basic_userdata; - using stack_lightuserdata = basic_lightuserdata; - using stack_thread = basic_thread; - using stack_coroutine = basic_coroutine; - - struct stack_proxy_base; - struct stack_proxy; - struct variadic_args; - struct variadic_results; - struct stack_count; - struct this_state; - struct this_main_state; - struct this_environment; - - class state_view; - class state; - - template - struct as_table_t; - template - struct as_container_t; - template - struct nested; - template - struct light; - template - struct user; - template - struct as_args_t; - template - struct protect_t; - template - struct policy_wrapper; - - template - struct usertype_traits; - template - struct unique_usertype_traits; - - template - struct types { - typedef std::make_index_sequence indices; - static constexpr std::size_t size() { - return sizeof...(Args); - } - }; - - template - struct derive : std::false_type { - typedef types<> type; - }; - - template - struct base : std::false_type { - typedef types<> type; - }; - - template - struct weak_derive { - static bool value; - }; - - template - bool weak_derive::value = false; - - namespace stack { - struct record; - } - -#if SOL_IS_OFF(SOL_USE_BOOST) - template - class optional; - - template - class optional; -#endif - - using check_handler_type = int(lua_State*, int, type, type, const char*); - -} // namespace sol - -#define SOL_BASE_CLASSES(T, ...) \ - namespace sol { \ - template <> \ - struct base : std::true_type { \ - typedef ::sol::types<__VA_ARGS__> type; \ - }; \ - } \ - void a_sol3_detail_function_decl_please_no_collide() -#define SOL_DERIVED_CLASSES(T, ...) \ - namespace sol { \ - template <> \ - struct derive : std::true_type { \ - typedef ::sol::types<__VA_ARGS__> type; \ - }; \ - } \ - void a_sol3_detail_function_decl_please_no_collide() - -#endif // SOL_FORWARD_HPP -// end of sol/forward.hpp - -// beginning of sol/forward_detail.hpp - -#ifndef SOL_FORWARD_DETAIL_HPP -#define SOL_FORWARD_DETAIL_HPP - -// beginning of sol/traits.hpp - -// beginning of sol/tuple.hpp - -// beginning of sol/base_traits.hpp - -#include - -namespace sol { - namespace detail { - struct unchecked_t { }; - const unchecked_t unchecked = unchecked_t {}; - } // namespace detail - - namespace meta { - using sfinae_yes_t = std::true_type; - using sfinae_no_t = std::false_type; - - template - using void_t = void; - - template - using unqualified = std::remove_cv>; - - template - using unqualified_t = typename unqualified::type; - - namespace meta_detail { - template - struct unqualified_non_alias : unqualified { }; - - template