Example #1
0
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 ();
}
Example #2
0
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;
}
Example #3
0
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;
    }
}