IoMessage *IoMessage_newFromText_labelSymbol_(void *state, const char *text, IoSymbol *label) { IoLexer *lexer; IoMessage *msg; IoState_pushCollectorPause((IoState *)state); // needed? lexer = IoLexer_new(); IoLexer_string_(lexer, text); IoLexer_lex(lexer); // This also applies line numbers. msg = IoMessage_newParse(state, lexer); IoMessage_opShuffle_(msg); IoMessage_label_(msg, label); // DLF: Check for pending breakpoint on this message. iovm_set_pending_breakpoints(msg); IoLexer_free(lexer); IoState_popCollectorPause((IoState *)state); return msg; }
IO_METHOD(IoMessage, setLabel) { /*doc Message setLabel(aString) Sets the label of the message and its children. Returns self. */ IoMessage_label_(self, IoMessage_locals_symbolArgAt_(m , locals, 0)); return self; }
void IoMessage_label_(IoMessage *self, IoSymbol *ioSymbol) /* sets label for children too */ { IoMessage_rawSetLabel_(self, ioSymbol); List_do_with_(DATA(self)->args, (ListDoWithCallback *)IoMessage_label_, ioSymbol); if (DATA(self)->next) { IoMessage_label_(DATA(self)->next, ioSymbol); } }
IoMessage *IoMessage_newFromText_labelSymbol_(void *state, const char *text, IoSymbol *label) { IoLexer *lexer = IoLexer_new(); IoMessage *msg; IoLexer_string_(lexer, text); IoLexer_lex(lexer); msg = IoMessage_newParse(state, lexer); IoMessage_opShuffle_(msg); IoMessage_label_(msg, label); IoLexer_free(lexer); return msg; }