ビルトイン関数でショートサーキットっぽいものが出来るんでね?と思ったけど失敗した

こんなの。
code_get()したら式を評価するんだからスキップすることにはならない。
次のex2までスキップとかなら出来るけど最後のパラメータだったらそれも出来ないし。TYPE_MARK ')' までをスキップ? それじゃ入れ子に対応できないじゃんということで失敗、残念。

	case 0x200:								// _and
		{
		chk = code_get();
		if ( chk <= PARAM_END ) throw HSPERR_INVALID_FUNCPARAM;
		while( 1 ) {
			int bool_value;
			*type_res = mpval->flag;
			switch( *type_res ) {
			case HSPVAR_FLAG_INT:
				reffunc_intfunc_ivalue = *(int *)mpval->pt;
				bool_value = reffunc_intfunc_ivalue;
				ptr = &reffunc_intfunc_ivalue;
				break;
			case HSPVAR_FLAG_DOUBLE:
				reffunc_intfunc_value = *(double *)mpval->pt;
				bool_value = reffunc_intfunc_value;
				ptr = &reffunc_intfunc_value;
				break;
			case HSPVAR_FLAG_STR:
				ptr = (char *)mpval->pt;
				bool_value = *(char *)ptr != '\0';
				break;
			default:
				throw HSPERR_INVALID_TYPE;
			}
			if ( ! bool_value ) {
				break;
			}
			chk = code_get();
			if ( chk <= PARAM_END ) break;
		}
		while ( chk > PARAM_END ) {
			chk = code_get();
		}
		break;
		}
OpenHSP
Copyright (C) 1997-2008, Onion Software/onitama, all rights reserved.
This software is provided by the copyright holders and contributors "as is" and
any express or implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.