aboutsummaryrefslogtreecommitdiff
path: root/src/lua/modules/net/je_lua_buffer.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-10-23 15:56:01 +0800
committerchai <chaifix@163.com>2018-10-23 15:56:01 +0800
commit6551adeca70d4299a99d45245d4e13dbfdfa87e5 (patch)
treea766ff9a0cdc52588a6aa62e41d0b134c04c2ba0 /src/lua/modules/net/je_lua_buffer.h
parenta164919e8eb3409d13bb225cc0e6f0b95446e8e0 (diff)
*修改lua绑定文件的文件名
Diffstat (limited to 'src/lua/modules/net/je_lua_buffer.h')
-rw-r--r--src/lua/modules/net/je_lua_buffer.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/lua/modules/net/je_lua_buffer.h b/src/lua/modules/net/je_lua_buffer.h
new file mode 100644
index 0000000..8733778
--- /dev/null
+++ b/src/lua/modules/net/je_lua_buffer.h
@@ -0,0 +1,97 @@
+#ifndef __JIN_LUA_NET_NETBUFFER_H
+#define __JIN_LUA_NET_NETBUFFER_H
+
+#include <cstring>
+#include <cstdlib>
+#include "lua/common/common.h"
+
+namespace JinEngine
+{
+ namespace Lua
+ {
+ namespace Net
+ {
+
+ class Buffer
+ {
+ public:
+ Buffer(size_t s = 0)
+ : size(s)
+ {
+ buffer = new char[size];
+ memset(buffer, 0, size);
+ }
+
+ Buffer(const char* data, size_t s)
+ : size(s)
+ {
+ buffer = new char[size];
+ memcpy(buffer, data, size);
+ }
+
+ ~Buffer()
+ {
+ if (buffer != nullptr)
+ {
+ delete[] buffer;
+ buffer = nullptr;
+ size = 0;
+ }
+ }
+
+ void append(const void* data, size_t s)
+ {
+ if (data == nullptr)
+ return;
+ char* buf = buffer;
+ buffer = new char[size + s];
+ memcpy(buffer, buf, size);
+ memcpy(buffer + size, data, s);
+ delete[] buf;
+ size += s;
+ return;
+ }
+
+ /* grab and create a string */
+ char* grabString(unsigned int* length, int offset = 0)
+ {
+ int l = offset;
+ for (; l < size; ++l)
+ {
+ if (buffer[l] == 0)
+ break;
+ }
+ *length = l - offset + 1;
+ char* str = (char*)malloc(*length);
+ memcpy(str, buffer + offset, *length);
+ return str;
+ }
+
+ int grabInteger(int* length, int offset = 0)
+ {
+ *length = sizeof(int);
+ return *((int*)(buffer + offset));
+ }
+
+ float grabFloat(int* length, int offset = 0)
+ {
+ *length = sizeof(float);
+ return *((float*)(buffer + offset));
+ }
+
+ bool grabBoolean(int* length, int offset = 0)
+ {
+ *length = sizeof(bool);
+ return *((bool*)(buffer + offset));
+ }
+
+ char* buffer;
+ size_t size;
+
+ };
+
+ } // namespace Net
+ } // namespace Lua
+} // namespace JinEngine
+
+#endif \ No newline at end of file