//-------------------------------------------------------------------------------------------------
//	NAME		: Get_CommandInfo
//	DESC		: The function to return commmand ifno.
//	PROGRAMMER	: Yongs Lee
//	DATE		: July 30, 2008
//-------------------------------------------------------------------------------------------------
CSiegeCommand* CSiege_RecallBase::Get_CommandInfo(BYTE byIdx)
{
	// Check index limit.
	if( byIdx >= MAX_BASE_INDEX )
	{
		Throw_Error("Overd index limit!!", __FUNCTION__) ;
		return NULL ;
	}


	// Check index.
	M_COMMAND::iterator it ;
	for( it = m_mCommand.begin() ; it != m_mCommand.end() ; ++it )
	{
		if( it == m_mCommand.end() ) return NULL ;

		if( it->second.Get_Index() != byIdx ) continue ;

		return &it->second ;
	}


	// Return null.
	return NULL ;
}
//-------------------------------------------------------------------------------------------------
//	NAME		: Insert_Command
//	DESC		: The function to insert command.
//	PROGRAMMER	: Yongs Lee
//	DATE		: July 30, 2008
//-------------------------------------------------------------------------------------------------
void CSiege_RecallBase::Insert_Command(BYTE byIdx, CSiegeCommand* pCommand)
{
	// Check parameter.
	if(!pCommand)
	{
		Throw_Error("Invalid parameter!!", __FUNCTION__) ;
		return ;
	}


	// Check index.
	if( byIdx >= MAX_BASE_INDEX )
	{
		Throw_Error("Over index limit!!", __FUNCTION__) ;
		return ;
	}


	// Insert command.
	m_mCommand.insert( std::make_pair( byIdx, *pCommand ) ) ;
}
//-------------------------------------------------------------------------------------------------
//	NAME		: Set_BaseKind
//	DESC		: The function to setting base kind.
//	PROGRAMMER	: Yongs Lee
//	DATE		: July 30, 2008
//-------------------------------------------------------------------------------------------------
void CSiege_RecallBase::Set_BaseKind(BYTE byKind)
{
	// Check kind limit.
	if( byKind >= e_SIEGE_BASEKIND_MAX )
	{
		Throw_Error("Over kind limit!!", __FUNCTION__) ;
		return ;
	}


	// Setting base kind.
	m_byBaseKind = byKind ;
}
Exemple #4
0
*/	static void Scan_Error(REBCNT errnum, SCAN_STATE *ss, REBCNT tkn, REBYTE *arg, REBCNT size, REBVAL *relax)
/*
**		Scanner error handler
**
***********************************************************************/
{
	ERROR_OBJ *error;
	REBSER *errs;
	REBYTE *name;
	REBYTE *cp;
	REBYTE *bp;
	REBSER *ser;
	REBCNT len = 0;

	ss->errors++;

	if (PG_Boot_Strs)
		name = BOOT_STR(RS_SCAN,tkn);
	else
		name = (REBYTE*)"boot";

	cp = ss->head_line;
    while (IS_LEX_SPACE(*cp)) cp++;	// skip indentation
	bp = cp;
	while (NOT_NEWLINE(*cp)) cp++, len++;

	//DISABLE_GC;
	errs = Make_Error(errnum, 0, 0, 0);
	error = (ERROR_OBJ *)FRM_VALUES(errs);
	ser = Make_Binary(len + 16);
	Append_Bytes(ser, "(line ");
	Append_Int(ser, ss->line_count);
	Append_Bytes(ser, ") ");
	Append_Series(ser, (REBYTE*)bp, len);
	Set_String(&error->nearest, ser);
	Set_String(&error->arg1, Copy_Bytes(name, -1));
	Set_String(&error->arg2, Copy_Bytes(arg, size));

	if (relax) {
		SET_ERROR(relax, errnum, errs);
		//ENABLE_GC;
		return;
	}

	Throw_Error(errs);	// ENABLE_GC implied
}
Exemple #5
0
*/	void Trap3(REBCNT num, REBVAL *arg1, REBVAL *arg2, REBVAL *arg3)
/*
***********************************************************************/
{
	Throw_Error(Make_Error(num, arg1, arg2, arg3));
}
Exemple #6
0
*/	void Trap2(REBCNT num, REBVAL *arg1, REBVAL *arg2)
/*
***********************************************************************/
{
	Throw_Error(Make_Error(num, arg1, arg2, 0));
}
Exemple #7
0
*/	void Trap1(REBCNT num, REBVAL *arg1)
/*
***********************************************************************/
{
	Throw_Error(Make_Error(num, arg1, 0, 0));
}
Exemple #8
0
*/	void Trap0(REBCNT num)
/*
***********************************************************************/
{
	Throw_Error(Make_Error(num, 0, 0, 0));
}