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

📄 istlangch.c

📁 T-kernel 的extension源代码
💻 C
字号:
/* *---------------------------------------------------------------------- *    T-Kernel / Standard Extension * *    Copyright (C) 2006 by Ken Sakamura. All rights reserved. *    T-Kernel / Standard Extension is distributed  *      under the T-License for T-Kernel / Standard Extension. *---------------------------------------------------------------------- * *    Version:   1.00.00 *    Released by T-Engine Forum(http://www.t-engine.org) at 2006/8/11. * *---------------------------------------------------------------------- *//* *	istlangch.c (libtcstr) */#include <basic.h>#include <tlang.h>#define MAX_FE             128#define TSD_ITH_VAL_2      2#define TSD_ITH_MSK_0XFF00 (TC)0xff00#define TSD_ITH_MAX_0XFD   (TC)0xfd#define TSD_ITH_RTN_M1     (-1)#define TSD_ITH_RTN_M2     (-2)#define TSD_ITH_VAL_0XFEFE (TC)0xfefe#define TSD_ITH_MSK_0XFF   (TC)0xff#define TSD_ITH_CH_0XFE00  0xfe00U#define TSD_ITH_CH_0X0000  0x0000U#define TSD_ITH_MIN_0X21   (TC)0x21#define TSD_ITH_MAX_0X7E   (TC)0x7e#define TSD_ITH_MIN_0X80   (TC)0x80#define TSD_ITH_SFT_MCR    ((UW)(nn-1) << 8)/* * Determination of language (script) specification code *	Determine the language specification code characters one by one (in TC). * Return value	> 0	Language specification code (TLANG is returned) *		= 0	Not language specification code *		= -1	Invalid language specification code *		= -2	Indefinite language specification code (The code is not complete) * *	Initialize *n to "*n = 0" when calling it for the first time. Subsequently, call the returned *	value *n repeatedly without change to determine the language specification code. * *	(Ex. of use) *		n = 0; *		while ( (lang = isTLANGch(*tp++, &n)) == -2 ); */EXPORT W isTLANGch( TC ch, W *n ){	W	nn;	if ( ch == TSD_ITH_VAL_0XFEFE ) {		*n += TSD_ITH_VAL_2;		return TSD_ITH_RTN_M2;	}	nn = *n;	*n = 0;	switch ( ch & TSD_ITH_MSK_0XFF00 ) {	  case TSD_ITH_CH_0XFE00:		nn++;		ch &= TSD_ITH_MSK_0XFF;		/* no break */	  case TSD_ITH_CH_0X0000:		if (( nn == 0 )||( nn > MAX_FE )) {			break;		}		if ( ((ch >= TSD_ITH_MIN_0X21 )&&( ch <= TSD_ITH_MAX_0X7E))		  || ((ch >= TSD_ITH_MIN_0X80 )&&( ch <= TSD_ITH_MAX_0XFD)) ) {			/* Language specification code */			return (W)(TSD_ITH_SFT_MCR | ch);		}		break;	  default:		/* nothing to do */		break;	}	/* nn = 0 : Not language specification code	   nn > 0 : Invalid language specification code */	return ( nn == 0 )? 0: TSD_ITH_RTN_M1;}

⌨️ 快捷键说明

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