How is the TypeInfo assigned?

2016-02-13 Thread Tofu Ninja via Digitalmars-d-learn
Is the TypeInfo given by typeid() guaranteed to be the same for a 
type regardless of where I call it? I guess my question is, is 
the TypeInfo a valid way to dynamically check types?


I am implementing a message passing system for an 
entity-component system, I was planning to use structs as 
messages and use the TypeInfo to determine where they are 
supposed to go. Will this cause any problems?


Also will typeid() allocate? Or is the TypeInfo statically 
allocated at compile time?


Also how does shared libs affect this? Will a TypeInfo passed 
across different libs still match up?


Thanks


Re: How is the TypeInfo assigned?

2016-02-13 Thread Benjamin Thaut via Digitalmars-d-learn

On Saturday, 13 February 2016 at 12:44:40 UTC, Tofu Ninja wrote:
Is the TypeInfo given by typeid() guaranteed to be the same for 
a type regardless of where I call it? I guess my question is, 
is the TypeInfo a valid way to dynamically check types?


I am implementing a message passing system for an 
entity-component system, I was planning to use structs as 
messages and use the TypeInfo to determine where they are 
supposed to go. Will this cause any problems?


Also will typeid() allocate? Or is the TypeInfo statically 
allocated at compile time?


Also how does shared libs affect this? Will a TypeInfo passed 
across different libs still match up?


Thanks


Yes, type infos are garantueed to have identity. You can use 
their adress to identify a type.


The linux shared library mechanism ensures that they have the 
same adress across multiple shared libraries (if all of these 
libraries are loaded into the same process)


With windows dlls there can be cases where a typeinfo is 
duplicated. But as dlls don't really work yet, I wouldn't worry 
about it.