void CECTag::DebugPrint(int level, bool print_empty) const { if (m_dataLen || print_empty) { wxString space; for (int i = level; i--;) space += wxT(" "); wxString s1 = CFormat(wxT("%s%s %d = ")) % space % GetDebugNameECTagNames(m_tagName) % m_dataLen; wxString s2; switch (m_tagName) { case EC_TAG_DETAIL_LEVEL: s2 = GetDebugNameEC_DETAIL_LEVEL(GetInt()); break; case EC_TAG_SEARCH_TYPE: s2 = GetDebugNameEC_SEARCH_TYPE(GetInt()); break; case EC_TAG_STAT_VALUE_TYPE: s2 = GetDebugNameEC_STATTREE_NODE_VALUE_TYPE(GetInt()); break; default: switch (m_dataType) { case EC_TAGTYPE_UINT8: case EC_TAGTYPE_UINT16: case EC_TAGTYPE_UINT32: case EC_TAGTYPE_UINT64: s2 = CFormat(wxT("%d")) % GetInt(); break; case EC_TAGTYPE_STRING: s2 = GetStringData(); break; case EC_TAGTYPE_DOUBLE: s2 = CFormat(wxT("%.1f")) % GetDoubleData(); break; case EC_TAGTYPE_HASH16: s2 = GetMD4Data().Encode(); break; case EC_TAGTYPE_CUSTOM: if (m_dataLen == 0) { s2 = wxT("empty"); } else { // Make a hex dump (limited to maxOutput) const uint32 maxOutput = 50; for (uint32 i = 0; i < m_dataLen; i++) { if (i == maxOutput) { s2 += wxT("..."); break; } s2 += CFormat(wxT("%02X ")) % (unsigned char) m_tagData[i]; } } break; default: s2 = GetDebugNameECTagTypes(m_dataType); } } DoECLogLine(s1 + s2); } for (TagList::const_iterator it = m_tagList.begin(); it != m_tagList.end(); ++it) { it->DebugPrint(level + 1, true); } }
//Fileinput int Gene::Interpreter(string DataName, string& DataItem, bool Input) { int DataID = TranslateFileHeader(DataName,GENE); if (DataID == -1) { AddData(DataName.data(),DataItem.data(),STRING); //FErrorFile() << "UNRECOGNIZED REFERENCE: " << GetData("FILENAME",STRING) << " data reference: " << DataName << " not recognized." << endl; //FlushErrorFile(); return FAIL; } switch (DataID) { case GENE_DBLINK: { if (Input) { AddData(DataName.data(),DataItem.data(),DATABASE_LINK); } else { DataItem = GetAllDataString(DataName.data(),DATABASE_LINK); } break; } case GENE_COORD: { if (Input) { vector<string>* Strings = StringToStrings(DataItem,"."); if (Strings->size() >= 2) { AddData("START COORD",atof((*Strings)[0].data())); AddData("END COORD",atof((*Strings)[1].data())); } delete Strings; } else { double Start = GetDoubleData("START COORD"); double End = GetDoubleData("END COORD"); if (Start != FLAG && End != FLAG) { DataItem.assign(dtoa(Start)); DataItem.append(".."); DataItem.append(dtoa(End)); } } break; } case GENE_REACTION: { if (Input) { //Do nothing... reactions will add themselves to the genes } else { for (int i=0; i < int(ReactionList.size()); i++) { DataItem.append(ReactionList[i]->GetData("DATABASE",STRING)); if (i < int(ReactionList.size()-1)) { DataItem.append("\t"); } } } break; } case GENE_PARALOG: { if (Input) { vector<string>* Strings = StringToStrings(DataItem,"\t "); for (int i=0; i < int(Strings->size()); i += 2) { if (AddData("PARALOGS",(*Strings)[i].data(),STRING)) {; AddData("PARA SIMS",atof((*Strings)[i+1].data()),false); } } delete Strings; } else { vector<string> AllParalogs = GetAllData("PARALOGS",STRING); vector<double> AllSims = GetAllData("PARA SIMS"); for (int i=0; i < int(AllParalogs.size()); i++) { DataItem.append(AllParalogs[i]); DataItem.append(" "); DataItem.append(dtoa(AllSims[i])); if (i < int(AllParalogs.size()-1)) { DataItem.append("\t"); } } } break; } case GENE_ORTHOLOG: { if (Input) { vector<string>* Strings = StringToStrings(DataItem,"\t "); for (int i=0; i < int(Strings->size()); i += 2) { if (AddData("ORTHOLOGS",(*Strings)[i].data(),STRING)) {; AddData("ORTHO SIMS",atof((*Strings)[i+1].data()),false); } } delete Strings; } else { vector<string> AllParalogs = GetAllData("ORTHOLOGS",STRING); vector<double> AllSims = GetAllData("ORTHO SIMS"); for (int i=0; i < int(AllParalogs.size()); i++) { DataItem.append(AllParalogs[i]); DataItem.append(" "); DataItem.append(dtoa(AllSims[i])); if (i < int(AllParalogs.size()-1)) { DataItem.append("\t"); } } } break; } case GENE_DOUBLE: { if (Input) { AddData(DataName.data(),DataItem.data(),DOUBLE); } else { DataItem = GetAllDataString(DataName.data(),DOUBLE); } break; } case GENE_STRING: { if (Input) { AddData(DataName.data(),DataItem.data(),STRING); } else { DataItem = GetAllDataString(DataName.data(),STRING); } break; } case GENE_QUERY: { if (Input) { if (GetParameter("save query data on input").compare("1") == 0) { AddData(DataName.data(),DataItem.data(),STRING); } } else { DataItem = Query(DataName); } break; } case GENE_LOAD: { if (Input) { LoadGene(DataItem); } else { DataItem = GetData("DATABASE",STRING); } break; } default: { //FErrorFile() << "UNRECOGNIZED DATA ID: Data ID: " << DataID << " input for data reference: " << DataName << " not recognized. Check gene code."; //FlushErrorFile(); return FAIL; } } return SUCCESS; }