⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iotop.c

📁 GESPI 2.0动态系统模拟工具  
💻 C
📖 第 1 页 / 共 2 页
字号:
     _lseek( ch1, (LONG) 0, 2 );
     _lwrite( ch1, (LPSTR) Buff, (WORD) lstrlen( Buff ) );
     ch1 = _lclose( ch1 );
    }
    if( ch1 == -1 )
    {
     GlobalUnlock( hBuff );
     GlobalFree( hBuff );
     SetCursor(hSaveCursor);
     return IDS_ERR_SAVE;
    }
    kfl[i] = 1;
   }
 }
 GlobalUnlock( hBuff );
 GlobalFree( hBuff );
 SetCursor(hSaveCursor);
 return 0;
}

int BufToTop( char *Buff, char **endoftop )
{
 int i,j;
 int daux;
 unsigned char uaux;
 char *paux;
 char saux[NAME_L];

 /* reset the version number to zero							*/
 ver_no = 0;
 /* copy the first line											*/
 paux = strchr( Buff, '\n' );
 if( paux == NULL )
   return IDS_ERR_BAD_TOPNAM;
 /* take care of CR if one existed before LF					*/
 if( *(paux-1)=='\r' ) *(paux-1) = '\0';
 *paux = '\0';
 if( strlen( Buff ) > 255 ) Buff[255] = '\0';
 lstrcpy( topname, (LPSTR) Buff );
 Buff = paux+1;
 /* is this line a version number ?								*/
 sscanf( topname, "version %f", &ver_no );
 if( ver_no != 0 )
 {
  /* YES! so let's read another line, with the title			*/
  paux = strchr( Buff, '\n' );
  if( paux == NULL )
   return IDS_ERR_BAD_TOPNAM;
  if( *(paux-1)=='\r' ) *(paux-1) = '\0';
  *paux = '\0';
  if( strlen( Buff ) > 255 ) Buff[255] = '\0';
  lstrcpy( topname, (LPSTR) Buff );
  Buff = paux+1;
 }

  /* read nstep from the buffer									*/
  if ( ( sscanf( Buff, " %d", &daux ) < 1) ||
       ( daux < 1 ) || ( daux > MAX_STEP ) )
   return IDS_ERR_BAD_NSTEP;
  nsteps = daux;

  Buff = strchr( Buff, ' ' );
  /* read totmet from the buffer								*/
  if( (Buff == NULL ) || ( sscanf( ++Buff, " %d", &daux ) < 1) ||
      ( daux < 1 )   || ( daux > MAX_MET ) )
   return IDS_ERR_BAD_TOTMET;
  totmet = daux;

  /* read stoiu from the buffer										*/
  for(i=0;i<totmet;i++)
   for(j=0;j<nsteps;j++)
   {
    if(j==0)
    {
     Buff = strchr( Buff, '\n' );
     if( Buff != NULL )
     {
      Buff++;
      for( ;*Buff == ' '; Buff++);
     }
    }
    else
    {
     Buff = strchr( Buff, ' ' );
     if( Buff != NULL ) for( ;*Buff == ' '; Buff++);
    }
    if ( (Buff == NULL) || (sscanf( Buff, "%d", &daux ) < 1) )
     return IDS_ERR_BAD_STOI;
    stoiu[i*MAX_MET + j] = daux;
   }

  Buff = strchr( Buff, '\n' );
  if( Buff == NULL )
   return IDS_ERR_BAD_KINTYPE;
  Buff++;
  /* read kinetu, revers and metname from the buffer				*/
  for( i=0; i<nsteps; i++ )
  {
   for( ;*Buff == ' '; Buff++);
   if ( (Buff == NULL) || (sscanf( Buff, "%d", &daux ) < 1)
        || (daux < -1) )
    return IDS_ERR_BAD_KINTYPE;
   kinetu[i] = daux;

   Buff = strchr( Buff, ' ' );
   if( Buff != NULL ) for( ;*Buff == ' '; Buff++);
   if ( (Buff == NULL) || (sscanf( Buff, "%d", &uaux ) < 1)
        || (uaux < 0) || (uaux > 1) )
    return IDS_ERR_BAD_KINTYPE;
   revers[i] = uaux;

   Buff = strchr( Buff, ' ' );
   if( Buff != NULL ) for( ;*Buff == ' '; Buff++);
   paux = strchr( Buff, '\n' );
   if( paux == NULL )
    return IDS_ERR_BAD_KINTYPE;
   /* take care of CR if one existed before LF						*/
   if( *(paux-1)=='\r' ) *(paux-1) = '\0';
   *paux = '\0';
   if( strlen( Buff ) >= NAME_L ) Buff[NAME_L-1] = '\0';
   lstrcpy( (LPSTR) stepname[i], (LPSTR) Buff );
   Buff = paux+1;
  }

  *(--Buff) = '\n';
  /* read rstr from the buffer										*/
  for(i=0;i<nsteps;i++)
   for(j=0;j<MAX_MOL;j++)
   {
    if(j==0)
    {
     Buff = strchr( Buff, '\n' );
     if( Buff != NULL )
     {
      Buff++;
      for( ;*Buff == ' '; Buff++);
     }
    }
    else
    {
     Buff = strchr( Buff, ' ' );
     if( Buff != NULL ) for( ;*Buff == ' '; Buff++);
    }
    if ( (Buff == NULL) || (sscanf( Buff,"%d", &daux ) < 1) )
     return IDS_ERR_BAD_LOOP;
    (*rstr)[i][j] = (signed char) daux;
   }

  /* read loop from the buffer										*/
  for(i=0;i<nsteps;i++)
   for(j=0;j<totmet;j++)
   {
    if(j==0)
    {
     Buff = strchr( Buff, '\n' );
     if( Buff != NULL )
     {
      Buff++;
      for( ;*Buff == ' '; Buff++);
     }
    }
    else
    {
     Buff = strchr( Buff, ' ' );
     if( Buff != NULL ) for( ;*Buff == ' '; Buff++);
    }
    if ( (Buff == NULL) || (sscanf( Buff,"%u", &uaux ) < 1)
          || (uaux < (unsigned) 0) )
     return IDS_ERR_BAD_LOOP;
    (*loop)[i][j] = uaux;
   }

  /* read metabolite status and names from the buffer				*/
  for(i=0;i<totmet;i++)
  {
   Buff = strchr( Buff, '\n' );
   if ( (Buff == NULL) || (sscanf( ++Buff, "%d %21s", &daux, &saux ) < 2) )
    return IDS_ERR_BAD_INTMET;
   intmet[i] = daux;
   lstrcpy( metname[i], (LPSTR) saux );
  }

  /* point endofbuf to the end of the topology section				*/
  if( endoftop != NULL )
   *endoftop = Buff;

  return 0;
}

/*
  add a new function read from a .TOP file
  and renumber references to this type in the .TOP
*/

int addtr( int e )
{
 int i, j, k, nRc;

 j = nudf;
 k = kinetu[e];
 eqefl = 0;
 if( (nRc = new_tree( j )) != 0 ) return nRc;
 if( (nRc = new_rateq( j )) != 0 ) return nRc;
 for( i=e; i<nsteps; i++ )
  if( (kinetu[i]==k) && (kfl[i]) )
  {
   kinetu[i] = MAX_TYP+j;
   kfl[i] = 0;
  }
 notsaved = 1;
 return 0;
}


/*
	read topology from file
*/

int ReadTop( LPSTR FName )
{
 int i, j, k, fl, ty, nRc;
 HANDLE hBuff;
 HCURSOR hSaveCursor;
 unsigned int bufsize;
 char *Buff;
 int ch1;
 OFSTRUCT OfStruct;
 struct stat fst;

 /* display the wait cursor											*/
 hSaveCursor = SetCursor(hHourGlass);

 /* open the file													*/
 ch1 = OpenFile( FName, &OfStruct, OF_READ );
 if( ch1 != -1 )
 {
  /* get the file statistics										*/
  fstat( ch1, &fst );

  /* set the buffer to the size of the file plus one				*/
  bufsize = (unsigned int) fst.st_size;

  /* allocate space for the read buffer and lock it					*/
  hBuff = LocalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, (WORD) (bufsize+1) );
  if( hBuff == NULL )
  {
   SetCursor(hSaveCursor);
   return IDS_ERR_NOEXEC;
  }
  Buff = (char *) LocalLock( hBuff );

  /*read the file and close it										*/
  if( read( ch1, Buff, bufsize ) == -1 )
  {
   LocalUnlock( hBuff );
   LocalFree( hBuff );
   SetCursor(hSaveCursor);
   return IDS_ERR_LOAD;
  }
  close( ch1 );

  fl = 0;

  if( ( nRc = BufToTop( Buff, &Buff ) ) != 0 )
  {
   /* release the memory allocated for the buffer					*/
   LocalUnlock( hBuff );
   LocalFree( hBuff );
   SetCursor(hSaveCursor);
   return nRc;
  }
  /* set flags 														*/
  for( i=0; i<nsteps; i++ ) kfl[i] = 1;
  /* check if model contains user-defined kinetic types				*/
  /* if there are any, check if they have to be read				*/
  for( i=0; i<nsteps; i++ )
   if( (kinetu[i] >= MAX_TYP) )
   {
    /* look for a form-feed											*/
    Buff = strchr( Buff, '\f' );
    Buff = BufToTree( ++Buff );
    for( j=0, ty=-1; j<nudf; j++ )
     if( lstrcmp( (LPSTR) tree[j].descr, (LPSTR) tr.descr ) == 0 )
     {
      ty = j;
      break;
     }
    if( ty == -1 )
    {
     if( (nRc=addtr( i )) !=0 ) return nRc;
     fl = 1;
    }
    else
     for( j=i,k=kinetu[i]; j<nsteps; j++ )
      if( (kinetu[j]==k) && (kfl[j]) )
      {
       kinetu[j] = MAX_TYP+ty;
       kfl[j] = 0;
      }
   }

   SetCursor(hSaveCursor);

#ifdef GWTOP
  if( fl )
  {
   LoadString( hInst, IDS_INF_NEWKIN, szString, sizeof(szString) );
   MessageBox( NULL, szString, (LPSTR) "GEPASI - Topology", MB_ICONINFORMATION );
  }
#endif

  return 0;
 }
 else
 {
  SetCursor(hSaveCursor);
  return IDS_ERR_LOAD;
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -