📄 transact.cxx
字号:
} toplevel = current_transaction->toplevel; current_transaction = current_transaction->parent; } while (!result && (0 != current_transaction)); if (!result) { CYG_ASSERT_CLASSC(toplevel); for (conf_i = toplevel->conflicts.begin(); conf_i != toplevel->conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = true; break; } } } CYG_REPORT_RETVAL(result); return result;}CdlConflictCdlTransactionBody::get_conflict(CdlNode node, bool (*pFn)(CdlConflict)){ CYG_REPORT_FUNCNAMETYPE("CdlTransaction::get_conflict", "result %p"); CYG_REPORT_FUNCARG3XV(this, node, pFn); CYG_PRECONDITION_THISC(); CYG_PRECONDITION_CLASSC(node); CdlConflict result = 0; std::list<CdlConflict>::const_iterator conf_i; CdlTransaction current_transaction = this; CdlToplevel toplevel = this->toplevel; do { CYG_LOOP_INVARIANT_CLASSC(current_transaction); for (conf_i = current_transaction->new_conflicts.begin(); conf_i != current_transaction->new_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = *conf_i; break; } } toplevel = current_transaction->toplevel; current_transaction = current_transaction->parent; } while ((0 == result) && (0 != current_transaction)); if (0 == result) { CYG_ASSERT_CLASSC(toplevel); for (conf_i = toplevel->conflicts.begin(); conf_i != toplevel->conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = *conf_i; break; } } } CYG_REPORT_RETVAL(result); return result;}voidCdlTransactionBody::get_conflicts(CdlNode node, bool (*pFn)(CdlConflict), std::vector<CdlConflict>& result){ CYG_REPORT_FUNCNAME("CdlTransaction::get_conflicts"); CYG_REPORT_FUNCARG3XV(this, node, pFn); CYG_PRECONDITION_THISC(); CYG_PRECONDITION_CLASSC(node); std::list<CdlConflict>::const_iterator conf_i; CdlTransaction current_transaction = this; CdlToplevel toplevel = this->toplevel; do { CYG_LOOP_INVARIANT_CLASSC(current_transaction); for (conf_i = current_transaction->new_conflicts.begin(); conf_i != current_transaction->new_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result.push_back(*conf_i); } } toplevel = current_transaction->toplevel; current_transaction = current_transaction->parent; } while (0 != current_transaction); CYG_ASSERT_CLASSC(toplevel); for (conf_i = toplevel->conflicts.begin(); conf_i != toplevel->conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result.push_back(*conf_i); } } CYG_REPORT_RETURN();}boolCdlTransactionBody::has_conflict(CdlNode node, CdlProperty prop, bool (*pFn)(CdlConflict)){ CYG_REPORT_FUNCNAMETYPE("CdlTransaction::has_conflict", "result %d"); CYG_REPORT_FUNCARG4XV(this, node, prop, pFn); CYG_PRECONDITION_THISC(); CYG_PRECONDITION_CLASSC(node); CYG_PRECONDITION_CLASSC(prop); bool result = false; std::list<CdlConflict>::const_iterator conf_i; CdlTransaction current_transaction = this; CdlToplevel toplevel = this->toplevel; do { CYG_LOOP_INVARIANT_CLASSC(current_transaction); for (conf_i = current_transaction->new_conflicts.begin(); conf_i != current_transaction->new_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && (prop == (*conf_i)->get_property()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = true; break; } } toplevel = current_transaction->toplevel; current_transaction = current_transaction->parent; } while (!result && (0 != current_transaction)); if (!result) { CYG_ASSERT_CLASSC(toplevel); for (conf_i = toplevel->conflicts.begin(); conf_i != toplevel->conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && (prop == (*conf_i)->get_property()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = true; break; } } } CYG_REPORT_RETVAL(result); return result;}CdlConflictCdlTransactionBody::get_conflict(CdlNode node, CdlProperty prop, bool (*pFn)(CdlConflict)){ CYG_REPORT_FUNCNAMETYPE("CdlTransaction::get_conflict", "result %p"); CYG_REPORT_FUNCARG4XV(this, node, prop, pFn); CYG_PRECONDITION_THISC(); CYG_PRECONDITION_CLASSC(node); CYG_PRECONDITION_CLASSC(prop); CdlConflict result = 0; std::list<CdlConflict>::const_iterator conf_i; CdlTransaction current_transaction = this; CdlToplevel toplevel = this->toplevel; do { CYG_LOOP_INVARIANT_CLASSC(current_transaction); for (conf_i = current_transaction->new_conflicts.begin(); conf_i != current_transaction->new_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && (prop == (*conf_i)->get_property()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = *conf_i; break; } } toplevel = current_transaction->toplevel; current_transaction = current_transaction->parent; } while ((0 == result) && (0 != current_transaction)); if (0 == result) { CYG_ASSERT_CLASSC(toplevel); for (conf_i = toplevel->conflicts.begin(); conf_i != toplevel->conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && (prop == (*conf_i)->get_property()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = *conf_i; break; } } } CYG_REPORT_RETVAL(result); return result;}voidCdlTransactionBody::get_conflicts(CdlNode node, CdlProperty prop, bool (*pFn)(CdlConflict), std::vector<CdlConflict>& result){ CYG_REPORT_FUNCNAME("CdlTransaction::get_conflict"); CYG_REPORT_FUNCARG4XV(this, node, prop, pFn); CYG_PRECONDITION_THISC(); CYG_PRECONDITION_CLASSC(node); CYG_PRECONDITION_CLASSC(prop); std::list<CdlConflict>::const_iterator conf_i; CdlTransaction current_transaction = this; CdlToplevel toplevel = this->toplevel; do { CYG_LOOP_INVARIANT_CLASSC(current_transaction); for (conf_i = current_transaction->new_conflicts.begin(); conf_i != current_transaction->new_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && (prop == (*conf_i)->get_property()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result.push_back(*conf_i); } } toplevel = current_transaction->toplevel; current_transaction = current_transaction->parent; } while (0 != current_transaction); CYG_ASSERT_CLASSC(toplevel); for (conf_i = toplevel->conflicts.begin(); conf_i != toplevel->conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && (prop == (*conf_i)->get_property()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result.push_back(*conf_i); } } CYG_REPORT_RETURN();}//}}}//{{{ get_structural_conflict() etc // ----------------------------------------------------------------------------boolCdlTransactionBody::has_structural_conflict(CdlNode node, bool (*pFn)(CdlConflict)){ CYG_REPORT_FUNCNAMETYPE("CdlTransaction::has_structural_conflict", "result %d"); CYG_REPORT_FUNCARG3XV(this, node, pFn); CYG_PRECONDITION_THISC(); CYG_PRECONDITION_CLASSC(node); // Because it is necessary to check whether or not any given // conflict has been cleared in the current transaction or any // parent transaction, recursion into the parent is not // appropriate. bool result = false; std::list<CdlConflict>::const_iterator conf_i; CdlTransaction current_transaction = this; CdlToplevel toplevel = this->toplevel; do { CYG_LOOP_INVARIANT_CLASSC(current_transaction); for (conf_i = current_transaction->new_structural_conflicts.begin(); conf_i != current_transaction->new_structural_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = true; break; } } toplevel = current_transaction->toplevel; current_transaction = current_transaction->parent; } while (!result && (0 != current_transaction)); if (!result) { CYG_ASSERT_CLASSC(toplevel); for (conf_i = toplevel->structural_conflicts.begin(); conf_i != toplevel->structural_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = true; break; } } } CYG_REPORT_RETVAL(result); return result;}CdlConflictCdlTransactionBody::get_structural_conflict(CdlNode node, bool (*pFn)(CdlConflict)){ CYG_REPORT_FUNCNAMETYPE("CdlTransaction::get_structural_conflict", "result %p"); CYG_REPORT_FUNCARG3XV(this, node, pFn); CYG_PRECONDITION_THISC(); CYG_PRECONDITION_CLASSC(node); CdlConflict result = 0; std::list<CdlConflict>::const_iterator conf_i; CdlTransaction current_transaction = this; CdlToplevel toplevel = this->toplevel; do { CYG_LOOP_INVARIANT_CLASSC(current_transaction); for (conf_i = current_transaction->new_structural_conflicts.begin(); conf_i != current_transaction->new_structural_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = *conf_i; break; } } toplevel = current_transaction->toplevel; current_transaction = current_transaction->parent; } while ((0 == result) && (0 != current_transaction)); if (0 == result) { CYG_ASSERT_CLASSC(toplevel); for (conf_i = toplevel->structural_conflicts.begin(); conf_i != toplevel->structural_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result = *conf_i; break; } } } CYG_REPORT_RETVAL(result); return result;}voidCdlTransactionBody::get_structural_conflicts(CdlNode node, bool (*pFn)(CdlConflict), std::vector<CdlConflict>& result){ CYG_REPORT_FUNCNAME("CdlTransaction::get_structural_conflicts"); CYG_REPORT_FUNCARG3XV(this, node, pFn); CYG_PRECONDITION_THISC(); CYG_PRECONDITION_CLASSC(node); std::list<CdlConflict>::const_iterator conf_i; CdlTransaction current_transaction = this; CdlToplevel toplevel = this->toplevel; do { CYG_LOOP_INVARIANT_CLASSC(current_transaction); for (conf_i = current_transaction->new_structural_conflicts.begin(); conf_i != current_transaction->new_structural_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result.push_back(*conf_i); } } toplevel = current_transaction->toplevel; current_transaction = current_transaction->parent; } while (0 != current_transaction); CYG_ASSERT_CLASSC(toplevel); for (conf_i = toplevel->structural_conflicts.begin(); conf_i != toplevel->structural_conflicts.end(); conf_i++) { if ((node == (*conf_i)->get_node()) && !(this->has_conflict_been_cleared(*conf_i)) && (*pFn)(*conf_i)) { result.push_back(*conf_i); } } CYG_REPORT_RETURN();}boolCdlTransactionBody::has_structural_conflict(CdlNode node, CdlProperty prop, bool (*pFn)(CdlConflict)){ CYG_REPORT_FUNCNAMETYPE("CdlTransaction::has_structural_conflict", "result %d"); CYG_REPORT_FUNCARG4XV(this, node, prop, pFn); CYG_PRECONDITION_THISC(); CYG_PRECONDITION_CLASSC(node); CYG_PRECONDITION_CLASSC(prop);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -