From bd3fe0cac583739bc0d7c4b5c8f301bb350abca0 Mon Sep 17 00:00:00 2001 From: Andy Belle-Isle Date: Fri, 30 Aug 2019 00:19:31 -0400 Subject: Renamed lib to deps so github will ignore it for language stats --- deps/sol2/include/sol/bytecode.hpp | 117 +++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 deps/sol2/include/sol/bytecode.hpp (limited to 'deps/sol2/include/sol/bytecode.hpp') diff --git a/deps/sol2/include/sol/bytecode.hpp b/deps/sol2/include/sol/bytecode.hpp new file mode 100644 index 0000000..ab413fe --- /dev/null +++ b/deps/sol2/include/sol/bytecode.hpp @@ -0,0 +1,117 @@ +// sol3 + +// The MIT License (MIT) + +// Copyright (c) 2013-2019 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. + +#ifndef SOL_BYTECODE_HPP +#define SOL_BYTECODE_HPP + +#include "compatibility.hpp" +#include "string_view.hpp" +#include +#include +#include + +namespace sol { + + template > + class basic_bytecode : private std::vector { + private: + using base_t = std::vector; + + public: + using typename base_t::allocator_type; + using typename base_t::const_iterator; + using typename base_t::const_pointer; + using typename base_t::const_reference; + using typename base_t::const_reverse_iterator; + using typename base_t::difference_type; + using typename base_t::iterator; + using typename base_t::pointer; + using typename base_t::reference; + using typename base_t::reverse_iterator; + using typename base_t::size_type; + using typename base_t::value_type; + + using base_t::base_t; + using base_t::operator=; + + using base_t::data; + using base_t::empty; + using base_t::max_size; + using base_t::size; + + using base_t::at; + using base_t::operator[]; + using base_t::back; + using base_t::front; + + using base_t::begin; + using base_t::cbegin; + using base_t::cend; + using base_t::end; + + using base_t::crbegin; + using base_t::crend; + using base_t::rbegin; + using base_t::rend; + + + using base_t::get_allocator; + using base_t::swap; + + using base_t::clear; + using base_t::emplace; + using base_t::emplace_back; + using base_t::erase; + using base_t::insert; + using base_t::pop_back; + using base_t::push_back; + using base_t::reserve; + using base_t::resize; + using base_t::shrink_to_fit; + + string_view as_string_view() const { + return string_view(reinterpret_cast(this->data()), this->size()); + } + }; + + template + inline int basic_insert_dump_writer(lua_State*, const void* memory, size_t memory_size, void* userdata) { + using storage_t = Container; + const std::byte* p_code = static_cast(memory); + storage_t& bc = *static_cast(userdata); + try { + bc.insert(bc.cend(), p_code, p_code + memory_size); + } + catch (...) { + return -1; + } + return 0; + } + + using bytecode = basic_bytecode<>; + + constexpr inline auto bytecode_dump_writer = &basic_insert_dump_writer; + +} // namespace sol + +#endif // SOL_BYTECODE_HPP -- cgit v1.2.3