aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libraries
diff options
context:
space:
mode:
authorDavid Walter Seikel2014-08-14 08:32:50 +1000
committerDavid Walter Seikel2014-08-14 08:32:50 +1000
commit9e8f8dbd9c52d1da132d618573d87650e0a0f7f9 (patch)
treec9d76f4a95b3ed6b0d8174be2d981ec04cc570a9 /src/libraries
parentConsiderable cleanup of the top level compiling code. (diff)
downloadSledjHamr-9e8f8dbd9c52d1da132d618573d87650e0a0f7f9.zip
SledjHamr-9e8f8dbd9c52d1da132d618573d87650e0a0f7f9.tar.gz
SledjHamr-9e8f8dbd9c52d1da132d618573d87650e0a0f7f9.tar.bz2
SledjHamr-9e8f8dbd9c52d1da132d618573d87650e0a0f7f9.tar.xz
Only collect the errors and warnings during a compile, output them in a batch at the end.
Diffstat (limited to 'src/libraries')
-rw-r--r--src/libraries/Runnr.c4
-rw-r--r--src/libraries/Runnr.h8
-rw-r--r--src/libraries/SledjHamr.c25
-rw-r--r--src/libraries/SledjHamr.h1
4 files changed, 35 insertions, 3 deletions
diff --git a/src/libraries/Runnr.c b/src/libraries/Runnr.c
index 1f10d33..5fecfdf 100644
--- a/src/libraries/Runnr.c
+++ b/src/libraries/Runnr.c
@@ -421,9 +421,6 @@ static void _compileEnd(void *data, Ecore_Thread *thread)
421 free(compiler->SID); 421 free(compiler->SID);
422} 422}
423 423
424// TODO - Should pass error messages back through a linked list.
425// To eventually get passed back to the calling app via compiler->errors and compiler->warnings.
426// Will need ageneric "add this formatted string to a linked list" function, in SledjHamr.c
427static void _compileThread(void *data, Ecore_Thread *thread) 424static void _compileThread(void *data, Ecore_Thread *thread)
428{ 425{
429 LuaCompiler *compiler = data; 426 LuaCompiler *compiler = data;
@@ -487,6 +484,7 @@ static void _compileThread(void *data, Ecore_Thread *thread)
487 } 484 }
488} 485}
489 486
487// TODO - Threaded version is consistantly about half the speed. WTF?
490void compileScript(LuaCompiler *compiler, int threadIt) 488void compileScript(LuaCompiler *compiler, int threadIt)
491{ 489{
492 if (threadIt) 490 if (threadIt)
diff --git a/src/libraries/Runnr.h b/src/libraries/Runnr.h
index 63e0afc..a2098d9 100644
--- a/src/libraries/Runnr.h
+++ b/src/libraries/Runnr.h
@@ -30,6 +30,13 @@ typedef enum
30typedef struct _LuaCompile LuaCompile; 30typedef struct _LuaCompile LuaCompile;
31typedef void (* compileCb)(LuaCompile *compiler); 31typedef void (* compileCb)(LuaCompile *compiler);
32 32
33typedef struct _compileMessage
34{
35 Eina_Clist node;
36 char *message;
37 int type, column, line;
38} compileMessage;
39
33typedef struct _LuaCompile 40typedef struct _LuaCompile
34{ 41{
35 char *file, *SID, *luaName; 42 char *file, *SID, *luaName;
@@ -38,6 +45,7 @@ typedef struct _LuaCompile
38 compileCb parser; 45 compileCb parser;
39 compileCb cb; 46 compileCb cb;
40 boolean doConstants; 47 boolean doConstants;
48 Eina_Clist messages; // HEAD for error and warning messages.
41} LuaCompiler; 49} LuaCompiler;
42 50
43typedef struct _script script; 51typedef struct _script script;
diff --git a/src/libraries/SledjHamr.c b/src/libraries/SledjHamr.c
index 5e1d387..5b1cfd5 100644
--- a/src/libraries/SledjHamr.c
+++ b/src/libraries/SledjHamr.c
@@ -13,6 +13,12 @@ struct _conct
13 Ecore_Event_Handler *add, *data, *del; 13 Ecore_Event_Handler *add, *data, *del;
14}; 14};
15 15
16struct _message
17{
18 Eina_Clist node;
19 char *message;
20};
21
16 22
17static Eina_Bool _add(void *data, int type, Ecore_Con_Event_Server_Del *ev) 23static Eina_Bool _add(void *data, int type, Ecore_Con_Event_Server_Del *ev)
18{ 24{
@@ -85,6 +91,25 @@ Ecore_Con_Server *reachOut(char *address, int port, void *data, Ecore_Event_Hand
85 return server; 91 return server;
86} 92}
87 93
94void *addMessage(Eina_Clist *list, size_t size, const char *message, ...)
95{
96 va_list args;
97 char buf[PATH_MAX];
98 int length = 0;
99 struct _message *result;
100
101 va_start(args, message);
102 length += vsprintf(&buf[length], message, args);
103 va_end(args);
104 result = calloc(1, size + length + 1);
105 eina_clist_element_init(&(result->node));
106 eina_clist_add_tail(list, &(result->node));
107 result->message = ((char *) result) + size;
108 strcpy(result->message, buf);
109
110 return result;
111}
112
88void sendBack(Ecore_Con_Client *client, const char *SID, const char *message, ...) 113void sendBack(Ecore_Con_Client *client, const char *SID, const char *message, ...)
89{ 114{
90 va_list args; 115 va_list args;
diff --git a/src/libraries/SledjHamr.h b/src/libraries/SledjHamr.h
index 7ce32b9..07018a1 100644
--- a/src/libraries/SledjHamr.h
+++ b/src/libraries/SledjHamr.h
@@ -9,6 +9,7 @@
9 9
10 10
11Ecore_Con_Server *reachOut(char *address, int port, void *data, Ecore_Event_Handler_Cb _add, Ecore_Event_Handler_Cb _data, Ecore_Event_Handler_Cb _del); 11Ecore_Con_Server *reachOut(char *address, int port, void *data, Ecore_Event_Handler_Cb _add, Ecore_Event_Handler_Cb _data, Ecore_Event_Handler_Cb _del);
12void *addMessage(Eina_Clist *list, size_t size, const char *message, ...);
12void sendBack(Ecore_Con_Client *client, const char *SID, const char *message, ...); 13void sendBack(Ecore_Con_Client *client, const char *SID, const char *message, ...);
13void sendForth(Ecore_Con_Server *server, const char *SID, const char *message, ...); 14void sendForth(Ecore_Con_Server *server, const char *SID, const char *message, ...);
14 15