ns3重要类
2024-09-12 07:03:06
1. simple-ref-count
递归模板,使得通过定义T:SimpleRefCount<T>
使得T类都具有计数功能
template <typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T> >
class SimpleRefCount : public PARENT{}
2.Ptr
Ptr类默认数据成员T类型的指针自带引用计数功能(一般是simple-ref-count的子类)
3.TypeTraits类
用于将某一种类型定性(通过typedef将某种类型重定义为是否为常数类型,是否为指针类型,是否为引用类型等。)
4.Attribute相关
抽象类:都是SimpleRefCount的派生类
AttributeValue
- Copy
- SerializeToString 将AttributeValue转换成string形式
- DeserializeFromString 将string形式的AttributeValue转换成其他形式
AttributeAccessor
隐藏attribute的设置和查询- Set
(ObjectBase *, const AttributeValue &)
- Get
- HasGetter
- HasSetter
- Set
AttributeChecker
- CreateValidValue
- Check:类型bool
- GetValueTypeName
- Create:创建对应的
Ptr<AttributeValue>
- Copy:简单实现两个AttributeValue之间的赋值
Attribute相关宏
ATTRIBUTE_HELPER_HEADER(type)
对应checker,value,accessor三种类定义宏
ATTRIBUTE_HELPER_CPP(type)
对应checker,value三种类的实现的宏
《type##Value》
实现序列化和反序列化的时候需要用到<<和>>,因此内置类型必须定义这两种操作。
- 新增的函数
c++
//和Accessor的set函数配合使用,T对应于Accessor中目标服务类的类型
bool GetAccessor (T &value) const {
value = T (m_value);
return true;
}
《type##Checker》
- 《type##Value>》完全继承AttributeChecker,不做任何修改(也是空实现)
MakeSimpleAttributeChecker
函数模板,传入模板实参为:对应AttributeValue的内置成员类型,《type##Checker》类型。来实现具体的函数
Accessor
只是定义了Make##type##Accessor函数模板(输入形参为1个或者两个)。用户要生成对应的Accessor还需调用该函数。生成的AttributeAccessor可用于日后设置相应的AttributeValue
5.Callback
6.Trace
TracedCallback
定义callbacklist:
list<Callback<void,T1,T2,T3,T4,T5,T6,T7,T8> > CallbackList;
CallbackList m_callbackList;
TraceValue
: 封装一种基本类型和对应的list<callback>
所有回调的输入形参都是(旧值,新值)。c++ T m_v; TracedCallback<T,T> m_cb;回调输入的两个Arg都是T类型
MakeTraceSourceAccessor
- 生成对应的TraceValue的TraceSourceAccessor
c++ Ptr<const TraceSourceAccessor> MakeTraceSourceAccessor MakeTraceSourceAccessor<TraceValue>;
- 生成对应的TraceValue的TraceSourceAccessor
TraceSourceAccessor::connect()
调用TraceSourceAccessor的connect函数就能把sink(callback)和TraceSource连接起来
7.TypeId
- 创建一个类的时候,要生成与类名对应的TypeID,并SetParent,AddConstructor。
最新文章
- Css--深入学习之折角效果
- SecureCRT在远程主机和本地之间传输文件
- 撰写合格的REST API
- centos7下yum安装mysql
- IOC Container(服务容器)的工作机制
- Unix Linux 编程书籍
- 遇到 Error creating the Web Proxy specified in the &#39;system.net/defaultProxy&#39; configuration section的解决办法
- CString string char* char 之间的字符转换(多种方法)
- C#网络编程简单实现通信小例子-1
- goahead webserver源码分析
- 一个好用的Dialog插件
- js垃圾回收机制
- 网络1712--c语言函数作业总结
- opencv基本图像操作
- 《C和指针》---指针
- django引入现有数据库 转
- HBuild 连接苹果手机
- FarBox的建站过程
- SQL RAISERROR 用法
- 【Java----创建多级文件夹】
热门文章
- geotrellis使用(十二)再记录一次惨痛的伪BUG调试经历(数据导入以及读取瓦片)
- JavaScript 框架设计
- android 伸缩控件ExpandableListView 展开失败的可能原因。
- Oracle Recovery 01 - 常规恢复之完全恢复
- Your account already has a valid iOS Distribution certificate!
- Android AlertDialog去除黑边白边自定义布局(转)
- 利用Swashbuckle生成Web API Help Pages
- C++异常处理: try,catch,throw,finally的用法
- 在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效。
- IIS 配置Http重定向到Https