繁体   English   中英

Specman e:如何在结构列表中使用deep_copy?

[英]Specman e: How to use deep_copy on list of structs?

我有一个my_list_1这种方式定义的my_list_1 (结构列表):

struct my_struct {
    something[2] : list of int;
    something_else[2] : list of uint;
};
...
my_list_1[10] : list of my_struct;

我需要将此列表复制到方法中的局部变量:

foo_method() is {
    var my_list_2 : list of my_struct;
    my_list_2 = deep_copy(my_list_1);
    ...
};

我得到的编译错误:

*** Error: 'my_list_1' is of type 'list of my_struct', while
expecting type 'any_struct'.
...
        my_list_2 = deep_copy(my_list_1);

编写deep_copy()所有变体我尝试过导致编译错误...如何将结构列表复制到局部变量? 谢谢您的帮助。

您不能直接使用deep_copy(...)来复制列表。 如果您查看文档, deep_copy(...)将获取any_struct类型的单个参数并返回单个结构实例。 你必须在for each循环中使用它:

extend sys {
  my_list_1[10] : list of my_struct;

  run() is also {
    foo_method();
  };

  foo_method() is {
    var my_list_2 : list of my_struct;

    for each (elem) in my_list_1 {
      my_list_2.add(deep_copy(elem));
    };

    print my_list_1[0], my_list_2[0];
    print my_list_1[1], my_list_2[1];
};
};

从Specman 14.2开始,deep_copy()将复制任何东西。 我认为它还没有结束,但到了今年年底。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM