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

📄 slarith.inc

📁 一个C格式的脚本处理函数库源代码,可让你的C程序具有执行C格式的脚本文件
💻 INC
📖 第 1 页 / 共 2 页
字号:
	  {	     for (n = 0; n < na; n++)	       c[n] = a[n] >> b[n];	  }	else if (nb == 1)	  {	     GENERIC_TYPE xb = *b;	     for (n = 0; n < na; n++)	       c[n] = a[n] >> xb;	  }        else /* if (na == 1) */	  {	     GENERIC_TYPE xa = *a;	     for (n = 0; n < nb; n++)	       c[n] = xa >> b[n];	  }#endif	break;#endif				       /* GENERIC_BIT_OPERATIONS */      case SLANG_EQ:#if _SLANG_OPTIMIZE_FOR_SPEED < 2	for (n = 0; n < n_max; n++)	  {	     cc[n] = (*a == *b); a += da; b += db;	  }#else	if (na == nb)	  {	     for (n = 0; n < na; n++)	       cc[n] = (a[n] == b[n]);	  }	else if (nb == 1)	  {	     GENERIC_TYPE xb = *b;	     for (n = 0; n < na; n++)	       cc[n] = (a[n] == xb);	  }        else /* if (na == 1) */	  {	     GENERIC_TYPE xa = *a;	     for (n = 0; n < nb; n++)	       cc[n] = (xa == b[n]);	  }#endif	break;      case SLANG_NE:#if _SLANG_OPTIMIZE_FOR_SPEED < 2	for (n = 0; n < n_max; n++)	  {	     cc[n] = (*a != *b); a += da; b += db;	  }#else	if (na == nb)	  {	     for (n = 0; n < na; n++)	       cc[n] = (a[n] != b[n]);	  }	else if (nb == 1)	  {	     GENERIC_TYPE xb = *b;	     for (n = 0; n < na; n++)	       cc[n] = (a[n] != xb);	  }        else /* if (na == 1) */	  {	     GENERIC_TYPE xa = *a;	     for (n = 0; n < nb; n++)	       cc[n] = (xa != b[n]);	  }#endif	break;      case SLANG_GT:#if _SLANG_OPTIMIZE_FOR_SPEED < 2	for (n = 0; n < n_max; n++)	  {	     cc[n] = (*a > *b); a += da; b += db;	  }#else	if (na == nb)	  {	     for (n = 0; n < na; n++)	       cc[n] = (a[n] > b[n]);	  }	else if (nb == 1)	  {	     GENERIC_TYPE xb = *b;	     for (n = 0; n < na; n++)	       cc[n] = (a[n] > xb);	  }        else /* if (na == 1) */	  {	     GENERIC_TYPE xa = *a;	     for (n = 0; n < nb; n++)	       cc[n] = (xa > b[n]);	  }#endif	break;      case SLANG_GE:#if _SLANG_OPTIMIZE_FOR_SPEED < 2	for (n = 0; n < n_max; n++)	  {	     cc[n] = (*a >= *b); a += da; b += db;	  }#else	if (na == nb)	  {	     for (n = 0; n < na; n++)	       cc[n] = (a[n] >= b[n]);	  }	else if (nb == 1)	  {	     GENERIC_TYPE xb = *b;	     for (n = 0; n < na; n++)	       cc[n] = (a[n] >= xb);	  }        else /* if (na == 1) */	  {	     GENERIC_TYPE xa = *a;	     for (n = 0; n < nb; n++)	       cc[n] = (xa >= b[n]);	  }#endif	break;      case SLANG_LT:#if _SLANG_OPTIMIZE_FOR_SPEED < 2	for (n = 0; n < n_max; n++)	  {	     cc[n] = (*a < *b); a += da; b += db;	  }#else	if (na == nb)	  {	     for (n = 0; n < na; n++)	       cc[n] = (a[n] < b[n]);	  }	else if (nb == 1)	  {	     GENERIC_TYPE xb = *b;	     for (n = 0; n < na; n++)	       cc[n] = (a[n] < xb);	  }        else /* if (na == 1) */	  {	     GENERIC_TYPE xa = *a;	     for (n = 0; n < nb; n++)	       cc[n] = (xa < b[n]);	  }#endif	break;      case SLANG_LE:#if _SLANG_OPTIMIZE_FOR_SPEED < 2	for (n = 0; n < n_max; n++)	  {	     cc[n] = (*a <= *b); a += da; b += db;	  }#else	if (na == nb)	  {	     for (n = 0; n < na; n++)	       cc[n] = (a[n] <= b[n]);	  }	else if (nb == 1)	  {	     GENERIC_TYPE xb = *b;	     for (n = 0; n < na; n++)	       cc[n] = (a[n] <= xb);	  }        else /* if (na == 1) */	  {	     GENERIC_TYPE xa = *a;	     for (n = 0; n < nb; n++)	       cc[n] = (xa <= b[n]);	  }#endif	break;      case SLANG_OR:#if _SLANG_OPTIMIZE_FOR_SPEED < 2	for (n = 0; n < n_max; n++)	  {	     cc[n] = (*a || *b); a += da; b += db;	  }#else	if (na == nb)	  {	     for (n = 0; n < na; n++)	       cc[n] = (a[n] || b[n]);	  }	else if (nb == 1)	  {	     GENERIC_TYPE xb = *b;	     for (n = 0; n < na; n++)	       cc[n] = (a[n] || xb);	  }        else /* if (na == 1) */	  {	     GENERIC_TYPE xa = *a;	     for (n = 0; n < nb; n++)	       cc[n] = (xa || b[n]);	  }#endif	break;      case SLANG_AND:#if _SLANG_OPTIMIZE_FOR_SPEED < 2	for (n = 0; n < n_max; n++)	  {	     cc[n] = (*a && *b); a += da; b += db;	  }#else	if (na == nb)	  {	     for (n = 0; n < na; n++)	       cc[n] = (a[n] && b[n]);	  }	else if (nb == 1)	  {	     GENERIC_TYPE xb = *b;	     for (n = 0; n < na; n++)	       cc[n] = (a[n] && xb);	  }        else /* if (na == 1) */	  {	     GENERIC_TYPE xa = *a;	     for (n = 0; n < nb; n++)	       cc[n] = (xa && b[n]);	  }#endif	break;     }   return 1;}#endif				       /* GENERIC_BINARY_FUNCTION */#ifdef GENERIC_UNARY_FUNCTIONstatic int GENERIC_UNARY_FUNCTION(int op, unsigned char a_type, VOID_STAR ap, unsigned int na, VOID_STAR bp ){   GENERIC_TYPE *a, *b;   unsigned int n;   int *ib;   (void) a_type;   a = (GENERIC_TYPE *) ap;   b = (GENERIC_TYPE *) bp;   switch (op)     {      default:	return 0;      case SLANG_PLUSPLUS:	for (n = 0; n < na; n++) b[n] = (a[n] + 1);	break;      case SLANG_MINUSMINUS:	for (n = 0; n < na; n++) b[n] = (a[n] - 1);	break;      case SLANG_CHS:	for (n = 0; n < na; n++) b[n] = (GENERIC_TYPE) -(a[n]);	break;      case SLANG_SQR:	for (n = 0; n < na; n++) b[n] = (a[n] * a[n]);	break;      case SLANG_MUL2:	for (n = 0; n < na; n++) b[n] = (2 * a[n]);	break;      case SLANG_ABS:	for (n = 0; n < na; n++) b[n] = ABS_FUNCTION (a[n]);	break;      case SLANG_SIGN:	ib = (int *) bp;	for (n = 0; n < na; n++)	  ib[n] = SIGN_FUNCTION(a[n]);	break;#ifdef GENERIC_BIT_OPERATIONS      case SLANG_NOT:	for (n = 0; n < na; n++) b[n] = !(a[n]);	break;      case SLANG_BNOT:	for (n = 0; n < na; n++) b[n] = ~(a[n]);	break;#endif     }   return 1;}#endif				       /* GENERIC_UNARY_FUNCTION */#ifdef SCALAR_BINARY_FUNCTIONstatic int SCALAR_BINARY_FUNCTION (GENERIC_TYPE a, GENERIC_TYPE b, int op){   switch (op)     {      default:	return 1;#if SLANG_HAS_FLOAT#ifdef POW_FUNCTION      case SLANG_POW:	return PUSH_POW_OBJ_FUN(POW_FUNCTION(a, b));#endif#endif      case SLANG_PLUS:	return PUSH_SCALAR_OBJ_FUN (a + b);      case SLANG_MINUS:	return PUSH_SCALAR_OBJ_FUN (a - b);      case SLANG_TIMES:	return PUSH_SCALAR_OBJ_FUN (a * b);      case SLANG_DIVIDE:	if (b == 0)	  {	     SLang_Error = SL_DIVIDE_ERROR;	     return -1;	  }	return PUSH_SCALAR_OBJ_FUN (a / b);      case SLANG_MOD:	if (b == 0)	  {	     SLang_Error = SL_DIVIDE_ERROR;	     return -1;	  }	return PUSH_SCALAR_OBJ_FUN (MOD_FUNCTION(a,b));#ifdef GENERIC_BIT_OPERATIONS      case SLANG_BAND:	return PUSH_SCALAR_OBJ_FUN (a & b);      case SLANG_BXOR:	return PUSH_SCALAR_OBJ_FUN (a ^ b);      case SLANG_BOR:	return PUSH_SCALAR_OBJ_FUN (a | b);      case SLANG_SHL:	return PUSH_SCALAR_OBJ_FUN (a << b);      case SLANG_SHR:	return PUSH_SCALAR_OBJ_FUN (a >> b);#endif      case SLANG_GT: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a > b));      case SLANG_LT: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a < b));      case SLANG_GE: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a >= b));      case SLANG_LE: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a <= b));      case SLANG_EQ: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a == b));      case SLANG_NE: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a != b));      case SLANG_OR: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a || b));      case SLANG_AND: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a && b));     }}#endif				       /* SCALAR_BINARY_FUNCTION */#ifdef CMP_FUNCTIONstatic int CMP_FUNCTION (unsigned char unused, VOID_STAR a, VOID_STAR b, int *c){   GENERIC_TYPE x, y;   (void) unused;   x = *(GENERIC_TYPE *) a;   y = *(GENERIC_TYPE *) b;      if (x > y) *c = 1;   else if (x == y) *c = 0;   else *c = -1;      return 0;}#endif#undef CMP_FUNCTION#undef SCALAR_BINARY_FUNCTION#undef PUSH_POW_OBJ_FUN#undef PUSH_SCALAR_OBJ_FUN#undef GENERIC_BINARY_FUNCTION#undef GENERIC_UNARY_FUNCTION#undef GENERIC_BIT_OPERATIONS#undef GENERIC_TYPE#undef POW_FUNCTION#undef POW_RESULT_TYPE#undef MOD_FUNCTION#undef ABS_FUNCTION#undef SIGN_FUNCTION

⌨️ 快捷键说明

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