zoukankan      html  css  js  c++  java
  • ns3重要类

    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。
  • 相关阅读:
    20145209预备作业01
    GDB调试汇编堆栈过程分析
    20145209 《信息安全系统设计基础》第14周学习总结
    20145209 《信息安全系统设计基础》第13周学习总结
    20145209 《信息安全系统设计基础》第13周学习总结
    2018-2019-2 20175320实验一《Java开发环境的熟悉》实验报告
    20175320 2018-2019-2 《Java程序设计》第5周学习总结
    20175320 2018-2019-2 《Java程序设计》第4周学习总结
    记2017问鼎杯预赛的wp---来自一个小菜鸡的感想
    利用python多线程实现多个客户端与单个服务端的远程ssh
  • 原文地址:https://www.cnblogs.com/rainySue/p/ns3zhong-yao-lei.html
Copyright © 2011-2022 走看看