To evaluate Lua Code from C, you can use all the evaluation methods, provided by the lib
#include "LuaCEmbedOne.c"
LuaCEmbedNamespace lua_n;
int main(int argc, char *argv[]){
lua_n = newLuaCEmbedNamespace();
LuaCEmbed * l = lua_n.newLuaEvaluation();
lua_n.evaluate(l,"r = 'hello world'");
char * result = lua_n.get_string_evaluation(l,"r");
printf("result: %s\n",result);
if(lua_n.has_errors(l)){
printf("error: %s\n",lua_n.get_error_message(l));
}
lua_n.free(l);
return 0;
}
It will produce:
result: hello world
It's also possible to evaluate a file by using the evaluete_file method
#include "LuaCEmbedOne.c"
LuaCEmbedNamespace lua_n;
LuaCEmbedResponse * hello(LuaCEmbed *args){
printf("hello world");
return NULL;
}
int main(int argc, char *argv[]){
lua_n = newLuaCEmbedNamespace();
LuaCEmbed * l = lua_n.newLuaEvaluation();
lua_n.add_callback(l,"hello",hello);
lua_n.evaluete_file(l,"tests/target/hello.lua");
if(lua_n.has_errors(l)){
printf("error: %s\n",lua_n.get_error_message(l));
}
lua_n.free(l);
return 0;
}
It will produce:
hello world
You can determine the type of the evaluation by using the get_evaluation_type method
#include "LuaCEmbedOne.c"
LuaCEmbedNamespace lua_n;
int main(int argc, char *argv[]){
lua_n = newLuaCEmbedNamespace();
LuaCEmbed * l = lua_n.newLuaEvaluation();
lua_n.evaluate(l,"r = 'hello world'");
int r_type = lua_n.get_evaluation_type(l,"r");
const char*converted = lua_n.convert_arg_code(r_type);
printf("result: %s\n",converted);
if(lua_n.has_errors(l)){
printf("error: %s\n",lua_n.get_error_message(l));
}
lua_n.free(l);
return 0;
}
It will produce:
result: string
#include "LuaCEmbedOne.c"
LuaCEmbedNamespace lua_n;
int main(int argc, char *argv[]){
lua_n = newLuaCEmbedNamespace();
LuaCEmbed * l = lua_n.newLuaEvaluation();
lua_n.evaluate(l,"r = 20 + 30");
long result = lua_n.get_evaluation_long(l,"r");
printf("result: %ld\n",result);
if(lua_n.has_errors(l)){
printf("error: %s\n",lua_n.get_error_message(l));
}
lua_n.free(l);
return 0;
}
It will produce:
result: 50
#include "LuaCEmbedOne.c"
LuaCEmbedNamespace lua_n;
int main(int argc, char *argv[]){
lua_n = newLuaCEmbedNamespace();
LuaCEmbed * l = lua_n.newLuaEvaluation();
lua_n.evaluate(l,"r = 20 + 30");
double result = lua_n.get_evaluation_double(l,"r");
printf("result: %lf\n",result);
if(lua_n.has_errors(l)){
printf("error: %s\n",lua_n.get_error_message(l));
}
lua_n.free(l);
return 0;
}
It will produce:
result: 50.000000
#include "LuaCEmbedOne.c"
LuaCEmbedNamespace lua_n;
int main(int argc, char *argv[]){
lua_n = newLuaCEmbedNamespace();
LuaCEmbed * l = lua_n.newLuaEvaluation();
lua_n.evaluate(l,"r = true");
bool result = lua_n.get_evaluation_bool(l,"r");
printf("result: %d\n",result);
if(lua_n.has_errors(l)){
printf("error: %s\n",lua_n.get_error_message(l));
}
lua_n.free(l);
return 0;
}
It will produce:
result: 1