【问题标题】:Specman e: Is there a way to know how many values there is in an enumerated type?Specman e:有没有办法知道枚举类型中有多少个值?
【发布时间】:2018-12-26 08:13:33
【问题描述】:

我需要知道在我的验证环境中枚举类型中有多少个值。例如:

type my_type: [a, b, c, d];

我有办法即时检查my_type 中有 4 个不同的值吗?

感谢您的帮助

【问题讨论】:

    标签: specman e


    【解决方案1】:

    有一个all_values(...) 伪例程,它返回标量类型的所有可能值。您可以使用它来获取 enum 文字的数量:

    assert all_values(my_type).size() == 4;
    

    【讨论】:

      【解决方案2】:

      除了 Tudor 的建议之外,另一种方法是使用 set_of_values() 伪例程,它返回所有值的 set(而不是列表):

      set_of_values(my_type).uint_size()
      

      在某种程度上,使用set_of_values() 更好,因为all_values() 创建了一个新列表,这通常比一个集合消耗更多的内存。 uint_size() 将集合的大小返回为 uint。还有size(),但它返回int(bits: *),因此在这种情况下使用uint_size() 就足够了,因为枚举类型中的项目永远不会超过MAX_UINT

      【讨论】:

        【解决方案3】:

        还有——set_of_values()返回'set',你可以查询类型的最小/最大值,以及它的范围。

        例如:

         var x := set_of_values(my_type).uint_max();
        
         keep y ==  set_of_values(my_type).uint_max().as_a(my_type).as_a(my_type);
        
         print set_of_values(my_type).uint_min().as_a(my_type);
        

        【讨论】:

          猜你喜欢
          • 2013-05-21
          • 1970-01-01
          • 1970-01-01
          • 2015-03-17
          • 1970-01-01
          • 2019-03-03
          • 1970-01-01
          • 1970-01-01
          • 2011-03-24
          相关资源
          最近更新 更多