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
  • 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>;
  • TraceSourceAccessor::connect() 调用TraceSourceAccessor的connect函数就能把sink(callback)和TraceSource连接起来

7.TypeId

  • 创建一个类的时候,要生成与类名对应的TypeID,并SetParent,AddConstructor。

ns3重要类的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. ns3 Tutorial 中的日志模块(翻译)

      转载地址:http://blog.sina.com.cn/s/blog_8ecca79b0101d7fe.html     1  日志模块的使用   在运行 first.cc 脚本时,我们已经简单 ...

  3. NS3 日志(Logging)、命令行参数、Tracing系统概述(转载)

    NS-3日志子系统的提供了各种查看仿真结果的渠道: 一.使用Logging Module 1 [预备知识]日志级别及其对应的宏 NS-3 提供了若干个日志级别来满足不同的 Debug 需求,每一级的日 ...

  4. cocos2d-x实战 C++卷 学习笔记--第4章 字符串 __String类

    前言: <cocos2d-x实战C++卷>学习笔记.(cocos2d-x 是3.0版本) 介绍 cocos2d-x 通用的字符串类  __String . 使用cocos2d::__Str ...

  5. (五岁以下儿童)NS3样本演示:桥模块演示样品csma-bridge.cc凝视程序

    (五岁以下儿童)NS3:桥模块演示样品csma-bridge.cc凝视程序 1.Ns3 bridge模csma-bridge.cc演示示例程序的目光 // Network topology // // ...

  6. JAVA类与对象(课堂总结)

    一:"=="的不同含义 当"=="施加于原始数据类型变量时,是比较变量所保存的数据是否相等当"=="施加于引用类型变量时,是比较这两个变量是 ...

  7. 类string解析

    原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5645248.html 在涉及字符串的时候,我们可以定义字符数组或指针,其实还有一个类,专门是为字符 ...

  8. ns3 myfirst.cc 两个节点点对点通信

    首先在ns3.25/examples/tutorial/下找到 first.cc文件,将他拷贝到到scratch目录下. 然后为了方便将代码打出来 /* -*- Mode:C++; c-file-st ...

  9. Java编程思想学习笔记——复用类

    前言 复用代码是Java众多引人注目的功能之一. 达到复用代码的方法有: 组合:新的类由现有类的对象所组成.(复用现有代码的功能,而非它的形式) 继承:按照现有类的类型组建新类.(不改变现有类的形式, ...

随机推荐

  1. Objective-C精选字符串处理方法

    无论是什么编程语言对字符串的操作是少不了的,对复杂的字符串的分析和操作我们可以用正则表达式来达到我们的目的.简单的字符串处理我们可以借助OC中NSString封装好的字符串处理方法,不过前提是你得了解 ...

  2. 排名前 8 的 PHP 调试工具

    Web 开发并不是一项轻松的任务,有超级多服务端脚本语言提供给开发者,但是当前 PHP 因为具有额外的一些强大的功能而越来越流行.PHP 是最强大的服务端脚本语言之一,同时也是 web 开发者和设计者 ...

  3. struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo

    理解 Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起 ...

  4. Mongo查询

    这里主要是讲MongoDB在控制台中如何进行高级查询. 还有一句想提醒大家,多动手实验,才是硬道理. <,>,>=,<= 这四个就不用解释了,最常用的,也是最简单的. db.c ...

  5. 4.DB Initialization(数据库初始化)[EF Code-First系列]

    前面的例子中,我们已经看到了Code-First自动为我们创建数据库的例子. 这里我们将要学习的是,当初始化的时候,Code-First是怎么决定数据库的名字和服务的呢??? 下面的图,解释了这一切! ...

  6. anonymousIdentification 与匿名访问

    anonymousIdentification 元素(ASP.NET 设置架构) 来自 <https://msdn.microsoft.com/zh-cn/library/91ka2e6a(v= ...

  7. SharePoint中新创建的Web Application在浏览器中报404错误

    问题描述:在安装完成SharePoint 2010后,进入Central Administration,创建一个新的Web Application,可以正常创建,但访问时却返回404. 平台环境:Wi ...

  8. 【C语言学习趣事】_33_关于C语言和C++语言中的取余数(求模)的计算_有符号和无符号数的相互转换问题

    最近再次复习C++语言,用的教材是<C++ Primer>这本教材, 看到第二章的时候,里面有个问题困扰了我. 于是想上网查查怎么回事, 结果看了很久都没有得到一个满意的答案. 书上有这么 ...

  9. listener监听器的相关知识

    从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...

  10. 容器--TreeMap

    一.概述 在Map的实现中,除了我们最常见的KEY值无序的HashMap之外,还有KEY有序的Map,比较常用的有两类,一类是按KEY值的大小有序的Map,这方面的代表是TreeMap,另外一种就保持 ...