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. SPRING多个占位符配置文件解析源码研究--转

    原文地址:http://www.cnphp6.com/archives/85639 Spring配置文件: <context:property-placeholder location=&quo ...

  2. GCD-两个网络请求同步问题

    在网络请求的时候有时有这种需求 两个接口请求数据,然后我们才能做最后的数据处理.但是因为网络请求是移步的 .我们并不知道什么时候两个请求完成 . 通常面对这样的需求会自然的想到 多线程 啊 .表现真正 ...

  3. GCD 扫盲篇

    GCD有四个概念:串行队列.并行队列.同步.异步四者. 如下简介: 这里不仅给出了不确定性,而且也给出了确定性.对于初学者而言,有时候因为那些不确定的东西所造成的疑问会像没有闸却在疾驰的汽车一样让人惊 ...

  4. 让自己也能使用Canvas

    <canvas> 是 HTML5 新增的元素,可使用JavaScript脚本来绘制图形.例如:画图,合成照片,创建动画甚至实时视频处理与渲染. 兼容性方面,除了一些骨灰级浏览器IE6.IE ...

  5. C语言 第二章 数据类型、变量和输入函数

    一.数据类型简介 在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统.变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式. 类型转换: 类型 存储大小 值范围 cha ...

  6. 【LeetCode】Palindrome Pairs(336)

    1. Description Given a list of unique words. Find all pairs of distinct indices (i, j) in the given ...

  7. View与Control间的数据交互

    View与Control间的数据交互 1.ViewBag.Name ="Name1" 2.ViewData["VD"] = "view data&qu ...

  8. JConsole远程连接配置

    JConsole远程连接还是有一点坑的.这里记录一下配置过程,好记性不如烂笔头. 1.在远程机的tomcat的catalina.sh中加入配置: JAVA_OPTS="$JAVA_OPTS ...

  9. Linux日志定时清理

    linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...

  10. 文件权限及chmod使用方法

    文件权限 在linux在,由于安全控制需要,对于不同的文件有不现的权限,限制不同用户的操作权限,总共有rwxXst这一些权限,我们经常使用到的是rwx,对于文件和文件夹而言,他们代表着不同的含义 对于 ...