141 lines
2.6 KiB
C++
141 lines
2.6 KiB
C++
// https://github.com/vinniefalco/LuaBridge
|
|
// Copyright 2020, Dmitry Tarakanov
|
|
// Copyright 2012, Vinnie Falco <vinnie.falco@gmail.com>
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
#pragma once
|
|
|
|
namespace luabridge {
|
|
|
|
namespace detail {
|
|
|
|
/**
|
|
* A unique key for a type name in a metatable.
|
|
*/
|
|
inline const void* getTypeKey()
|
|
{
|
|
#ifdef _NDEBUG
|
|
static char value;
|
|
return &value;
|
|
#else
|
|
return reinterpret_cast<void*>(0x71);
|
|
#endif
|
|
}
|
|
|
|
/**
|
|
* The key of a const table in another metatable.
|
|
*/
|
|
inline const void* getConstKey()
|
|
{
|
|
#ifdef _NDEBUG
|
|
static char value;
|
|
return &value;
|
|
#else
|
|
return reinterpret_cast<void*>(0xc07);
|
|
#endif
|
|
}
|
|
|
|
/**
|
|
* The key of a class table in another metatable.
|
|
*/
|
|
inline const void* getClassKey()
|
|
{
|
|
#ifdef _NDEBUG
|
|
static char value;
|
|
return &value;
|
|
#else
|
|
return reinterpret_cast<void*>(0xc1a);
|
|
#endif
|
|
}
|
|
|
|
/**
|
|
* The key of a propget table in another metatable.
|
|
*/
|
|
inline const void* getPropgetKey()
|
|
{
|
|
#ifdef _NDEBUG
|
|
static char value;
|
|
return &value;
|
|
#else
|
|
return reinterpret_cast<void*>(0x6e7);
|
|
#endif
|
|
}
|
|
|
|
/**
|
|
* The key of a propset table in another metatable.
|
|
*/
|
|
inline const void* getPropsetKey()
|
|
{
|
|
#ifdef _NDEBUG
|
|
static char value;
|
|
return &value;
|
|
#else
|
|
return reinterpret_cast<void*>(0x5e7);
|
|
#endif
|
|
}
|
|
|
|
/**
|
|
* The key of a static table in another metatable.
|
|
*/
|
|
inline const void* getStaticKey()
|
|
{
|
|
#ifdef _NDEBUG
|
|
static char value;
|
|
return &value;
|
|
#else
|
|
return reinterpret_cast<void*>(0x57a);
|
|
#endif
|
|
}
|
|
|
|
/**
|
|
* The key of a parent table in another metatable.
|
|
*/
|
|
inline const void* getParentKey()
|
|
{
|
|
#ifdef _NDEBUG
|
|
static char value;
|
|
return &value;
|
|
#else
|
|
return reinterpret_cast<void*>(0xdad);
|
|
#endif
|
|
}
|
|
|
|
/**
|
|
Get the key for the static table in the Lua registry.
|
|
The static table holds the static data members, static properties, and
|
|
static member functions for a class.
|
|
*/
|
|
template<class T>
|
|
void const* getStaticRegistryKey()
|
|
{
|
|
static char value;
|
|
return &value;
|
|
}
|
|
|
|
/** Get the key for the class table in the Lua registry.
|
|
The class table holds the data members, properties, and member functions
|
|
of a class. Read-only data and properties, and const member functions are
|
|
also placed here (to save a lookup in the const table).
|
|
*/
|
|
template<class T>
|
|
void const* getClassRegistryKey()
|
|
{
|
|
static char value;
|
|
return &value;
|
|
}
|
|
|
|
/** Get the key for the const table in the Lua registry.
|
|
The const table holds read-only data members and properties, and const
|
|
member functions of a class.
|
|
*/
|
|
template<class T>
|
|
void const* getConstRegistryKey()
|
|
{
|
|
static char value;
|
|
return &value;
|
|
}
|
|
|
|
} // namespace detail
|
|
|
|
} // namespace luabridge
|