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

📄 types.c

📁 hmmer源程序
💻 C
字号:
/***************************************************************** * HMMER - Biological sequence analysis with profile HMMs * Copyright (C) 1992-1999 Washington University School of Medicine * All Rights Reserved *  *     This source code is distributed under the terms of the *     GNU General Public License. See the files COPYING and LICENSE *     for details. *****************************************************************//* file: types.c *  * Finicky type checkers for strings. Return 1 (TRUE) if ok, 0 elsewise. * Also, finicky type converters (sre_ntoh32() and friends) * * CVS $Id: types.c,v 1.5 2001/01/08 22:58:12 eddy Exp $ */#include <string.h>#include <ctype.h>#include "squid.h"/* Function: IsInt() *  * Returns TRUE if s points to something that atoi() will parse * completely and convert to an integer. */intIsInt(char *s){  int hex = 0;  if (s == NULL) {squid_errno = SQERR_PARAMETER; return 0; }				/* skip whitespace */  while (isspace((int) (*s))) s++;      				/* skip leading sign */  if (*s == '-' || *s == '+') s++;				/* skip leading conversion signals */  if ((strncmp(s, "0x", 2) == 0 && (int) strlen(s) > 2) ||      (strncmp(s, "0X", 2) == 0 && (int) strlen(s) > 2))    {      s += 2;      hex = 1;    }  else if (*s == '0' && (int) strlen(s) > 1)    s++;				/* examine remainder for garbage chars */  if (!hex)    while (*s != '\0')      {	if (!isdigit((int) (*s))) return 0;	s++;      }  else    while (*s != '\0')      {	if (!isxdigit((int) (*s))) return 0;	s++;      }  return 1;}/* Function: IsReal() *  * Purpose:  Returns TRUE if s is a string representation *           of a valid floating point number. */intIsReal(char *s){  int gotdecimal = 0;  int gotexp     = 0;  int gotreal    = 0;  if (s == NULL) return 0;  while (isspace((int) (*s))) s++;         /* skip leading whitespace */  if (*s == '-' || *s == '+') s++; /* skip leading sign */  /* Examine remainder for garbage. Allowed one '.' and   * one 'e' or 'E'; if both '.' and e/E occur, '.'   * must be first.   */  while (*s != '\0')    {      if (isdigit((int) (*s))) 	gotreal++;      else if (*s == '.')	{	  if (gotdecimal) return 0; /* can't have two */	  if (gotexp) return 0;	/* e/E preceded . */	  else gotdecimal++;	}      else if (*s == 'e' || *s == 'E')	{	  if (gotexp) return 0;	/* can't have two */	  else gotexp++;	}      else if (isspace((int) (*s)))	break;      s++;    }  while (isspace((int) (*s))) s++;         /* skip trailing whitespace */  if (*s == '\0' && gotreal) return 1;  else return 0;}/* Function: Byteswap() *  * Purpose:  Swap between big-endian and little-endian. *           For example: *               int foo = 0x12345678; *               byteswap((char *) &foo, sizeof(int)); *               printf("%x\n", foo) *           gives 78563412. *            *           I don't fully understand byte-swapping issues. *           However, I have tested this on chars through floats, *           on various machines: *               SGI IRIX 4.0.5, SunOS 4.1.3, DEC Alpha OSF/1, Alliant * * Date: Sun Feb 12 10:26:22 1995               */voidByteswap(char *swap, int nbytes){  int  x;  char byte;    for (x = 0; x < nbytes / 2; x++)    {      byte = swap[nbytes - x - 1];      swap[nbytes - x - 1] = swap[x];      swap[x] = byte;    }}/* Functions: sre_ntoh16(), etc. * Date:      SRE, Sun Dec 31 11:26:53 2000 [St. Louis] * * Purpose:   Provide functionality of ntohs(), etc; extended *            to 64-bit unsigned ints, and explicitly provided *            in case a machine doesn't have the ntohs() *            family.  *             *            If we're using the host functions,  *            USE_HOST_BYTESWAP_FUNCTIONS was set to 1 in *            squidconf.h, and we #define'd sre_hton16(x)=hton(x), etc. *            in squid.h. In doing this, we assumed that the *            host functions work on 16- and 32-bit unsigned quantities. *            If for some reason that's not true, set  *            USE_HOST_BYTESWAP_FUNCTIONS to 0. */#ifndef USE_HOST_BYTESWAP_FUNCTIONSsqd_uint16sre_ntoh16(sqd_uint16 netshort){#ifdef WORDS_BIGENDIAN  return netshort;#else  Byteswap((char *) &netshort, 2);  return netshort;#endif}sqd_uint32sre_ntoh32(sqd_uint32 netlong){#ifdef WORDS_BIGENDIAN  return netlong;#else  Byteswap((char *) &netlong, 4);  return netlong;#endif}sqd_uint16sre_hton16(sqd_uint16 hostshort){#ifdef WORDS_BIGENDIAN  return hostshort;#else  Byteswap((char *) &hostshort, 2);  return hostshort;#endif}sqd_uint32sre_hton32(sqd_uint32 hostlong){#ifdef WORDS_BIGENDIAN  return hostlong;#else  Byteswap((char *) &hostlong, 4);  return hostlong;#endif}#endif /*USE_HOST_BYTESWAP_FUNCTIONS*/sqd_uint64sre_ntoh64(sqd_uint64 net_int64){#ifdef WORDS_BIGENDIAN  return net_int64;#else  Byteswap((char *) &net_int64, 8);  return net_int64;#endif}sqd_uint64sre_hton64(sqd_uint64 host_int64){#ifdef WORDS_BIGENDIAN  return host_int64;#else  Byteswap((char *) &host_int64, 8);  return host_int64;#endif}

⌨️ 快捷键说明

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