void Lingo::factoryCall(Common::String &name, int nargs) { Common::String s("factoryCall: "); s += name; convertVOIDtoString(0, nargs); printStubWithArglist(s.c_str(), nargs); Datum method = _stack[_stack.size() - nargs + 0]; drop(nargs - 1); s = name + "-" + *method.u.s; debugC(3, kDebugLingoExec, "Stack size before call: %d, nargs: %d", _stack.size(), nargs); call(s, nargs); debugC(3, kDebugLingoExec, "Stack size after call: %d", _stack.size()); if (!method.u.s->compareToIgnoreCase("mNew")) { Datum d; d.type = OBJECT; d.u.s = new Common::String(name); g_lingo->push(d); } }
void Lingo::factoryCall(Common::String &name, int nargs) { Common::String s("factoryCall: "); s += name; convertVOIDtoString(0, nargs); printStubWithArglist(s.c_str(), nargs); Datum method = _stack[_stack.size() - nargs + 0]; s = name + "-" + *method.u.s; call(s, nargs); if (method.u.s->compareToIgnoreCase("mNew")) { warning("Got mNew method"); Datum d; d.type = OBJECT; d.u.s = new Common::String(name); g_lingo->push(d); } }