Exec_stat MCMarking::exec(MCExecPoint &ep) { if (card != NULL) { MCObject *optr; uint4 parid; if (card->getobj(ep, optr, parid, True) != ES_NORMAL || optr->gettype() != CT_CARD) { MCeerror->add (EE_MARK_BADCARD, line, pos); return ES_ERROR; } ep.setboolean(mark); return optr->setprop(0, P_MARKED, ep, False); } if (tofind == NULL) MCdefaultstackptr->mark(ep, where, mark); else { if (tofind->eval(ep) != ES_NORMAL) { MCeerror->add (EE_MARK_BADSTRING, line, pos); return ES_ERROR; } MCdefaultstackptr->markfind(ep, mode, ep.getsvalue(), field, mark); } return ES_NORMAL; }
Exec_stat MCSort::exec(MCExecPoint &ep) { if (of == NULL && chunktype == CT_FIELD) { MCeerror->add (EE_SORT_NOTARGET, line, pos); return ES_ERROR; } MCObject *optr = NULL; uint4 parid; if (of != NULL) { MCerrorlock++; if (of->getobj(ep, optr, parid, False) != ES_NORMAL || optr->gettype() == CT_BUTTON) { MCerrorlock--; if (of->eval(ep) != ES_NORMAL) { MCeerror->add (EE_SORT_BADTARGET, line, pos); return ES_ERROR; } } else MCerrorlock--; if (optr != NULL && optr->gettype() > CT_GROUP && chunktype <= CT_GROUP) chunktype = CT_LINE; } else optr = MCdefaultstackptr; if (chunktype == CT_CARD || chunktype == CT_MARKED) { MCStack *sptr = (MCStack *)optr; if (optr == NULL || optr->gettype() != CT_STACK || sptr->sort(ep, direction, format, by, chunktype == CT_MARKED) != ES_NORMAL) { MCeerror->add (EE_SORT_CANTSORT, line, pos); return ES_ERROR; } } else { if (optr == NULL || optr->gettype() == CT_BUTTON) { if (sort_container(ep, chunktype, direction, format, by) != ES_NORMAL) { MCeerror->add(EE_SORT_CANTSORT, line, pos); return ES_ERROR; } of -> set(ep, PT_INTO); } else { MCField *fptr = (MCField *)optr; if (optr->gettype() != CT_FIELD || !of->nochunks() || fptr->sort(ep, parid, chunktype, direction, format, by) != ES_NORMAL) { MCeerror->add (EE_SORT_CANTSORT, line, pos); return ES_ERROR; } } } return ES_NORMAL; }