本文整理汇总了C++中graph::get_iter_rep方法的典型用法代码示例。如果您正苦于以下问题:C++ graph::get_iter_rep方法的具体用法?C++ graph::get_iter_rep怎么用?C++ graph::get_iter_rep使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类graph
的用法示例。
在下文中一共展示了graph::get_iter_rep方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: update_iters_sg
void update_iters_sg(graph &g, subgraph *sg) {
vector<iterOp_t>::iterator i;
for (i = sg->sg_iterator.conditions.begin();
i != sg->sg_iterator.conditions.end(); ++i) {
vector<string> separate;
boost::split(separate, i->right, boost::is_any_of("+"));
string newString = g.get_iter_rep(separate[0]);
for (unsigned int k=1; k < separate.size(); ++k) {
newString += "+" + g.get_iter_rep(separate[k]);
}
i->right = newString;
}
for (i = sg->sg_iterator.updates.begin();
i != sg->sg_iterator.updates.end(); ++i) {
vector<string> separate;
boost::split(separate, i->right, boost::is_any_of("+"));
string newString = g.get_iter_rep(separate[0]);
for (unsigned int k = 1; k < separate.size(); ++k) {
newString += "+" + g.get_iter_rep(separate[k]);
}
i->right = newString;
}
for (auto i : sg->subs) {
update_iters_sg(g, i);
}
}
示例2: get_latest
void get_latest(type &ct, graph &g) {
type *t = &ct;
while (t) {
if (t->k == scalar)
break;
t->dim.dim = g.get_iter_rep(t->dim.dim);
t->dim.step = g.get_iter_rep(t->dim.step);
string tmp = g.get_iter_rep(t->dim.lead_dim);
t->dim.lead_dim = g.get_iter_rep(tmp);
t->dim.base_rows = g.get_iter_rep(t->dim.base_rows);
t->dim.base_cols = g.get_iter_rep(t->dim.base_cols);
t = t->t;
}
}
示例3: register_type
void register_type(type &r, graph &g) {
type *t = &r;
while (t) {
g.register_iter(t->dim.dim);
t->dim.dim = g.get_iter_rep(t->dim.dim);
t = t->t;
}
}
示例4: merge_all_types
void merge_all_types(type &l, type &r, graph &g) {
if (l.height != r.height)
std::cout << "ERROR: build_graph.cpp: merge_all_types(): unexpected types\n";
type *pl = &l;
type *pr = &r;
while (pl && pr) {
g.merge_iters(pl->dim.dim, pr->dim.dim);
pl->dim.dim = g.get_iter_rep(pl->dim.dim);
pr->dim.dim = g.get_iter_rep(pr->dim.dim);
pl = pl->t;
pr = pr->t;
}
}
示例5: mult_sizes
void mult_sizes(type *u, type *l, type *r, graph &g) {
if (l->k == row && r->k == column) {
// operands
g.merge_iters(l->dim.dim, r->dim.dim);
r->dim.dim = g.get_iter_rep(r->dim.dim);
l->dim.dim = g.get_iter_rep(l->dim.dim);
mult_sizes(u,l->t,r->t,g);
}
else if (l->k == column && r->k == row) {
if (u->k == row) {
g.merge_iters(r->dim.dim,u->dim.dim);
r->dim.dim = g.get_iter_rep(u->dim.dim);
u->dim.dim = g.get_iter_rep(u->dim.dim);
mult_sizes(u->t, l, r->t, g);
}
else {
g.merge_iters(l->dim.dim,u->dim.dim);
l->dim.dim = g.get_iter_rep(u->dim.dim);
u->dim.dim = g.get_iter_rep(u->dim.dim);
mult_sizes(u->t, l->t, r, g);
}
}
else if ((l->k == scalar && r->k == column)
|| (l->k == scalar && r->k == row)) {
// scaling
g.merge_iters(r->dim.dim,u->dim.dim);
r->dim.dim = g.get_iter_rep(r->dim.dim);
u->dim.dim = g.get_iter_rep(u->dim.dim);
}
else if ((l->k == row && r->k == scalar)
|| (l->k == column && r->k == scalar)) {
// scaling
g.merge_iters(l->dim.dim, u->dim.dim);
l->dim.dim = g.get_iter_rep(l->dim.dim);
u->dim.dim = g.get_iter_rep(u->dim.dim);
}
else if (l->k == row && r->k == row) {
if (u->k == row) {
// result and one or other operand
g.merge_iters(u->dim.dim, r->dim.dim);
r->dim.dim = g.get_iter_rep(r->dim.dim);
u->dim.dim = g.get_iter_rep(u->dim.dim);
mult_sizes(u->t,l,r->t,g);
}
else if (u->k == column) {
// k
g.merge_iters(l->dim.dim, r->t->dim.dim);
r->t->dim.dim = g.get_iter_rep(l->dim.dim);
l->dim.dim = g.get_iter_rep(l->dim.dim);
type *tmp = new type(*(r->t));
if (tmp->k == row)
tmp->k = column;
else
tmp->k = row;
tmp->dim.dim = r->dim.dim;
tmp->dim.step = r->dim.step;
mult_sizes(u,l->t,tmp,g);
delete tmp;
}
}
else if (l->k == column && r->k == column) {
if (u->k == row) {
// k
g.merge_iters(l->t->dim.dim, r->dim.dim);
l->t->dim.dim = g.get_iter_rep(r->dim.dim);
r->dim.dim = g.get_iter_rep(r->dim.dim);
type *tmp = new type(*(l->t));
if (tmp->k == row)
tmp->k = column;
else
tmp->k = row;
tmp->dim.dim = l->dim.dim;
tmp->dim.step = l->dim.step;
mult_sizes(u,tmp,r->t,g);
delete tmp;
}
else if (u->k == column) {
// result and one or other operand
g.merge_iters(u->dim.dim, l->dim.dim);
l->dim.dim = g.get_iter_rep(u->dim.dim);
u->dim.dim = g.get_iter_rep(u->dim.dim);
mult_sizes(u->t,l->t,r,g);
}
}
else {
// must be be scalar * scalar
return;
}
}