char * handle_slim_message(char * message) { SlimList* instructions = SlimList_Deserialize(message); SlimList* results = ListExecutor_Execute(listExecutor, instructions); char * response = SlimList_Serialize(results); SlimList_Destroy(results); SlimList_Destroy(instructions); return response; }
SlimList * SlimList_GetListAt(SlimList* self, int index) { Node * node = SlimList_GetNodeAt(self, index); if (node) { if (node->list == 0) node->list = SlimList_Deserialize(node->string); } return node->list; }
void replaceSymbols(SymbolTable* symbolTable, SlimList* list) { int i; for (i=0; i<SlimList_GetLength(list); i++) { char* string = SlimList_GetStringAt(list, i); SlimList* embeddedList = SlimList_Deserialize(string); if (embeddedList == NULL) { char* replacedString = replaceString(symbolTable, string); SlimList_ReplaceAt(list, i, replacedString); free(replacedString); } else { replaceSymbols(symbolTable, embeddedList); char* serializedReplacedList = SlimList_Serialize(embeddedList); SlimList_ReplaceAt(list, i, serializedReplacedList); SlimList_Destroy(embeddedList); free(serializedReplacedList); } } }