From 9e8f8dbd9c52d1da132d618573d87650e0a0f7f9 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Thu, 14 Aug 2014 08:32:50 +1000 Subject: Only collect the errors and warnings during a compile, output them in a batch at the end. --- src/libraries/Runnr.c | 4 +--- src/libraries/Runnr.h | 8 ++++++++ src/libraries/SledjHamr.c | 25 +++++++++++++++++++++++++ src/libraries/SledjHamr.h | 1 + 4 files changed, 35 insertions(+), 3 deletions(-) (limited to 'src/libraries') 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) free(compiler->SID); } -// TODO - Should pass error messages back through a linked list. -// To eventually get passed back to the calling app via compiler->errors and compiler->warnings. -// Will need ageneric "add this formatted string to a linked list" function, in SledjHamr.c static void _compileThread(void *data, Ecore_Thread *thread) { LuaCompiler *compiler = data; @@ -487,6 +484,7 @@ static void _compileThread(void *data, Ecore_Thread *thread) } } +// TODO - Threaded version is consistantly about half the speed. WTF? void compileScript(LuaCompiler *compiler, int threadIt) { 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 typedef struct _LuaCompile LuaCompile; typedef void (* compileCb)(LuaCompile *compiler); +typedef struct _compileMessage +{ + Eina_Clist node; + char *message; + int type, column, line; +} compileMessage; + typedef struct _LuaCompile { char *file, *SID, *luaName; @@ -38,6 +45,7 @@ typedef struct _LuaCompile compileCb parser; compileCb cb; boolean doConstants; + Eina_Clist messages; // HEAD for error and warning messages. } LuaCompiler; typedef 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 Ecore_Event_Handler *add, *data, *del; }; +struct _message +{ + Eina_Clist node; + char *message; +}; + static Eina_Bool _add(void *data, int type, Ecore_Con_Event_Server_Del *ev) { @@ -85,6 +91,25 @@ Ecore_Con_Server *reachOut(char *address, int port, void *data, Ecore_Event_Hand return server; } +void *addMessage(Eina_Clist *list, size_t size, const char *message, ...) +{ + va_list args; + char buf[PATH_MAX]; + int length = 0; + struct _message *result; + + va_start(args, message); + length += vsprintf(&buf[length], message, args); + va_end(args); + result = calloc(1, size + length + 1); + eina_clist_element_init(&(result->node)); + eina_clist_add_tail(list, &(result->node)); + result->message = ((char *) result) + size; + strcpy(result->message, buf); + + return result; +} + void sendBack(Ecore_Con_Client *client, const char *SID, const char *message, ...) { 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 @@ Ecore_Con_Server *reachOut(char *address, int port, void *data, Ecore_Event_Handler_Cb _add, Ecore_Event_Handler_Cb _data, Ecore_Event_Handler_Cb _del); +void *addMessage(Eina_Clist *list, size_t size, const char *message, ...); void sendBack(Ecore_Con_Client *client, const char *SID, const char *message, ...); void sendForth(Ecore_Con_Server *server, const char *SID, const char *message, ...); -- cgit v1.1