本文整理汇总了C++中Number::get_value方法的典型用法代码示例。如果您正苦于以下问题:C++ Number::get_value方法的具体用法?C++ Number::get_value怎么用?C++ Number::get_value使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Number
的用法示例。
在下文中一共展示了Number::get_value方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
shared_ptr<Block> netlist::ForState::unfold() {
// set up the initial assignment
if(!init) {
G_ENV->error(loc, "ELAB-FOR-0");
return shared_ptr<Block>();
} else if(!init->rexp->is_valuable()) {
G_ENV->error(init->loc, "ELAB-FOR-1", toString(*(init->rexp)));
return shared_ptr<Block>();
} else if(init->lval->size() != 1) {
G_ENV->error(init->loc, "ELAB-FOR-2", toString(*(init->lval)));
return shared_ptr<Block>();
}
VIdentifier& var = init->lval->front();
Number num = init->rexp->get_value();
// unfold the for statement
shared_ptr<Expression> m_cond(cond->deep_copy(NULL));
m_cond->replace_variable(var, num);
m_cond->reduce();
if(!m_cond->is_valuable()) {
G_ENV->error(cond->loc, "ELAB-FOR-3", toString(*cond));
return shared_ptr<Block>();
}
// the new body
shared_ptr<Block> newBody(new Block(body->loc));
while(m_cond->get_value().is_true()) {
// replace the index variable in the body
shared_ptr<Block> m_blk(body->deep_copy(NULL));
m_blk->replace_variable(var, num);
// set up the new name if needed
if(body->is_named()) {
string locPrefix = body->name.get_name() + num.get_value().get_str(10);
m_blk->name.add_prefix(locPrefix);
}
// unfold the block
m_blk = m_blk->unfold();
// copy the statements in the body to the new body
newBody->elab_add_block(m_blk);
// increment
if(!incr || incr->lval->size() != 1 || incr->lval->front() != var) {
G_ENV->error(cond->loc, "ELAB-FOR-4", toString(*incr));
return shared_ptr<Block>();
}
shared_ptr<Assign> m_incr(incr->deep_copy(NULL));
m_incr->rexp->replace_variable(var, num);
m_incr->rexp->reduce();
if(!m_incr->rexp->is_valuable()) {
G_ENV->error(cond->loc, "ELAB-FOR-4", toString(*incr));
return shared_ptr<Block>();
}
// update num
num = m_incr->rexp->get_value();
m_cond.reset(cond->deep_copy(NULL));
m_cond->replace_variable(var, num);
m_cond->reduce();
}
return newBody;
}