本文整理汇总了C++中typet::id_string方法的典型用法代码示例。如果您正苦于以下问题:C++ typet::id_string方法的具体用法?C++ typet::id_string怎么用?C++ typet::id_string使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类typet
的用法示例。
在下文中一共展示了typet::id_string方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: is_number
bool is_number(const typet &type)
{
const std::string &id=type.id_string();
return id=="rational" ||
id=="real" ||
id=="integer" ||
id=="natural" ||
id=="complex" ||
id=="unsignedbv" ||
id=="signedbv" ||
id=="floatbv" ||
id=="fixedbv";
}
示例2: gen_zero
exprt gen_zero(const typet &type)
{
exprt result;
const std::string type_id=type.id_string();
result=exprt("constant", type);
if(type_id=="rational" ||
type_id=="real" ||
type_id=="integer" ||
type_id=="natural" ||
type_id=="complex")
{
result.value("0");
}
else if(type_id=="unsignedbv" ||
type_id=="signedbv" ||
type_id=="floatbv" ||
type_id=="fixedbv" ||
type_id=="c_enum")
{
std::string value;
unsigned width=bv_width(type);
for(unsigned i=0; i<width; i++)
value+='0';
result.value(value);
}
else if(type_id=="bool")
{
result.make_false();
}
else if(type_id=="pointer")
{
result.value("NULL");
}
else
result.make_nil();
return result;
}
示例3: gen_one
exprt gen_one(const typet &type)
{
const std::string &type_id=type.id_string();
exprt result=exprt("constant", type);
if(type_id=="bool" ||
type_id=="rational" ||
type_id=="real" ||
type_id=="integer" ||
type_id=="natural" ||
type_id=="complex")
{
result.value("1");
}
else if(type_id=="unsignedbv" ||
type_id=="signedbv")
{
std::string value;
for(int i=0; i<atoi(type.width().c_str())-1; i++)
value+='0';
value+='1';
result.value(value);
}
else if(type_id=="fixedbv")
{
fixedbvt fixedbv;
fixedbv.spec=to_fixedbv_type(type);
fixedbv.from_integer(1);
result=fixedbv.to_expr();
}
else if(type_id=="floatbv")
{
std::cerr << "floatbv unsupported, sorry" << std::endl;
abort();
}
else
result.make_nil();
return result;
}
示例4: if
//.........这里部分代码省略.........
result+="S" + type.get_string(ID_width);
else if(type.id()==ID_unsignedbv)
result+="U" + type.get_string(ID_width);
else if(type.id()==ID_bool)
result+="B";
else if(type.id()==ID_integer)
result+="I";
else if(type.id()==ID_real)
result+="R";
else if(type.id()==ID_complex)
result+="C";
else if(type.id()==ID_floatbv)
result+="F" + type.get_string(ID_width);
else if(type.id()==ID_fixedbv)
result+="X" + type.get_string(ID_width);
else if(type.id()==ID_natural)
result+="N";
else if(type.id()==ID_pointer)
result+="*";
else if(type.id()==ID_reference)
result+="&";
else if(type.id()==ID_code)
{
const code_typet &t=to_code_type(type);
const code_typet::argumentst arguments=t.arguments();
result+="P(";
for(code_typet::argumentst::const_iterator it=arguments.begin();
it!=arguments.end();
it++)
{
result+=type2name(it->type());
result+="'" + id2string(it->get_identifier()) + "'|";
}
result.resize(result.size()-1);
result+=")";
}
else if(type.id()==ID_array)
{
const array_typet &t=to_array_type(type);
if(t.size().is_nil())
result+="ARR?";
else
result+="ARR"+t.size().get_string(ID_value);
}
else if(type.id()==ID_symbol)
{
result+="SYM#"+type.get_string(ID_identifier)+"#";
}
else if(type.id()==ID_struct ||
type.id()==ID_union)
{
if(type.id()==ID_struct) result+="ST";
if(type.id()==ID_union) result+="UN";
const struct_union_typet &t=to_struct_union_type(type);
const struct_union_typet::componentst &components = t.components();
result+="[";
for(struct_union_typet::componentst::const_iterator
it=components.begin();
it!=components.end();
it++)
{
if(it!=components.begin()) result+="|";
result+=type2name(it->type());
result+="'"+it->get_string(ID_name)+"'|";
}
result+="]";
}
else if(type.id()==ID_incomplete_struct)
result +="ST?";
else if(type.id()==ID_incomplete_union)
result +="UN?";
else if(type.id()==ID_c_enum)
result +="EN"+type.get_string(ID_width);
else if(type.id()==ID_incomplete_c_enum)
result +="EN?";
else if(type.id()==ID_c_bitfield)
result+="BF"+type.get_string(ID_size);
else if(type.id()==ID_vector)
result+="VEC"+type.get_string(ID_size);
else
throw (std::string("Unknown type '") +
type.id_string() +
"' encountered.");
if(type.has_subtype())
{
result+="{";
result+=type2name(type.subtype());
result+="}";
}
if(type.has_subtypes())
{
result+="$";
forall_subtypes(it, type)
{
result+=type2name(*it);
result+="|";
}
示例5: zero_initializer
bool c_typecheck_baset::zero_initializer(exprt &value, const typet &type) const
{
const std::string &type_id = type.id_string();
if(type_id == "bool")
{
value.make_false();
return false;
}
if(
type_id == "unsignedbv" || type_id == "signedbv" || type_id == "floatbv" ||
type_id == "fixedbv" || type_id == "pointer")
{
value = gen_zero(type);
return false;
}
else if(type_id == "code")
return false;
else if(type_id == "c_enum" || type_id == "incomplete_c_enum")
{
value = exprt("constant", type);
value.value(i2string(0));
return false;
}
else if(type_id == "array")
{
const array_typet &array_type = to_array_type(type);
exprt tmpval;
if(zero_initializer(tmpval, array_type.subtype()))
return true;
const exprt &size_expr = array_type.size();
if(size_expr.id() == "infinity")
{
}
else
{
mp_integer size;
if(to_integer(size_expr, size))
return true;
// Permit GCC zero sized arrays; disallow negative sized arrays.
// Cringe slightly when doing it though.
if(size < 0)
return true;
}
value = exprt("array_of", type);
value.move_to_operands(tmpval);
return false;
}
else if(type_id == "struct")
{
const irept::subt &components = type.components().get_sub();
value = exprt("struct", type);
forall_irep(it, components)
{
exprt tmp;
if(zero_initializer(tmp, (const typet &)it->type()))
return true;
value.move_to_operands(tmp);
}
return false;
}