static void readDigit (void) { int r; r = rCh (); if (r == '0') { switch (pCh ()) { case 'x': case 'X': case 'o': case 'O': rCh (); break; default: break; } } while ((r = pCh ()) != -1 && ((r >= '0' && r <= '9') || (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z'))) rCh (); }
bool CPlotData::GetLocusRange( const wxString &sLocusName, int *px1, int *px2, int *py1, int *py2, int nType) { CPlotLocus *ppl(NULL); CPlotChannel *pCh(NULL); unsigned int nChannel; bool bRtn = false; ppl = FindLocus(sLocusName); if(ppl != NULL) { nChannel = ppl->GetChannel(); pCh = FindChannel(nChannel); bRtn = ( ( pCh != NULL ) && ( !!(nType & TYPE_ALL) ) ); } if(bRtn) { // this could be in the for loop but is easier to read here vector<int> *ppvn[4]; vector<int> *pvn; int y; int ndxMax = 0; int x1; int x2; int nSize; #if BASELINE_START int ndxBaseline = -1; #endif if(nType & TYPE_ANALYZED) { ppvn[ndxMax++] = &pCh->m_vnAnalyzedPoints; } if(nType & TYPE_RAW) { ppvn[ndxMax++] = &pCh->m_vnRawPoints; } if(nType & TYPE_LADDER) { ppvn[ndxMax++] = &pCh->m_vnLadderPoints; } if(nType & TYPE_BASELINE) { #if BASELINE_START ndxBaseline = ndxMax; #endif ppvn[ndxMax++] = &pCh->m_vnBaselinePoints; } *px2 = ppl->GetEndExtended(); *px1 = ppl->GetStartExtended(); *py1 = 0; // if all numbers are > 0, use 0 for min *py2 = 1; // make it > *py1 for(int j = 0; j < ndxMax; ++j) { pvn = ppvn[j]; x1 = *px1; x2 = *px2; #if BASELINE_START unsigned int nBaselineStart = pCh->GetBaselineStart(); if(j == ndxBaseline && nBaselineStart != 0) { x1 -= nBaselineStart; x2 -= nBaselineStart; } #endif nSize = (int) pvn->size(); if(x2 >= nSize) { x2 = nSize; x2--; } if(x1 < 0) { x1 = 0; } for(int n = x1; n <= x2; ++n) { y = pvn->at((size_t)n); if(y < *py1) { *py1 = y; } if(y > *py2) { *py2 = y; } } } } return bRtn; }
static int lexit (void) { int r; redo: do { zeroCh (); if ((r = rCh ()) == -1) return -1; } while (r <= 0x20 && r != '\n'); /* Ignore comment. Either introduced by semicolon, or by hash sign. */ if (r == ';' || r == '#') { while (1) { if ((r = pCh ()) == -1) return 0; if (r == '\n') break; rCh (); } goto redo; } switch (r) { case '=': if (pCh () == r) { rCh (); return TK_EQUALEQUAL; } return r; case '@': case ',': case '.': case '\n': return r; case '"': case TK_OPENCURLY: { int endr = (r == '"') ? '"' : TK_CLOSECURLY; zeroCh (); while ((r = pCh ()) != -1 && r != endr) { rCh (); if (r == '\\') { if (rCh () == -1) { delCh (); r = -1; break; } } } if (r == endr) { rCh (); delCh (); return endr == '"' ? TK_STRING : TK_SOURCEFILENAME; } } case TK_CLOSECURLY: rCh (); delCh (); return r; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': bCh (r); readDigit (); return TK_DIGIT; default: if (r == '_' || r == '?' || (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z') || (r == '.') || (r == '/')); else return TK_UNKNOWN; while ((r = pCh ()) != -1) { if (r <= 0x20) break; rCh (); } if (exports_seen == 0) { if (!strcmp (t_buf, "LIBRARY")) return TK_LIBRARY; if (!strcmp (t_buf, "EXPORTS")) return TK_EXPORTS; } else { if (!strcmp (t_buf, "DATA")) return TK_DATA; } return TK_NAME; } }