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; }
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); } } }
void SlimList_AddList(SlimList* self, SlimList* element) { char * embedded = SlimList_Serialize(element); SlimList_AddString(self, embedded); free(embedded); }