使用@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