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?

Reply via email to