クラス sc_core::vcd_signed_long_trace

sc_core::vcd_signed_long_traceに対する継承グラフ

Inheritance graph
[凡例]

すべてのメンバ一覧

Public メソッド

 vcd_signed_long_trace (const long &object, const std::string &name_, const std::string &vcd_name_, int width_)
void write (FILE *f)
bool changed ()

Protected 変数

const long & object
long old_value
unsigned long mask


説明

sc_vcd_trace.cpp1489 行で定義されています。


コンストラクタとデストラクタ

sc_core::vcd_signed_long_trace::vcd_signed_long_trace ( const long &  object,
const std::string &  name_,
const std::string &  vcd_name_,
int  width_ 
)

sc_vcd_trace.cpp1505 行で定義されています。

01509 : vcd_trace(name_, vcd_name_), object(object_)
01510 {
01511     bit_width = width_;
01512     if (bit_width < 32) {
01513         mask = ~(-1 << bit_width);
01514     } else {
01515         mask = 0xffffffff;
01516     }
01517 
01518     vcd_var_typ_name = "wire";
01519     old_value = object;
01520 }


関数

void sc_core::vcd_signed_long_trace::write ( FILE *  f  )  [virtual]

sc_core::vcd_traceを実装しています。

sc_vcd_trace.cpp1529 行で定義されています。

01530 {
01531     char rawdata[1000];
01532     char compdata[1000];
01533     int bitindex;
01534 
01535     // Check for overflow
01536     if (((unsigned long) object & mask) != (unsigned long) object) {
01537         for (bitindex = 0; bitindex < bit_width; bitindex++){
01538             rawdata[bitindex] = 'x';
01539         }
01540     }
01541     else{
01542         unsigned bit_mask = 1 << (bit_width-1);
01543         for (bitindex = 0; bitindex < bit_width; bitindex++) {
01544             rawdata[bitindex] = (object & bit_mask)? '1' : '0';
01545             bit_mask = bit_mask >> 1;
01546         }
01547     }
01548     rawdata[bitindex] = '\0';
01549     compose_data_line(rawdata, compdata);
01550     std::fputs(compdata, f);
01551     old_value = object;
01552 }

bool sc_core::vcd_signed_long_trace::changed (  )  [virtual]

sc_core::vcd_traceを実装しています。

sc_vcd_trace.cpp1523 行で定義されています。

01524 {
01525     return object != old_value;
01526 }


変数

const long& sc_core::vcd_signed_long_trace::object [protected]

sc_vcd_trace.cpp1499 行で定義されています。

sc_vcd_trace.cpp1500 行で定義されています。

unsigned long sc_core::vcd_signed_long_trace::mask [protected]

sc_vcd_trace.cpp1501 行で定義されています。


このクラスの説明は次のファイルから生成されました:

SystemCに対してFri Jun 6 20:12:11 2008に生成されました。  doxygen 1.5.6