TypeId和IidManager关系

本文详细介绍了IidManager中的数据结构IidInformation及其成员,包括tid与IidInformation之间的映射关系,并解释了如何通过m_information、m_namemap和m_hashmap进行查找。此外还介绍了TypeId类的实现方式。

IidInformation结构

数据类型名字
stringname
TypeId::hash_thash
uint16_tparent
stringgroupName
size_tsize
boolhasConstructor
Callback<ObjectBase*>constructor
boolmustHideFromDocumentation
vector<TypeId::AttributeInformation>attributes
vector<TypeId::TraceSourceInformation>traceSources

IidManager中包含的成员

vector<struct IidInformation> m_information;
namemap_t m_namemap;
hashmap_t m_hashmap;

IidManager中存了三张表;

  • m_information 用于建立tid(uint16_t)和每个 IidInformation的映射关系。Vector中下标为i的 IidInformation对应的tid为i+1;
  • m_namemap
    • map<string, uint16_t>
  • m_hashmap
    • map<TypeId::hash_t,uint16_t>
  • m_information中的映射关系造成的影响:
    • LookupInformation (uint16_t uid)函数返回的是&m_information[uid-1]
    • 创建新的IidInformation(假设为newIn)时,先把newIn加入Vector,在令对应的uid为Vetor.size().然后加入map<name, uid>,map<hash, uid>

TypeId

  • 类成员:m_tid.
  • 成员函数的实现 通过调用IidManager的同名实现函数(将m_tid作为实参传入)实现。

转载于:https://www.cnblogs.com/rainySue/p/TypeId-heIidManager-guan-xi.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值