On Sunday, 20 October 2013 at 02:14:55 UTC, TheFlyingFiddle wrote:
Anyway to evaluate the name of the class and return its hash
at compile time?
I couldn't find the built in hash unction for strings so i used
the one from http://dlang.org/hash-map.html as an example. More
advanced and better hash functions can be found online.
public class ComponentDetail(T) : Component {
////////////////////////////////////////////////////////////
/// Component's ID as static member.
public static hash_t ID = hash!(T);
}
hash_t hash(T)()
{
hash_t hash;
foreach (char c; T.stringof)
hash = (hash * 9) + c;
return hash;
}
Works perfectly :), now if i want to implement the same but
rather do something like
template GetHash(string character, hash_t hash = 0, size_t index
= 0) {
static if (character[index])
enum GetHash = GetHash(character, hash = (hash * 9) +
character[index], ++index);
else
enum GetHash = hash;
}
How should i implement it?