-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathciterop.c
More file actions
129 lines (105 loc) · 5.72 KB
/
citerop.c
File metadata and controls
129 lines (105 loc) · 5.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#define error LuaSilverCHainError
#include "dependencies/LuaCEmbedOne.c"
#undef error
#include "dependencies/doTheWorldOne.c"
#include "dependencies/CTextEngineOne.c"
#include "dependencies/CSilverChainApiNoDependenciesIncluded.h"
#if defined(__linux__) || defined(__APPLE__)
#define private_lua_silver_chain_ptr_cast long long
#endif
#ifdef _WIN32
#define private_lua_silver_chain_ptr_cast long
#endif
char * private_silver_chain_get_str_arg_if_exist(LuaCEmbed *args,int index){
if(LuaCEmbed_get_arg_type(args, index) == LUA_CEMBED_STRING){
return LuaCEmbed_get_str_arg(args,index);
}
return NULL;
}
//============================ Generators =================================================
LuaCEmbedResponse * private_silver_chain_lua_generator(LuaCEmbed *args){
char *src = LuaCEmbed_get_str_arg(args, 0);
char *import_dir = LuaCEmbed_get_str_arg(args,1);
char * project_short_cut = LuaCEmbed_get_str_arg(args,2);
SilverChainStringArray *tags = (SilverChainStringArray*)(private_lua_silver_chain_ptr_cast)LuaCEmbed_get_long_arg(args,3);
bool implement_main = LuaCEmbed_get_bool_arg(args, 4);
char *main_name = private_silver_chain_get_str_arg_if_exist(args,5);
char *main_path = private_silver_chain_get_str_arg_if_exist(args,6);
if(LuaCEmbed_has_errors(args)){
printf("%s\n",LuaCEmbed_get_error_message(args));
}
SilverChainError *error = SilverChain_generate_code(src,import_dir,project_short_cut,tags,implement_main, main_name,main_path);
return LuaCEmbed_send_long((private_lua_silver_chain_ptr_cast)error);
}
LuaCEmbedResponse * private_silver_chain_lua_generator_watch_mode(LuaCEmbed *args){
char *src = LuaCEmbed_get_str_arg(args, 0);
char *import_dir = LuaCEmbed_get_str_arg(args,1);
char * project_short_cut = LuaCEmbed_get_str_arg(args,2);
SilverChainStringArray *tags = (SilverChainStringArray*)(private_lua_silver_chain_ptr_cast)LuaCEmbed_get_long_arg(args,3);
bool implement_main = LuaCEmbed_get_bool_arg(args, 4);
char *main_name = private_silver_chain_get_str_arg_if_exist(args,5);
char *main_path = private_silver_chain_get_str_arg_if_exist(args,6);
int timeout = LuaCEmbed_get_long_arg(args,6);
SilverChain_generate_code_in_watch_mode(src,import_dir,project_short_cut,tags,implement_main, main_name,main_path,timeout);
return NULL;
}
LuaCEmbedResponse *private_silver_chain_lua_remove(LuaCEmbed *args){
char *src = LuaCEmbed_get_str_arg(args, 0);
SilverCHain_remove_start_end_from_folder(src);
return NULL;
}
LuaCEmbedResponse *private_silver_chain_lua_remove_from_content(LuaCEmbed *args){
char *content = LuaCEmbed_get_str_arg(args, 0);
char *result = SilverChain_remove_start_end_from_string(content);
if(result){
LuaCEmbedResponse *response = LuaCEmbed_send_str(result);
free(result);
return response;
}
return NULL;
}
//============================ Errors ========================================================
LuaCEmbedResponse * private_silver_chain_lua_get_error_msg(LuaCEmbed *args){
SilverChainError *error = (SilverChainError*)(private_lua_silver_chain_ptr_cast)LuaCEmbed_get_long_arg(args,0);
return LuaCEmbed_send_str(error->error_msg);
}
LuaCEmbedResponse * private_silver_chain_lua_get_error_path(LuaCEmbed *args){
SilverChainError *error = (SilverChainError*)(private_lua_silver_chain_ptr_cast)LuaCEmbed_get_long_arg(args,0);
return LuaCEmbed_send_str(error->error_path);
}
LuaCEmbedResponse * private_silver_chain_lua_free_error(LuaCEmbed *args){
SilverChainError *error = (SilverChainError*)(private_lua_silver_chain_ptr_cast)LuaCEmbed_get_long_arg(args,0);
SilverChainError_free(error);
return NULL;
}
//============================ String Array =================================================
LuaCEmbedResponse * private_silver_chain_lua_new_SiverChainStringArray(LuaCEmbed *args){
SilverChainStringArray *value = newSilverChainStringArray();
return LuaCEmbed_send_long((private_lua_silver_chain_ptr_cast )value);
}
LuaCEmbedResponse * private_silver_chain_lua_free_SiverChainStringArray(LuaCEmbed *args){
SilverChainStringArray *value = (SilverChainStringArray*)(private_lua_silver_chain_ptr_cast)LuaCEmbed_get_long_arg(args,0);
SilverChainStringArray_free(value);
return NULL;
}
LuaCEmbedResponse * private_silver_chain_lua_apend_SiverChainStringArray(LuaCEmbed *args){
SilverChainStringArray *value = (SilverChainStringArray*)(private_lua_silver_chain_ptr_cast)LuaCEmbed_get_long_arg(args,0);
char *str = LuaCEmbed_get_str_arg(args, 1);
SilverChainStringArray_append(value, str);
return NULL;
}
int luaopen_private_silverchain_cinterop(lua_State *state){
//functions will be only assescible by the required reciver
LuaCEmbed * l = newLuaCEmbedLib(state);
LuaCEmbed_add_callback(l, "generate", private_silver_chain_lua_generator);
LuaCEmbed_add_callback(l, "remove_source", private_silver_chain_lua_remove);
LuaCEmbed_add_callback(l, "remove_from_content", private_silver_chain_lua_remove_from_content);
LuaCEmbed_add_callback(l, "generate_watch", private_silver_chain_lua_generator_watch_mode);
LuaCEmbed_add_callback(l, "get_error_msg", private_silver_chain_lua_get_error_msg);
LuaCEmbed_add_callback(l, "get_error_path", private_silver_chain_lua_get_error_path);
LuaCEmbed_add_callback(l, "free_error", private_silver_chain_lua_free_error);
LuaCEmbed_add_callback(l, "newStringArray", private_silver_chain_lua_new_SiverChainStringArray);
LuaCEmbed_add_callback(l, "free_string_array", private_silver_chain_lua_free_SiverChainStringArray);
LuaCEmbed_add_callback(l, "append_string_array", private_silver_chain_lua_apend_SiverChainStringArray);
return LuaCembed_send_self_as_lib(l);
}