NED语言:@class属性

使用@class显示的指定c++类。

simple Queue{
parameters:
//参数
int capacity;
@class(mylib::queue);
@display(“i=block/queue”);
gates:
//端口(门)
input: in;
output: out;
}

如果有几个模块的c++实现类在同一个名称空间中,那么@class的更好的替代方法是@namespace属性。使用@namespace提供的c++名称空间将被附加到普通类名之前。在下面的例子中,c++类将是mylib::App、mylib::Router和mylib::Queue

@namespace(mylib);
simple App{

}
simple Router{

}
simple Queue{

}

@namespace属性不仅可以像上面示例那样在文件级别指定,还可以用于包。当放置在一个称为包的文件中。该名称空间将应用于该包及其以下的所有组件。
cSimpleModule是所有简单模块类(simple)的基类。
简单模块可以通过子类化来扩展(或专门化)。子类化的动机可以是将一些开放参数或门大小设置为一个固定的值,或者用一个不同的类替换c++类。现在,默认情况下,派生的NED模块类型将从其基类继承c++类,因此,如果希望它使用新类,需要写出@class,记住这一点很重要。
下面的展示了如何通过将参数设置为固定值(并保持c++类不变)来专门化模块:

simple Queue{
int a;
}
simple Boundered extends Queue{
a = 10;
}

编写一个PriorityQueue c++类,并希望拥有一个相应的NED类型,该类型派生自Queue。

simple PriorityQueue extends Queue
// wrong! still uses the Queue C++ class
{
}

应该如下:

simple PriorityQueue extends Queue
{
@class(PriorityQueue);
}
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_40634680/article/details/103470605

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ddsrgy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值