-void CYMessage::Output(CYOutput &out, bool replace) const {
- if (next_ != NULL)
- next_->Output(out, replace);
- out << "$cyn=new Selector(\"";
- for (CYMessageParameter *parameter(parameters_); parameter != NULL; parameter = parameter->next_)
- if (parameter->tag_ != NULL) {
- out << *parameter->tag_;
- if (parameter->name_ != NULL)
- out << ':';
- }
- out << "\");";
- out << "$cyt=$cyn.type($cy" << (instance_ ? 's' : 'p') << ')' << ';';
- out << (replace ? "class_replaceMethod" : "class_addMethod") << '(' << (instance_ ? "$cyc" : "$cym") << ',' << "$cyn" << ',';
- out << "new Functor(function(self,_cmd";
- for (CYMessageParameter *parameter(parameters_); parameter != NULL; parameter = parameter->next_)
- if (parameter->name_ != NULL)
- out << ',' << *parameter->name_;
- out << "){return function(){";
- if (statements_ != NULL)
- statements_->Multiple(out);
- out << "}.call(self);},$cyt),$cyt);";
-}