⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transact.cxx

📁 移植到WLIT项目的redboot源代码
💻 CXX
📖 第 1 页 / 共 5 页
字号:
        }                    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 + -