bool asCDataType::IsSamePrimitiveBaseType(const asCDataType &dt) const
{
	if( !IsPrimitive() || !dt.IsPrimitive() ) return false;
	
	if( IsIntegerType()  && dt.IsIntegerType()  ) return true;
	if( IsUnsignedType() && dt.IsUnsignedType() ) return true;
	if( IsFloatType()    && dt.IsFloatType()    ) return true;
	if( IsDoubleType()   && dt.IsDoubleType()   ) return true;
	if( IsBooleanType()  && dt.IsBooleanType()  ) return true;
	if( IsFloatType()    && dt.IsDoubleType()   ) return true;
	if( IsDoubleType()   && dt.IsFloatType()    ) return true;

	return false;
}
void ParamElement::ReadValue(const DOMNode* node)
{
	_ASSERTE(node != NULL);

	DOMNode* value = node->getFirstChild();
	if( value == NULL ) { return; }

	BaseRefVectorOf<XMLCh>* vecValue = XMLString::tokenizeString( value->getNodeValue() );

	unsigned int sizeValue = vecValue->size();
	if( sizeValue == 0 ) { return; }

	if( IsFloatType() )
	{
		valFloat.reserve( sizeValue );
		for( unsigned int i = 0; i < sizeValue; i++ )
		{
			valFloat.push_back( XMLChToFloat( vecValue->elementAt( i ) ) );
		}
	}
	else if( IsBoolType() )
	{
		valBool.reserve( sizeValue );
		for( unsigned int i = 0; i < sizeValue; i++ )
		{
			valBool.push_back( XMLChToBool( vecValue->elementAt( i ) ) );
		}
	}
	else if( IsBlendType() )
	{
		// 未実装
	}
	else if( IsFunctionType() )
	{
		// 未実装
	}
	else { _ASSERTE(!"UnknownType"); }

	SAFE_DELETE(vecValue);
}
unsigned int ParamElement::GetSize() const
{
	if( IsBoolType() )	{ return (unsigned int)valBool.size(); }
	if( IsFloatType() )	{ return (unsigned int)valFloat.size(); }
	return 0;
}