| 102 | static const cString GetDescription() { return "Arguments: <string fname> [int cell_id=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0] [string trace_filename]"; } |
| 103 | |
| 104 | void Process(cAvidaContext& ctx) |
| 105 | { |
| 106 | if (m_filename.GetSize() == 0) { |
| 107 | cerr << "error: no organism file specified" << endl; |
| 108 | m_world->GetDriver().Abort(AbortCondition::IO_ERROR); |
| 109 | } |
| 110 | GenomePtr genome; |
| 111 | cUserFeedback feedback; |
| 112 | genome = Util::LoadGenomeDetailFile(m_filename, m_world->GetWorkingDir(), m_world->GetHardwareManager(), feedback); |
| 113 | for (int i = 0; i < feedback.GetNumMessages(); i++) { |
| 114 | switch (feedback.GetMessageType(i)) { |
| 115 | case cUserFeedback::UF_ERROR: |
| 116 | cerr << "error: "; |
| 117 | cerr << feedback.GetMessage(i) << endl; |
| 118 | m_world->GetDriver().Abort(AbortCondition::GENERIC_ERROR); |
| 119 | break; |
| 120 | case cUserFeedback::UF_WARNING: |
| 121 | cerr << "warning: "; |
| 122 | cerr << feedback.GetMessage(i) << endl; |
| 123 | break; |
| 124 | default: break; |
| 125 | }; |
| 126 | } |
| 127 | if (!genome) return; |
| 128 | m_world->GetPopulation().Inject(*genome, Systematics::Source(Systematics::DIVISION, "", true), ctx, m_cell_id, m_merit, m_lineage_label, m_neutral_metric, false); |
| 129 | |
| 130 | if (m_trace_filename.GetSize()) { |
| 131 | HardwareTracerPtr tracer(new cHardwareStatusPrinter(m_world->GetNewWorld(), (const char*)m_trace_filename)); |
| 132 | m_world->GetPopulation().GetCell(m_cell_id).GetOrganism()->GetHardware().SetTrace(tracer); |
| 133 | } |
| 134 | } |
| 135 | }; |
| 136 | |
| 137 |
nothing calls this directly
no test coverage detected