module cushion._internal.misc;

package(cushion):

// If name member of x is exists, this template returns that member otherwise returns defaultVal
template getMemberAlias(alias x, string name, defaultVal...)
{
	static if (__traits(hasMember, x, name))
		alias getMemberAlias = __traits(getMember, x, name);
	else
		alias getMemberAlias = defaultVal[0];
}

/// ditto
template getMemberValue(alias x, string name, defaultVal...)
{
	static if (__traits(hasMember, x, name))
		enum getMemberValue = __traits(getMember, x, name);
	else
		enum getMemberValue = defaultVal[0];
}


//
pragma(inline) T trustedCast(T, Arg)(Arg arg) @trusted
{
	return cast(T)arg;
}