summaryrefslogtreecommitdiff
path: root/example/single_thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'example/single_thread.cpp')
-rw-r--r--example/single_thread.cpp309
1 files changed, 63 insertions, 246 deletions
diff --git a/example/single_thread.cpp b/example/single_thread.cpp
index d188c0f..3778156 100644
--- a/example/single_thread.cpp
+++ b/example/single_thread.cpp
@@ -8,7 +8,7 @@ extern "C"
#include<stdio.h>
#include<string.h>
}
-#include"../src/tsg_lua_interface.h"
+#include"../src/elua.h"
char *content0 = (char *)"HanMeimei said \"hello\" to LiLei";
char content1[255];
@@ -19,6 +19,7 @@ int main()
{
const char *script = "./script/find_hello.lua";
const char *script1 = "./script/find_1.luajit";
+ #if 0
const char *script2 = "local str = tsg.data print(str) return string.len(str), str";
const char *script3 = "\x1B\x4C\x4A\x02\x0A\x75\x02\x00"\
"\x04\x00\x07\x00\x11\x36\x00\x00"\
@@ -36,307 +37,123 @@ int main()
"\x2D\x2D\x2D\x2D\x0A\x70\x72\x69"\
"\x6E\x74\x09\x64\x61\x74\x61\x08"\
"\x74\x73\x67\x00";
- tsg_lua_handle L = NULL;
+ #endif
+ elua_vm *L = NULL;
content1[128] = 1;
//memset(content1, 1, sizeof(content1));
/* 初始化1个虚拟机 */
- printf("\n*********************tsg_lua_vm_create************************\n");
- printf("[C]:call tsg_lua_vm_create...\n");
- L = tsg_lua_vm_create();
+ printf("\n*********************elua_create_vm************************\n");
+ printf("[C]:call elua_create_vm...\n");
+ L = elua_create_vm(NULL);
if (L == NULL)
{
- printf("[C]:call tsg_lua_vm_create failed.\n");
+ printf("[C]:call elua_create_vm failed.\n");
return -1;
}
- printf("[C]:call tsg_lua_vm_create success.\t lua:%p\n", L);
+ printf("[C]:call elua_create_vm success.\t lua:%p\n", L);
- char out[255];
- memset(out, 0, sizeof(out));
- size_t out_len;
- size_t out_type;
- printf("\n=============================file==================================\n");
- printf("\n*********************tsg_lua_exec_file************************\n");
- printf("[C]:call tsg_lua_exec_file, exec %s ...\n", script);
- int ret = tsg_lua_exec_file(L, script, content0, strlen(content0), out, &out_len, &out_type);
- if (ret < 0)
- {
- printf("[C]:call tsg_lua_exec_file failed.\n");
- return -1;
- }
- printf("[C]:call tsg_lua_exec_file success.\n");
- printf("[C]:out_len:%zu\n", out_len);
- printf("[C]:out_type:%zu\n", out_type);
- switch(out_type)
- {
- case STRING:
- printf("[C]:out_data:%s\n", out);
- break;
- case INTEGER:
- printf("[C]:out_data:%ld\n", *(long int *)out);
- break;
- case BOOLEAN:
- printf("[C]:out_data:%d\n", out[0]);
- break;
- }
-
- printf("\n*********************tsg_lua_exec_file************************\n");
- printf("[C]:call tsg_lua_exec_file, exec %s ...\n", script1);
- ret = tsg_lua_exec_file(L, script1, content0, strlen(content0), out, &out_len, &out_type);
- if (ret < 0)
- {
- printf("[C]:call tsg_lua_exec_file failed.\n");
- return -1;
- }
- printf("[C]:call tsg_lua_exec_file success.\n");
- printf("[C]:out_len:%zu\n", out_len);
- printf("[C]:out_type:%zu\n", out_type);
- switch(out_type)
- {
- case STRING:
- printf("[C]:out_data:%s\n", out);
- break;
- case INTEGER:
- printf("[C]:out_data:%ld\n", *(long int *)out);
- break;
- case BOOLEAN:
- printf("[C]:out_data:%d\n", out[0]);
- break;
- }
+ struct elua_data output;
+ output.type = STRING;
+ output.len = 1024;
+ char buff[1024];
+ memset(buff, 0, 1024);
+ output.string = buff;
/* lua 缓存脚本, 再运行 */
- memset(out, 0, sizeof(out));
- printf("\n*********************tsg_lua_cache_script_file************************\n");
- printf("[C]: call tsg_lua_cache_script_file, script:%s ...\n", script);
- int script_id = tsg_lua_cache_script_file(L, script);
- if (script_id < 0)
+ printf("\n*********************elua_cache_script_file************************\n");
+ printf("[C]: call elua_cache_script_file, script:%s ...\n", script);
+ struct elua_script *escript = elua_cache_script_file(L, script, 0);
+ if (escript == NULL)
{
- printf("[C]: call tsg_lua_cache_script_file failed.\n");
+ printf("[C]: call elua_cache_script_file failed.\n");
return -1;
}
- printf("[C]: call tsg_lua_cache_script_file success.\t script_id:%d\n", script_id);
+ printf("[C]: call elua_cache_script_file success.\n");
- printf("\n*********************tsg_lua_cache_exec************************\n");
- printf("[C]: call tsg_lua_cache_exec ...\n");
- ret = tsg_lua_cache_exec(L, script_id, content1, 255, out, &out_len, &out_type);
+ printf("\n*********************elua_execute_script************************\n");
+ printf("[C]: call elua_execute_script ...\n");
+ int ret = elua_execute_script(escript, content1, 255, NULL, NULL, &output);
if (ret < 0)
{
- printf("[C]: call tsg_lua_cache_exec failed.\n");
+ printf("[C]: call elua_execute_script failed.\n");
return -1;
}
- printf("[C]: call tsg_lua_cache_exec success\n");
- printf("[C]:out_len:%zu\n", out_len);
- printf("[C]:out_type:%zu\n", out_type);
- switch(out_type)
+ printf("[C]: call elua_execute_script success\n");
+ printf("[C]:out_len:%zu\n", output.len);
+ printf("[C]:out_type:%d\n", output.type);
+ switch(output.type)
{
case STRING:
- printf("[C]:out_data:%s\n", out);
+ printf("[C]:out_data:%s\n", output.string);
break;
case BOOLEAN:
- printf("[C]:out_data:%d\n", out[0]);
+ printf("[C]:out_data:%d\n", output.true_or_false);
break;
case INTEGER:
- printf("[C]:out_data:%ld\n", *(long int *)out);
+ printf("[C]:out_data:%ld\n", *(long int *)output.integer);
+ break;
+ default:
break;
}
- memset(out, 0, sizeof(out));
- printf("\n*********************tsg_lua_cache_script_file************************\n");
- printf("[C]: call tsg_lua_cache_script_file, script:%s ...\n", script1);
- int script_id1 = tsg_lua_cache_script_file(L, script1);
- if (script_id1 < 0)
+ printf("\n*********************elua_cache_script_file************************\n");
+ printf("[C]: call elua_cache_script_file, script:%s ...\n", script1);
+ struct elua_script *escript1 = elua_cache_script_file(L, script1, 0);
+ if (escript1 == NULL)
{
- printf("[C]: call tsg_lua_cache_script_file failed.\n");
+ printf("[C]: call elua_cache_script_file failed.\n");
return -1;
}
- printf("[C]: call tsg_lua_cache_script_file success.\t script_id:%d\n", script_id1);
+ printf("[C]: call elua_cache_script_file success.\n");
- printf("\n*********************tsg_lua_cache_exec************************\n");
- printf("[C]: call tsg_lua_cache_exec ...\n");
- ret = tsg_lua_cache_exec(L, script_id1, content1, 255, out, &out_len, &out_type);
+ printf("\n*********************elua_execute_script************************\n");
+ printf("[C]: call elua_execute_script ...\n");
+ ret = elua_execute_script(escript1, content1, 255, NULL, NULL, &output);
if (ret < 0)
{
- printf("[C]: call tsg_lua_cache_exec failed.\n");
+ printf("[C]: call elua_execute_script failed.\n");
return -1;
}
- printf("[C]: call tsg_lua_cache_exec success\n");
- printf("[C]:out_len:%zu\n", out_len);
- printf("[C]:out_type:%zu\n", out_type);
- switch(out_type)
+ printf("[C]: call elua_execute_script success\n");
+ printf("[C]:out_len:%zu\n", output.len);
+ printf("[C]:out_type:%d\n", output.type);
+ switch(output.type)
{
case STRING:
- printf("[C]:out_data:%s\n", out);
+ printf("[C]:out_data:%s\n", output.string);
break;
case BOOLEAN:
- printf("[C]:out_data:%d\n", out[0]);
+ printf("[C]:out_data:%d\n", output.true_or_false);
break;
case INTEGER:
- printf("[C]:out_data:%ld\n", *(long int *)out);
+ printf("[C]:out_data:%ld\n", output.integer);
break;
- }
-
- /****************************************************************************************/
- printf("\n=============================string==================================\n");
- memset(out, 0, sizeof(out));
- printf("\n*********************tsg_lua_exec************************\n");
- printf("[C]: call tsg_lua_exec, text-script ...\n");
- ret = tsg_lua_exec(L, script2, strlen(script2), "hello wrold", 11, out, &out_len, &out_type);
- if (ret < 0)
- {
- printf("[C]: call tsg_lua_exec failed ...\n");
- return -1;
- }
- printf("[C]: call tsg_lua_exec success ...\n");
- printf("[C]:out_len:%zu\n", out_len);
- printf("[C]:out_type:%zu\n", out_type);
- switch(out_type)
- {
- case STRING:
- printf("[C]:out_data:%s\n", out);
- break;
- case BOOLEAN:
- printf("[C]:out_data:%d\n", out[0]);
- break;
- case INTEGER:
- printf("[C]:out_data:%ld\n", *(long int *)out);
+ default:
break;
}
- memset(out, 0, sizeof(out));
- printf("\n*********************tsg_lua_exec************************\n");
- printf("[C]: call tsg_lua_exec, bytecode-script ...\n");
- ret = tsg_lua_exec(L, script3, 124, "hello wrold", 11, out, &out_len, &out_type);
- if (ret < 0)
- {
- printf("[C]: call tsg_lua_exec failed ...\n");
- return -1;
- }
- printf("[C]: call tsg_lua_exec success ...\n");
- printf("[C]:out_len:%zu\n", out_len);
- printf("[C]:out_type:%zu\n", out_type);
- switch(out_type)
- {
- case STRING:
- printf("[C]:out_data:%s\n", out);
- break;
- case BOOLEAN:
- printf("[C]:out_data:%d\n", out[0]);
- break;
- case INTEGER:
- printf("[C]:out_data:%ld\n", *(long int *)out);
- break;
- }
- memset(out, 0, sizeof(out));
- printf("\n*********************tsg_lua_cache_script************************\n");
- printf("[C]: call tsg_lua_cache_script, text-script ...\n");
- int script_id2 = tsg_lua_cache_script(L, script2, strlen(script2));
- if (script_id2 < 0)
- {
- printf("[C]: call tsg_lua_cache_script failed.\n");
- return -1;
- }
- printf("[C]: call tsg_lua_cache_script success.\t script_id:%d\n", script_id2);
-
- printf("\n*********************tsg_lua_cache_exec************************\n");
- printf("[C]: call tsg_lua_cache_exec ...\n");
- ret = tsg_lua_cache_exec(L, script_id2, "hello wrold", 11, out, &out_len, &out_type);
- if (ret < 0)
- {
- printf("[C]: call tsg_lua_cache_exec failed.\n");
- return -1;
- }
- printf("[C]: call tsg_lua_cache_exec success\n");
- printf("[C]:out_len:%zu\n", out_len);
- printf("[C]:out_type:%zu\n", out_type);
- switch(out_type)
- {
- case STRING:
- printf("[C]:out_data:%s\n", out);
- break;
- case BOOLEAN:
- printf("[C]:out_data:%d\n", out[0]);
- break;
- case INTEGER:
- printf("[C]:out_data:%ld\n", *(long int *)out);
- break;
- }
- memset(out, 0, sizeof(out));
- printf("\n*********************tsg_lua_cache_script************************\n");
- printf("[C]: call tsg_lua_cache_script, text-script ...\n");
- int script_id3 = tsg_lua_cache_script(L, script3, 124);
- if (script_id3 < 0)
- {
- printf("[C]: call tsg_lua_cache_script failed.\n");
- return -1;
- }
- printf("[C]: call tsg_lua_cache_script success.\t script_id:%d\n", script_id3);
-
- printf("\n*********************tsg_lua_cache_exec************************\n");
- printf("[C]: call tsg_lua_cache_exec ...\n");
- ret = tsg_lua_cache_exec(L, script_id3, "hello world", 11, out, &out_len, &out_type);
- if (ret < 0)
- {
- printf("[C]: call tsg_lua_cache_exec failed.\n");
- return -1;
- }
- printf("[C]: call tsg_lua_cache_exec success\n");
- printf("[C]:out_len:%zu\n", out_len);
- printf("[C]:out_type:%zu\n", out_type);
- switch(out_type)
- {
- case STRING:
- printf("[C]:out_data:%s\n", out);
- break;
- case BOOLEAN:
- printf("[C]:out_data:%d\n", out[0]);
- break;
- case INTEGER:
- printf("[C]:out_data:%ld\n", *(long int *)out);
- break;
- }
/* lua 注销脚本 */
- memset(out, 0, sizeof(out));
- printf("\n*********************tsg_lua_uncache_script************************\n");
- printf("[C]: call tsg_lua_uncache_script, script_id:%d ...\n", script_id);
- ret = tsg_lua_uncache_script(L, script_id);
- if (ret < 0)
- {
- printf("[C]: call tsg_lua_uncache_script failed.\n");
- return -1;
- }
- printf("[C]: call tsg_lua_uncache_script success\n");
- printf("\n*********************tsg_lua_uncache_script************************\n");
- printf("[C]: call tsg_lua_uncache_script, script_id:%d ...\n", script_id1);
- ret = tsg_lua_uncache_script(L, script_id1);
+ printf("\n*********************elua_cleanup_script************************\n");
+ printf("[C]: call elua_cleanup_script...\n");
+ ret = elua_cleanup_script(escript);
if (ret < 0)
{
- printf("[C]: call tsg_lua_uncache_script failed.\n");
+ printf("[C]: call elua_cleanup_script failed.\n");
return -1;
}
- printf("[C]: call tsg_lua_uncache_script success\n");
- printf("\n*********************tsg_lua_uncache_script************************\n");
- printf("[C]: call tsg_lua_uncache_script, script_id:%d ...\n", script_id2);
- ret = tsg_lua_uncache_script(L, script_id2);
+ printf("[C]: call elua_cleanup_script success\n");
+ printf("\n*********************elua_cleanup_script************************\n");
+ printf("[C]: call elua_cleanup_script...\n");
+ ret = elua_cleanup_script(escript1);
if (ret < 0)
{
- printf("[C]: call tsg_lua_uncache_script failed.\n");
+ printf("[C]: call elua_cleanup_script failed.\n");
return -1;
}
- printf("[C]: call tsg_lua_uncache_script success\n");
- printf("\n*********************tsg_lua_uncache_script************************\n");
- printf("[C]: call tsg_lua_uncache_script, script_id:%d ...\n", script_id3);
- ret = tsg_lua_uncache_script(L, script_id3);
- if (ret < 0)
- {
- printf("[C]: call tsg_lua_uncache_script failed.\n");
- return -1;
- }
- printf("[C]: call tsg_lua_uncache_script success\n");
-
- tsg_lua_cache_exec(L, script_id, content1, 255, out, &out_len, &out_type);
-
+ printf("[C]: call elua_cleanup_script success\n");
/* 关闭lua */
- tsg_destory_lua(L);
+ elua_destroy_vm(L);
printf("[C]:Every day is good day!\n");
return 0;