23#ifndef CORSIX_TH_PERSIST_LUA_H_
24#define CORSIX_TH_PERSIST_LUA_H_
36 typedef unsigned int T;
63 static_assert(std::is_integral<T>::value,
"T must be an integer type");
67 for (iNumBytes = 1; tTemp >= (T)0x80; tTemp /= (T)0x80) ++iNumBytes;
69 uint8_t iByte = (uint8_t)tValue;
72 std::vector<uint8_t> bytes(iNumBytes);
73 bytes[iNumBytes - 1] = 0x7F & (uint8_t)(tValue);
74 for (
int i = 1; i < iNumBytes; ++i) {
76 bytes[iNumBytes - 1 - i] = 0x80 | (0x7F & (uint8_t)tValue);
125 tTemp =
static_cast<T
>(tTemp | (iByte & 0x7F));
126 tTemp =
static_cast<T
>(tTemp << 7);
128 tTemp =
static_cast<T
>(tTemp | iByte);
140 if (!
read_uint(tWrittenValue))
return false;
141 if (tWrittenValue & 1)
142 tValue = (-(T)(tWrittenValue >> 1)) - 1;
144 tValue =
static_cast<T
>(tWrittenValue >> 1);
Interface used for depersisting Lua objects.
Definition persist_lua.h:107
bool read_float(T &fValue)
Definition persist_lua.h:149
virtual ~lua_persist_reader()=default
virtual bool read_stack_object()=0
virtual void set_error(const char *sError)=0
virtual bool read_byte_stream(uint8_t *pBytes, size_t iCount)=0
virtual lua_State * get_stack()=0
bool read_uint(T &tValue)
Definition persist_lua.h:118
bool read_int(T &tValue)
Definition persist_lua.h:138
Interface used for persisting Lua objects.
Definition persist_lua.h:44
virtual void write_byte_stream(const uint8_t *pBytes, size_t iCount)=0
void write_uint(T tValue)
Definition persist_lua.h:62
void write_int(T tValue)
Definition persist_lua.h:83
virtual lua_State * get_stack()=0
void write_float(T fValue)
Definition persist_lua.h:97
virtual ~lua_persist_writer()=default
virtual void fast_write_stack_object(int iIndex)=0
virtual void write_stack_object(int iIndex)=0
virtual void set_error(const char *sError)=0
int luaopen_persist(lua_State *L)
Definition persist_lua.cpp:1326
unsigned int T
Definition persist_lua.h:36
Definition persist_lua.h:33