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

📄 target.c

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 C
📖 第 1 页 / 共 5 页
字号:
ffebadffetarget_ne_character1 (bool *res, ffetargetCharacter1 l,			 ffetargetCharacter1 r){  assert (l.length == r.length);  *res = (memcmp (l.text, r.text, l.length) != 0);  return FFEBAD;}#endif/* ffetarget_substr_character1 -- Perform SUBSTR op on three constants   Always append a null byte to the end, in case this is wanted in   a special case such as passing a string as a FORMAT or %REF.   Done to save a bit of hassle, nothing more, but it's a kludge anyway,   because it isn't a "feature" that is self-documenting.  Use the   string "FFETARGET-NULL-KLUDGE" to flag anyplace you use this feature   in the code.  */#if FFETARGET_okCHARACTER1ffebadffetarget_substr_character1 (ffetargetCharacter1 *res,			     ffetargetCharacter1 l,			     ffetargetCharacterSize first,			     ffetargetCharacterSize last, mallocPool pool,			     ffetargetCharacterSize *len){  if (last < first)    {      res->length = *len = 0;      res->text = NULL;    }  else    {      res->length = *len = last - first + 1;      res->text = malloc_new_kp (pool, "ffetargetCharacter1(SUBSTR)", *len + 1);      memcpy (res->text, l.text + first - 1, *len);      res->text[*len] = '\0';    }  return FFEBAD;}#endif/* ffetarget_cmp_hollerith -- Produce orderable comparison between two   constants   Compare lengths, if equal then use memcmp.  */intffetarget_cmp_hollerith (ffetargetHollerith l, ffetargetHollerith r){  if (l.length < r.length)    return -1;  if (l.length > r.length)    return 1;  return memcmp (l.text, r.text, l.length);}ffebadffetarget_convert_any_character1_ (char *res, size_t size,				   ffetargetCharacter1 l){  if (size <= (size_t) l.length)    {      char *p;      ffetargetCharacterSize i;      memcpy (res, l.text, size);      for (p = &l.text[0] + size, i = l.length - size;	   i > 0;	   ++p, --i)	if (*p != ' ')	  return FFEBAD_TRUNCATING_CHARACTER;    }  else    {      memcpy (res, l.text, size);      memset (res + l.length, ' ', size - l.length);    }  return FFEBAD;}ffebadffetarget_convert_any_hollerith_ (char *res, size_t size,				  ffetargetHollerith l){  if (size <= (size_t) l.length)    {      char *p;      ffetargetCharacterSize i;      memcpy (res, l.text, size);      for (p = &l.text[0] + size, i = l.length - size;	   i > 0;	   ++p, --i)	if (*p != ' ')	  return FFEBAD_TRUNCATING_HOLLERITH;    }  else    {      memcpy (res, l.text, size);      memset (res + l.length, ' ', size - l.length);    }  return FFEBAD;}ffebadffetarget_convert_any_typeless_ (char *res, size_t size,				 ffetargetTypeless l){  unsigned long long int l1;  unsigned long int l2;  unsigned int l3;  unsigned short int l4;  unsigned char l5;  size_t size_of;  char *p;  if (size >= sizeof (l1))    {      l1 = l;      p = (char *) &l1;      size_of = sizeof (l1);    }  else if (size >= sizeof (l2))    {      l2 = l;      p = (char *) &l2;      size_of = sizeof (l2);      l1 = l2;    }  else if (size >= sizeof (l3))    {      l3 = l;      p = (char *) &l3;      size_of = sizeof (l3);      l1 = l3;    }  else if (size >= sizeof (l4))    {      l4 = l;      p = (char *) &l4;      size_of = sizeof (l4);      l1 = l4;    }  else if (size >= sizeof (l5))    {      l5 = l;      p = (char *) &l5;      size_of = sizeof (l5);      l1 = l5;    }  else    {      assert ("stumped by conversion from typeless!" == NULL);      abort ();    }  if (size <= size_of)    {      int i = size_of - size;      memcpy (res, p + i, size);      for (; i > 0; ++p, --i)	if (*p != '\0')	  return FFEBAD_TRUNCATING_TYPELESS;    }  else    {      int i = size - size_of;      memset (res, 0, i);      memcpy (res + i, p, size_of);    }  if (l1 != l)    return FFEBAD_TRUNCATING_TYPELESS;  return FFEBAD;}/* Always append a null byte to the end, in case this is wanted in   a special case such as passing a string as a FORMAT or %REF.   Done to save a bit of hassle, nothing more, but it's a kludge anyway,   because it isn't a "feature" that is self-documenting.  Use the   string "FFETARGET-NULL-KLUDGE" to flag anyplace you use this feature   in the code.  */#if FFETARGET_okCHARACTER1ffebadffetarget_convert_character1_character1 (ffetargetCharacter1 *res,					 ffetargetCharacterSize size,					 ffetargetCharacter1 l,					 mallocPool pool){  res->length = size;  if (size == 0)    res->text = NULL;  else    {      res->text = malloc_new_kp (pool, "FFETARGET cvt char1", size + 1);      if (size <= l.length)	memcpy (res->text, l.text, size);      else	{	  memcpy (res->text, l.text, l.length);	  memset (res->text + l.length, ' ', size - l.length);	}      res->text[size] = '\0';    }  return FFEBAD;}#endif/* Always append a null byte to the end, in case this is wanted in   a special case such as passing a string as a FORMAT or %REF.   Done to save a bit of hassle, nothing more, but it's a kludge anyway,   because it isn't a "feature" that is self-documenting.  Use the   string "FFETARGET-NULL-KLUDGE" to flag anyplace you use this feature   in the code.  */#if FFETARGET_okCHARACTER1ffebadffetarget_convert_character1_hollerith (ffetargetCharacter1 *res,					ffetargetCharacterSize size,					ffetargetHollerith l, mallocPool pool){  res->length = size;  if (size == 0)    res->text = NULL;  else    {      res->text = malloc_new_kp (pool, "FFETARGET cvt char1", size + 1);      res->text[size] = '\0';      if (size <= l.length)	{	  char *p;	  ffetargetCharacterSize i;	  memcpy (res->text, l.text, size);	  for (p = &l.text[0] + size, i = l.length - size;	       i > 0;	       ++p, --i)	    if (*p != ' ')	      return FFEBAD_TRUNCATING_HOLLERITH;	}      else	{	  memcpy (res->text, l.text, l.length);	  memset (res->text + l.length, ' ', size - l.length);	}    }  return FFEBAD;}#endif/* ffetarget_convert_character1_integer4 -- Raw conversion.   Always append a null byte to the end, in case this is wanted in   a special case such as passing a string as a FORMAT or %REF.   Done to save a bit of hassle, nothing more, but it's a kludge anyway,   because it isn't a "feature" that is self-documenting.  Use the   string "FFETARGET-NULL-KLUDGE" to flag anyplace you use this feature   in the code.  */#if FFETARGET_okCHARACTER1ffebadffetarget_convert_character1_integer4 (ffetargetCharacter1 *res,				       ffetargetCharacterSize size,				       ffetargetInteger4 l, mallocPool pool){  long long int l1;  long int l2;  int l3;  short int l4;  char l5;  size_t size_of;  char *p;  if (((size_t) size) >= sizeof (l1))    {      l1 = l;      p = (char *) &l1;      size_of = sizeof (l1);    }  else if (((size_t) size) >= sizeof (l2))    {      l2 = l;      p = (char *) &l2;      size_of = sizeof (l2);      l1 = l2;    }  else if (((size_t) size) >= sizeof (l3))    {      l3 = l;      p = (char *) &l3;      size_of = sizeof (l3);      l1 = l3;    }  else if (((size_t) size) >= sizeof (l4))    {      l4 = l;      p = (char *) &l4;      size_of = sizeof (l4);      l1 = l4;    }  else if (((size_t) size) >= sizeof (l5))    {      l5 = l;      p = (char *) &l5;      size_of = sizeof (l5);      l1 = l5;    }  else    {      assert ("stumped by conversion from integer1!" == NULL);      abort ();    }  res->length = size;  if (size == 0)    res->text = NULL;  else    {      res->text = malloc_new_kp (pool, "FFETARGET cvt char1", size + 1);      res->text[size] = '\0';      if (((size_t) size) <= size_of)	{	  int i = size_of - size;	  memcpy (res->text, p + i, size);	  for (; i > 0; ++p, --i)	    if (*p != 0)	      return FFEBAD_TRUNCATING_NUMERIC;	}      else	{	  int i = size - size_of;	  memset (res->text, 0, i);	  memcpy (res->text + i, p, size_of);	}    }  if (l1 != l)    return FFEBAD_TRUNCATING_NUMERIC;  return FFEBAD;}#endif/* ffetarget_convert_character1_logical4 -- Raw conversion.   Always append a null byte to the end, in case this is wanted in   a special case such as passing a string as a FORMAT or %REF.   Done to save a bit of hassle, nothing more, but it's a kludge anyway,   because it isn't a "feature" that is self-documenting.  Use the   string "FFETARGET-NULL-KLUDGE" to flag anyplace you use this feature   in the code.  */#if FFETARGET_okCHARACTER1ffebadffetarget_convert_character1_logical4 (ffetargetCharacter1 *res,				       ffetargetCharacterSize size,				       ffetargetLogical4 l, mallocPool pool){  long long int l1;  long int l2;  int l3;  short int l4;  char l5;  size_t size_of;  char *p;  if (((size_t) size) >= sizeof (l1))    {      l1 = l;      p = (char *) &l1;      size_of = sizeof (l1);    }  else if (((size_t) size) >= sizeof (l2))    {      l2 = l;      p = (char *) &l2;      size_of = sizeof (l2);      l1 = l2;    }  else if (((size_t) size) >= sizeof (l3))    {      l3 = l;      p = (char *) &l3;      size_of = sizeof (l3);      l1 = l3;    }  else if (((size_t) size) >= sizeof (l4))    {      l4 = l;      p = (char *) &l4;      size_of = sizeof (l4);      l1 = l4;    }  else if (((size_t) size) >= sizeof (l5))    {      l5 = l;      p = (char *) &l5;      size_of = sizeof (l5);      l1 = l5;    }  else    {      assert ("stumped by conversion from logical1!" == NULL);      abort ();    }  res->length = size;  if (size == 0)    res->text = NULL;  else    {      res->text = malloc_new_kp (pool, "FFETARGET cvt char1", size + 1);      res->text[size] = '\0';      if (((size_t) size) <= size_of)	{	  int i = size_of - size;	  memcpy (res->text, p + i, size);	  for (; i > 0; ++p, --i)	    if (*p != 0)	      return FFEBAD_TRUNCATING_NUMERIC;	}      else	{	  int i = size - size_of;	  memset (res->text, 0, i);	  memcpy (res->text + i, p, size_of);	}    }  if (l1 != l)    return FFEBAD_TRUNCATING_NUMERIC;  return FFEBAD;}#endif/* ffetarget_convert_character1_typeless -- Raw conversion.   Always append a null byte to the end, in case this is wanted in   a special case such as passing a string as a FORMAT or %REF.   Done to save a bit of hassle, nothing more, but it's a kludge anyway,   because it isn't a "feature" that is self-documenting.  Use the   string "FFETARGET-NULL-KLUDGE" to flag anyplace you use this feature   in the code.  */#if FFETARGET_okCHARACTER1ffebadffetarget_convert_character1_typeless (ffetargetCharacter1 *res,				       ffetargetCharacterSize size,				       ffetargetTypeless l, mallocPool pool){  unsigned long long int l1;  unsigned long int l2;  unsigned int l3;  unsigned short int l4;  unsigned char l5;  size_t size_of;  char *p;  if (((size_t) size) >= sizeof (l1))    {      l1 = l;      p = (char *) &l1;      size_of = sizeof (l1);    }  else if (((size_t) size) >= sizeof (l2))    {      l2 = l;      p = (char *) &l2;      size_of = sizeof (l2);      l1 = l2;    }  else if (((size_t) size) >= sizeof (l3))    {      l3 = l;      p = (char *) &l3;      size_of = sizeof (l3);      l1 = l3;    }  else if (((size_t) size) >= sizeof (l4))    {      l4 = l;      p = (char *) &l4;      size_of = sizeof (l4);      l1 = l4;    }  else if (((size_t) size) >= sizeof (l5))    {      l5 = l;      p = (char *) &l5;      size_of = sizeof (l5);      l1 = l5;    }  else    {      assert ("stumped by conversion from typeless!" == NULL);      abort ();    }  res->length = size;

⌨️ 快捷键说明

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