Beispiel #1
0
	const std::string &Type::name() const {
		auto i = names.find(type_id);
		if(i!=names.end())
			return i->second;
		else if(is_vector()) {
			std::stringstream s;
			s << vector_of().name() << vector_size();
			names.insert(std::pair<int, std::string>(type_id, s.str()));
			return names[type_id];
		} else if(is_pointer()) {
			std::stringstream s;
			s << "__global " << pointer_to().name() << " *";
			names.insert(std::pair<int, std::string>(type_id, s.str()));
			return names[type_id];
		} else {
			assert(!"Invalid type.");
		}
	}
		builtin_types replace_scalar( builtin_types const& btc, builtin_types const& scalar_btc )
		{
			assert( is_scalar(scalar_btc) );
			if( !is_scalar(scalar_btc) ) { return scalar_btc; }

			if( is_vector(btc) )
			{
				return vector_of( scalar_btc, vector_size(btc) );
			}
			else if ( is_matrix(btc) )
			{
				return matrix_of( scalar_btc, vector_size(btc), vector_count(btc) );
			}
			else
			{
				return scalar_btc;
			}
		}