www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How is the TypeInfo assigned?

reply Tofu Ninja <emmons0 purdue.edu> writes:
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
Feb 13 2016
parent Benjamin Thaut <code benjamin-thaut.de> writes:
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.
Feb 13 2016