MicroModelicaCCompiler
4.5.3
|
Go to the documentation of this file.
26 #include <deps/sbg_graph/deps_graph.hpp>
43 class IndexDefinition {
61 Index(Expression exp);
63 void setMap(IR::Expression exp);
69 std::string
print()
const;
70 std::string
identifier(
bool recursive_use =
false)
const;
100 typedef vector<int>
Usage;
110 inline int end()
const {
return _end; };
111 inline int cEnd()
const {
return end() - 1; };
112 inline int step()
const {
return _step; };
116 std::string
beginExp(
bool convert_params,
bool c_index)
const;
117 std::string
endExp(
bool convert_params,
bool c_index)
const;
145 std::string
print(
bool range =
false,
bool c_index =
false,
bool convert_params =
false)
const;
153 std::string
block(
int dim = -1)
const;
154 int pos(std::string var);
156 std::string
iterator(std::string var,
int dim,
bool range_idx =
false);
165 std::string
in(std::vector<std::string> exps);
166 map<std::string, AST_Expression>
initExps();
169 void generate(SB::Set set,
int offset, std::vector<std::string> vars, std::vector<Expression> begin_exps = std::vector<Expression>(),
170 std::vector<Expression> end_exps = std::vector<Expression>());
192 bool checkRangeVariables(
string ife_idx,
string ifr_idx, set<string>& added_vars, vector<string>& old_keys,
int&
pos);
std::vector< int > initValues(Option< Range > range)
void addLocalVariables() const
void setExp(Expression exp)
map< std::string, AST_Expression > initExps()
ModelTable< std::string, Index > IndexTable
std::string getPrintDimensionVarsString() const
std::string print() const
RangeDefinitionTable _ranges
void applyUsage(Index usage)
void addRangeLocalVariables() const
bool operator==(const Index &other) const
std::string endExp(bool convert_params, bool c_index) const
std::string print(bool range=false, bool c_index=false, bool convert_params=false) const
void generate(SB::Set set, int offset, std::vector< std::string > vars, std::vector< Expression > begin_exps=std::vector< Expression >(), std::vector< Expression > end_exps=std::vector< Expression >())
~IndexDefinition()=default
std::vector< std::string > variables()
~RangeDefinition()=default
int rowSize(int dim) const
RangeDefinitionTable definition() const
Expression getExp(std::vector< Expression > exps, size_t pos)
bool testExpression(AST_Expression exp)
list< Expression > ExpressionList
bool isDimensionVar(std::string var)
void addRangeVariables(int i, string index) const
std::vector< std::string > getDimensionVars(bool range=false) const
std::string block(int dim=-1) const
std::string beginExp(bool convert_params, bool c_index) const
std::string getDimensionVarsString(bool range=false) const
friend std::ostream & operator<<(std::ostream &out, const Range &r)
bool intersect(Range other)
std::string iterator(int dim, bool range_idx=false)
bool checkRangeVariables(string ife_idx, string ifr_idx, set< string > &added_vars, vector< string > &old_keys, int &pos)
std::string generateExp(Expression exp, int limit, bool convert_params) const
std::string usageExp() const
std::string in(ExpressionList exps)
void setRangeDefinition(AST_ForIndexList fil, bool from_event=false)
Index replace(bool range_idx=false) const
std::string indexes() const
ModelTable< std::string, RangeDefinition > RangeDefinitionTable
void setMap(IR::Expression exp)
bool checkUsage(Index usage, Index def)
std::string modelicaExp() const
ModelTable< std::string, int > _index_pos
bool checkRangeVariable(string var, set< string > &added_vars, vector< string > &old_keys, int &pos)
std::vector< int > _row_size
std::string identifier(bool recursive_use=false) const
Util::Variable variable() const
bool hasConstant(int dim)
std::string getDimensionVar(int i, bool range=false) const
bool hasVariable(int dim)
void updateRangeDefinition(std::string index_def, RangeDefinition def, int pos)
void replace(Index ife_usage, Index ifr_usage=Index())
bool isVariable(std::string var)
Expression expression() const
map< int, IndexDefinition > _indexes
bool hasMergedDims() const
std::vector< std::string > getInitValues() const
std::vector< std::string > getIndexes() const
friend std::ostream & operator<<(std::ostream &out, const Index &i)