Kayomn wrote:

I'll give a better example of what it is I'm trying to do.

These are node types. Their contents are not important in this explanation, only that they operate as a tree structure.

class Node;

class RootNode : Node;

class SpriteNode : Node;

The result of getNodeID on a specific type is always the same. A value representing it that is applied during compilation. The value does not matter to the programmer, only that it is unique and gets applied.

----------------------------------------------------------------------
uint nodeId1 = getNodeID!(Node)(); // 0.

uint nodeId2 = getNodeID!(SpriteNode)(); // 1.

uint comparison = getNodeID!(Node)(); // 0.

// True.
if (getNodeID!(Node)() == getNodeID!(Node)()) {

}

// False.
if (getNodeID!(SpriteNode)() == getNodeID!(Node)()) {

}
----------------------------------------------------------------------

it is already done for you, free of charge.

        class Node {}
        class RootNode : Node {}
        class SpriteNode : Node {}

        void main () {
                auto nodeId1 = typeid(Node);
                auto nodeId2 = typeid(SpriteNode);
                auto comparison = typeid(Node);

                Node n = new SpriteNode();

                assert(typeid(Node) is typeid(Node)); // obviously
                assert(typeid(SpriteNode) !is typeid(Node)); // sure
                assert(typeid(Node) is nodeId1);
                assert(typeid(n) is nodeId2);
        }

Reply via email to