Skip to content

Commit 72e0b87

Browse files
att
1 parent 1189e0f commit 72e0b87

12 files changed

+179
-31927
lines changed

LuaCEmbed.h

Lines changed: 0 additions & 31862 deletions
This file was deleted.

lib.c

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
2+
#include "src/one.c"
3+
4+
LuaCEmbedNamespace lua_n;
5+
6+
7+
LuaCEmbedResponse *add_cfunc(LuaCEmbed *args){
8+
double first_num = lua_n.args.get_double(args,0);
9+
double second_num = lua_n.args.get_double(args,1);
10+
11+
if(lua_n.has_errors(args)){
12+
char *message = lua_n.get_error_message(args);
13+
return lua_n.response.send_error(message);
14+
}
15+
double result = first_num + second_num;
16+
return lua_n.response.send_double(result);
17+
}
18+
LuaCEmbedResponse *sub_cfunc(LuaCEmbed *args){
19+
double first_num = lua_n.args.get_double(args,0);
20+
double second_num = lua_n.args.get_double(args,1);
21+
22+
if(lua_n.has_errors(args)){
23+
char *message = lua_n.get_error_message(args);
24+
return lua_n.response.send_error(message);
25+
}
26+
double result = first_num - second_num;
27+
return lua_n.response.send_double(result);
28+
}
29+
int luaopen_my_lib(lua_State *state){
30+
lua_n = newLuaCEmbedNamespace();
31+
32+
33+
//functions will be only assescible by the required reciver
34+
LuaCEmbed * l = lua_n.newLuaLib(state);
35+
// lua_n.dangerous_raise_error_jumping(l,"tesddddt");
36+
37+
lua_n.add_callback(l,"add",add_cfunc);
38+
lua_n.add_callback(l,"sub",sub_cfunc);
39+
40+
return lua_n.perform(l);
41+
}

src/LuaCEmbed/basic/fdeclare.basic.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,9 @@ void LuaCEmbed_load_native_libs(LuaCEmbed *self);
1717

1818
void LuaCembed_set_delete_function(LuaCEmbed *self,void (*delelte_function)(struct LuaCEmbed *self));
1919

20-
char * LuaCEmbed_get_error_message(LuaCEmbed *self);
21-
22-
23-
bool LuaCEmbed_has_errors(LuaCEmbed *self);
24-
25-
void LuaCEmbed_clear_errors(LuaCEmbed *self);
2620

2721
void privateLuaCEmbd_get_field_protected(LuaCEmbed *self,const char *name);
2822

29-
void privateLuaCEmbed_raise_error_not_jumping(LuaCEmbed *self, const char *error, ...);
3023

3124
void * privateLuaCEmbed_get_current_table_array(LuaCEmbed *self);
3225

@@ -41,5 +34,3 @@ void privata_LuaCEmbed_increment_stack_(LuaCEmbed *self);
4134
void privata_LuaCEmbed_decrement_stack(LuaCEmbed *self);
4235

4336
void LuaCEmbed_free(LuaCEmbed *self);
44-
45-

src/LuaCEmbed/basic/fdefine.basic.c

Lines changed: 12 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,19 @@ LuaCEmbed * newLuaCEmbedEvaluation(){
1515
return self;
1616
}
1717
void LuaCEmbed_load_lib_from_c(LuaCEmbed *self,int (*callback)(lua_State *l),const char *name){
18-
int result = callback(self->state);
19-
if(result > 0){
20-
lua_setglobal(self->state,name);
18+
if(LuaCEmbed_has_errors(self)){
19+
return;
20+
}
21+
22+
lua_pushcfunction(self->state, callback);
23+
int result = lua_pcall(self->state,0,1,0);
24+
if(result){
25+
privateLuaCEmbed_raise_error_not_jumping(self,lua_tostring(self->state,-1));
26+
lua_settop(self->state,0);
27+
return;
2128
}
29+
lua_setglobal(self->state,name);
30+
lua_settop(self->state,0);
2231
}
2332
void LuaCEmbed_load_native_libs(LuaCEmbed *self) {
2433
luaL_openlibs(self->state);
@@ -38,55 +47,14 @@ void LuaCEmbed_set_timeout(int seconds){
3847
lua_cembed_timeout = seconds;
3948
}
4049

41-
char * LuaCEmbed_get_error_message(LuaCEmbed *self){
42-
if(!self){
43-
return NULL;
44-
}
4550

46-
return self->error_msg;
47-
}
48-
void LuaCEmbed_clear_errors(LuaCEmbed *self){
49-
if(!self){
50-
return;
51-
}
52-
53-
if(self->error_msg){
54-
free(self->error_msg);
55-
self->error_msg = NULL;
56-
}
57-
}
5851
void * privateLuaCEmbed_get_current_table_array(LuaCEmbed *self){
5952
if(self->current_function){
6053
return self->func_tables;
6154
}
6255
return self->global_tables;
6356
}
64-
void privateLuaCEmbed_raise_error_not_jumping(LuaCEmbed *self, const char *error_msg, ...){
6557

66-
if(LuaCEmbed_has_errors(self)){
67-
return;
68-
}
69-
70-
va_list args;
71-
va_start(args,error_msg);
72-
self->error_msg = private_LuaCembed_format_vaarg(error_msg, args);
73-
va_end(args);
74-
75-
}
76-
77-
78-
79-
bool LuaCEmbed_has_errors(LuaCEmbed *self){
80-
if(!self){
81-
return true;
82-
}
83-
84-
if(self->error_msg){
85-
return true;
86-
}
87-
88-
return false;
89-
}
9058

9159

9260

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2+
//silver_chain_scope_start
3+
//mannaged by silver chain
4+
#include "../../imports/imports.typesD.h"
5+
//silver_chain_scope_end
6+
7+
8+
char * LuaCEmbed_get_error_message(LuaCEmbed *self);
9+
10+
bool LuaCEmbed_has_errors(LuaCEmbed *self);
11+
12+
void LuaCEmbed_clear_errors(LuaCEmbed *self);
13+
14+
15+
void privateLuaCEmbed_raise_error_not_jumping(LuaCEmbed *self, const char *error, ...);
16+
17+
void LuaCEmbed_dangerous_raise_error_jumping(LuaCEmbed *self,const char *error_msg,...);
18+
19+
void LuaCEmbed_dangerous_raise_self_error_jumping(LuaCEmbed *self,const char *error_msg,...);

src/LuaCEmbed/errors/fdefine.errors.c

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
2+
//silver_chain_scope_start
3+
//mannaged by silver chain
4+
#include "../../imports/imports.fdeclare.h"
5+
//silver_chain_scope_end
6+
7+
8+
char * LuaCEmbed_get_error_message(LuaCEmbed *self){
9+
if(!self){
10+
return NULL;
11+
}
12+
13+
return self->error_msg;
14+
}
15+
void LuaCEmbed_clear_errors(LuaCEmbed *self){
16+
if(!self){
17+
return;
18+
}
19+
20+
if(self->error_msg){
21+
free(self->error_msg);
22+
self->error_msg = NULL;
23+
}
24+
}
25+
26+
void privateLuaCEmbed_raise_error_not_jumping(LuaCEmbed *self, const char *error_msg, ...){
27+
28+
if(LuaCEmbed_has_errors(self)){
29+
return;
30+
}
31+
32+
va_list args;
33+
va_start(args,error_msg);
34+
self->error_msg = private_LuaCembed_format_vaarg(error_msg, args);
35+
va_end(args);
36+
37+
}
38+
39+
40+
41+
bool LuaCEmbed_has_errors(LuaCEmbed *self){
42+
if(!self){
43+
return true;
44+
}
45+
46+
if(self->error_msg){
47+
return true;
48+
}
49+
50+
return false;
51+
}
52+
53+
54+
55+
void LuaCEmbed_dangerous_raise_error_jumping(LuaCEmbed *self,const char *error_msg,...){
56+
if(LuaCEmbed_has_errors(self)){
57+
return;
58+
}
59+
60+
va_list args;
61+
va_start(args,error_msg);
62+
char *error_formmated = private_LuaCembed_format_vaarg(error_msg, args);
63+
va_end(args);
64+
lua_pushstring(self->state, error_formmated);
65+
free(error_formmated);
66+
lua_error(self->state);
67+
}
68+
69+
void LuaCEmbed_dangerous_raise_self_error_jumping(LuaCEmbed *self,const char *error_msg,...){
70+
if(!LuaCEmbed_has_errors(self)){
71+
return;
72+
}
73+
char *msg = LuaCEmbed_get_error_message(self);
74+
lua_pushstring(self->state,msg);
75+
LuaCEmbed_clear_errors(self);
76+
lua_error(self->state);
77+
}

src/LuaCEmbed/lib_start/fdefine.lib_start.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ LuaCEmbed * newLuaCEmbedLib(lua_State *state){
2121
self->lib_identifier = 0;
2222

2323
lua_getglobal(self->state,PRIVATE_LUA_CEMBED_TOTAL_LIBS);
24-
if(lua_type(self->state,-1) == LUA_CEMBED_NIL){
24+
if(lua_type(self->state,-1) != LUA_CEMBED_NIL){
2525
self->lib_identifier = lua_tointeger(self->state,-1);
2626
}
2727

src/imports/imports.fdeclare.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "../LuaCEmbed/args/evaluation/fdeclare.evaluation.h"
77
#include "../LuaCEmbed/basic/fdeclare.basic.h"
88
#include "../LuaCEmbed/callback_handle/fdeclare.callback_handle.h"
9+
#include "../LuaCEmbed/errors/fdeclare.errors.h"
910
#include "../LuaCEmbed/evaluation/fdeclare.evaluation.h"
1011
#include "../LuaCEmbed/globals/errors/fdeclare.errors.h"
1112
#include "../LuaCEmbed/globals/getters/fdeclare.getters.h"

src/imports/imports.fdefine.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "../LuaCEmbed/args/evaluation/fdefine.evaluation.c"
77
#include "../LuaCEmbed/basic/fdefine.basic.c"
88
#include "../LuaCEmbed/callback_handle/fdefine.callback_handle.c"
9+
#include "../LuaCEmbed/errors/fdefine.errors.c"
910
#include "../LuaCEmbed/evaluation/fdefine.evaluation.c"
1011
#include "../LuaCEmbed/globals/errors/fdefine.errors.c"
1112
#include "../LuaCEmbed/globals/getters/fdefine.getters.c"

src/namespace/LuaCEmbedNamespace/fdefine.LuaCEmbedNamespace.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ LuaCEmbedNamespace newLuaCEmbedNamespace(){
4545
self.get_bool_lib_prop = LuaCEmbed_get_bool_lib_prop;
4646
self.get_string_lib_prop = LuaCEmbed_get_string_lib_prop;
4747
self.get_table_lib_prop = LuaCEmbed_get_table_lib_prop;
48+
self.dangerous_raise_error_jumping = LuaCEmbed_dangerous_raise_error_jumping;
49+
self.dangerous_raise_self_error_jumping = LuaCEmbed_dangerous_raise_self_error_jumping;
4850

4951
self.free = LuaCEmbed_free;
5052
return self;

src/namespace/LuaCEmbedNamespace/typesD.LuaCEmbedNamespace.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ typedef struct{
4848
void (*add_callback)(LuaCEmbed *self, const char *callback_name, LuaCEmbedResponse* (*callback)(LuaCEmbed *args) );
4949
void (*add_global_callback)(LuaCEmbed *self, const char *callback_name, LuaCEmbedResponse* (*callback)(LuaCEmbed *args) );
5050

51+
void (*dangerous_raise_error_jumping)(LuaCEmbed *self,const char *error_msg,...);
52+
void (*dangerous_raise_self_error_jumping)(LuaCEmbed *self,const char *error_msg,...);
53+
5154
void (*free)(LuaCEmbed *self);
5255

5356
} LuaCEmbedNamespace;

teste.c

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,29 @@
1-
#include "LuaCEmbed.h"
2-
LuaCEmbedNamespace lua_n;
31

4-
int main(int argc, char *argv[]){
52

6-
lua_n = newLuaCEmbedNamespace();
7-
LuaCEmbed * l = lua_n.newLuaEvaluation();
8-
lua_n.evaluate(l,"r = 30");
9-
long calc = lua_n.get_evaluation_long(l,"r + 20");
10-
printf("result %ld",calc);
113

12-
if(lua_n.has_errors(l)){
13-
printf("error: %s\n",lua_n.get_error_message(l));
4+
#include "lib.c"
5+
#include "src/one.c"
6+
LuaCEmbedNamespace lua_n1;
7+
8+
int main(){
9+
10+
lua_n1 = newLuaCEmbedNamespace();
11+
LuaCEmbed * main_obj = lua_n1.newLuaEvaluation();
12+
13+
14+
lua_n1.load_lib_from_c(main_obj,luaopen_my_lib,"calc");
15+
if(lua_n1.has_errors(main_obj)){
16+
printf("erro de carrgamento = '%s'\n",lua_n1.get_error_message(main_obj));
17+
lua_n1.free(main_obj);
18+
return 0;
1419
}
15-
lua_n.free(l);
1620

21+
lua_n1.evaluate(main_obj,"x = calc.add(0,20)");
22+
if(lua_n1.has_errors(main_obj)){
23+
printf("erro interno = '%s'\n",lua_n1.get_error_message(main_obj));
24+
return 0;
25+
}
26+
printf("%lld\n",lua_n1.globals.get_long(main_obj,"x"));
27+
lua_n1.free(main_obj);
1728
return 0;
1829
}

0 commit comments

Comments
 (0)