SEQUENCE_INTERRUPTION_LIST GrfExecuteString::executeInternal(DtaScriptVariable& visibility) {
    DtaScriptVariable* pThis = visibility.getVariable(*_pThis);
    std::string sCommand = _pCommand->getValue(visibility);
    ScpStream theCommand(sCommand);
    DtaScript script(getParent());
    script.parseStream(theCommand);
    return script.execute(*pThis);
}
示例#2
0
文件: THyPhy.cpp 项目: ArtPoon/hyphy
void* _THyPhy::AskFor (const char* resultID)
{
    if (resultID && askFID >= 0) {
        _String theCommand (128L,true);
        theCommand << "return ";
        theCommand <<  _tHYPHYAskFor;
        theCommand << "(\"";
        theCommand.EscapeAndAppend (resultID);
        theCommand << "\");";
        theCommand.Finalize();
        _ExecutionList      compiledCode  (theCommand);
        compiledCode.ExecuteAndClean (0x7ffffff);
        _PMathObj retResult = compiledCode.GetResult ();
        if (retResult && retResult->ObjectClass() == STRING) {
            _FString * checkHandled = (_FString*)retResult;
            if (checkHandled->theString->Equal (&_tHYPHYNotHandled)) {
                return nil;
            }
        }
        return retResult->makeDynamic();
    }
    return nil;
}