Compress support function definitions a bit
This commit is contained in:
parent
af3ee49f57
commit
38de6ebf3a
|
|
@ -64,41 +64,27 @@ void support_function::emit(std::ostream &of, int level) const
|
||||||
|
|
||||||
switch (type_) {
|
switch (type_) {
|
||||||
case SF_UNSIGNED_TO_BOOLEAN:
|
case SF_UNSIGNED_TO_BOOLEAN:
|
||||||
of << "(X : unsigned) return Boolean is";
|
of << "(X : unsigned) return Boolean is" << nl_string(level)
|
||||||
newline(of, level);
|
<< "begin" << nl_string(indent(level))
|
||||||
of << "begin";
|
<< "return X /= To_Unsigned(0, X'Length);" << nl_string(level);
|
||||||
newline(of, indent(level));
|
|
||||||
of << "return X /= To_Unsigned(0, X'Length);";
|
|
||||||
newline(of, level);
|
|
||||||
break;
|
break;
|
||||||
case SF_SIGNED_TO_BOOLEAN:
|
case SF_SIGNED_TO_BOOLEAN:
|
||||||
of << "(X : signed) return Boolean is";
|
of << "(X : signed) return Boolean is" << nl_string(level)
|
||||||
newline(of, level);
|
<< "begin" << nl_string(indent(level))
|
||||||
of << "begin";
|
<< "return X /= To_Signed(0, X'Length);" << nl_string (level);
|
||||||
newline(of, indent(level));
|
|
||||||
of << "return X /= To_Signed(0, X'Length);";
|
|
||||||
newline(of, level);
|
|
||||||
break;
|
break;
|
||||||
case SF_BOOLEAN_TO_LOGIC:
|
case SF_BOOLEAN_TO_LOGIC:
|
||||||
of << "(B : Boolean) return std_logic is";
|
of << "(B : Boolean) return std_logic is" << nl_string(level)
|
||||||
newline(of, level);
|
<< "begin" << nl_string(indent(level))
|
||||||
of << "begin";
|
<< "if B then" << nl_string(indent(indent(level)))
|
||||||
newline(of, indent(level));
|
<< "return '1'" << nl_string(indent(level))
|
||||||
of << "if B then";
|
<< "else" << nl_string(indent(indent(level)))
|
||||||
newline(of, indent(indent(level)));
|
<< "return '0'" << nl_string(indent(level))
|
||||||
of << "return '1'";
|
<< "end if;" << nl_string(level);
|
||||||
newline(of, indent(level));
|
|
||||||
of << "else";
|
|
||||||
newline(of, indent(indent(level)));
|
|
||||||
of << "return '0'";
|
|
||||||
newline(of, indent(level));
|
|
||||||
of << "end if;";
|
|
||||||
newline(of, level);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
of << "end function;";
|
of << "end function;" << nl_string(level);
|
||||||
newline(of, level);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,13 @@ int indent(int level)
|
||||||
return level + VHDL_INDENT;
|
return level + VHDL_INDENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string nl_string(int level)
|
||||||
|
{
|
||||||
|
std::ostringstream ss;
|
||||||
|
newline(ss, level);
|
||||||
|
return ss.str();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Emit a newline and indent to the correct level.
|
* Emit a newline and indent to the correct level.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ typedef std::list<vhdl_element*> element_list_t;
|
||||||
|
|
||||||
int indent(int level);
|
int indent(int level);
|
||||||
void newline(std::ostream &of, int level);
|
void newline(std::ostream &of, int level);
|
||||||
|
std::string nl_string(int level);
|
||||||
void blank_line(std::ostream &of, int level);
|
void blank_line(std::ostream &of, int level);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue