//========================================================================== // присваивает неименнованным объектам имена //-------------------------------------------------------------------------- // unit - [in, out] модуль //========================================================================== void AssignNames(Module *module) { AssignNames(module->objects); // процедуры for(unsigned int i = 0; i < module->objects.objList.size(); ++i) { Procedure *proc = dynamic_cast<Procedure*>(module->objects.objList[i]); if(proc) AssignNames(proc); } }
//========================================================================== // присваивает неименнованным объектам имена //-------------------------------------------------------------------------- // unit - [in, out] юнит //========================================================================== void AssignNames(Procedure *proc) { AssignNames(proc->objects); // вложенные процедуры for(unsigned int i = 0; i < proc->objects.objList.size(); ++i) { Procedure *p = dynamic_cast<Procedure*>(proc->objects.objList[i]); if(p) AssignNames(p); } // специализированные процедуры if(proc->WhatIsIt() == ItIsGenericProc) { GenericProc *gProc = (GenericProc*)proc; for(unsigned int i = 0; i < (unsigned int)gProc->specs.size(); ++i) AssignNames(gProc->specs[i]->objects); } }
//_______________________________________________________________________________________________ // // Initialize plugin with all needed for AliEn // Bool_t SetupForAlien() { if (!plugin) { ::Error("SetupPlugin::SetupForAlien()", "Initialize plugin first"); return kFALSE; } // create names if (!AssignNames()) { ::Error("SetupPlugin::SetupForAlien()", "Failed name initializations"); return kFALSE; } // API version plugin->SetAPIVersion(apiVersion.Data()); // merging detauls plugin->SetMergeViaJDL(); plugin->SetMaxMergeFiles(maxMergeFiles); plugin->SetMaxMergeStages(maxMergeStages); // output paths plugin->SetGridWorkingDir(workDir.Data()); plugin->SetGridOutputDir(outDir.Data()); plugin->SetDefaultOutputs(kTRUE); // excutable plugin->SetExecutableCommand("aliroot -q -b"); plugin->SetExecutableArgs(">& std.log"); plugin->SetExecutable(fileSH.Data()); // automatically created files plugin->SetAnalysisMacro(fileC.Data()); plugin->SetJDLName(fileJDL.Data()); // JDL parameters plugin->SetSplitMaxInputFileNumber(split); plugin->SetMaxInitFailed(maxInitFailed); plugin->SetMasterResubmitThreshold(resubmitThr); plugin->SetTTL(TTL); plugin->SetPrice(price); plugin->SetInputFormat(inputFormat.Data()); plugin->SetSplitMode(splitMode.Data()); if (jobTag.Length() > 0) plugin->SetJobTag(jobTag.Data()); // input definition if (alienInputRuns) { plugin->SetOutputToRunNo(kTRUE); plugin->SetNtestFiles(nTestFiles); plugin->SetNrunsPerMaster(nRunsPerMaster); plugin->SetRunPrefix(runPrefix.Data()); plugin->SetGridDataDir(runPath.Data()); plugin->SetDataPattern(runPattern.Data()); plugin->AddRunList(runList.Data()); } else { TObjArray *list = xmlList.Tokenize(" "); TObjArrayIter next(list); TObjString *os = 0x0; while ( (os = (TObjString*)next()) ) { plugin->AddDataFile(os->GetString().Data()); } plugin->SetOutputToRunNo(kFALSE); } return kTRUE; }