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

📄 qcalc.cpp

📁 Quantum Platform(QP) is a family of very lightweight, state machine-based frameworks for embedded sy
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        case Q_EXIT_SIG: {            me->updateState("negated2-EXIT");            return (QSTATE)0;        }        case OPER_SIG: {            if (((QCalcEvt *)e)->keyId == KEY_MINUS) {                ;                                         // explicitly ignore                return (QSTATE)0;                             // event handled            }            break;        }        case CE_SIG: {            Q_TRAN(&QCalc::opEntered);            return (QSTATE)0;        }        case DIGIT_0_SIG: {            Q_TRAN(&QCalc::zero2);            return (QSTATE)0;        }        case DIGIT_1_9_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc::int2);            return (QSTATE)0;        }        case POINT_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc::frac2);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc::on;}//............................................................................QSTATE QCalc::operand1(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            me->updateState("operand1-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            me->updateState("operand1-EXIT");            return (QSTATE)0;        }        case CE_SIG: {            me->clear();            Q_TRAN(&QCalc::begin);            return (QSTATE)0;        }        case OPER_SIG: {            me->operand1_ = strtod(me->display_, (char **)0);            me->opKey_ = ((QCalcEvt *)e)->keyId;            Q_TRAN(&QCalc::opEntered);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc::on;}//............................................................................QSTATE QCalc::zero1(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            me->updateState("zero1-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            me->updateState("zero1-EXIT");            return (QSTATE)0;        }        case DIGIT_0_SIG: {            ;                                             // explicitly ignore            return (QSTATE)0;        }        case DIGIT_1_9_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc::int1);            return (QSTATE)0;        }        case POINT_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc::frac1);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc::on;}//............................................................................QSTATE QCalc::int1(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            me->updateState("int1-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            me->updateState("int1-EXIT");            return (QSTATE)0;        }        case DIGIT_0_SIG:                        // intentionally fall through        case DIGIT_1_9_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            return (QSTATE)0;        }        case POINT_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc::frac1);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc::operand1;}//............................................................................QSTATE QCalc::frac1(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            me->updateState("frac1-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            me->updateState("frac1-EXIT");            return (QSTATE)0;        }        case DIGIT_0_SIG:                        // intentionally fall through        case DIGIT_1_9_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            return (QSTATE)0;        }        case POINT_SIG: {            ;                                             // explicitly ignore            return (QSTATE)0;        }    }    return (QSTATE)&QCalc::operand1;}//............................................................................QSTATE QCalc::opEntered(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            me->updateState("opEntered-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            me->updateState("opEntered-EXIT");            return (QSTATE)0;        }        case OPER_SIG: {            if (((QCalcEvt *)e)->keyId == KEY_MINUS) {                me->clear();                Q_TRAN(&QCalc::negated2);                return (QSTATE)0;                             // event handled            }            break;        }        case DIGIT_0_SIG: {            me->clear();            Q_TRAN(&QCalc::zero2);            return (QSTATE)0;        }        case DIGIT_1_9_SIG: {            me->clear();            me->insert(((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc::int2);            return (QSTATE)0;        }        case POINT_SIG: {            me->clear();            me->insert((int)'0');            me->insert((int)'.');            Q_TRAN(&QCalc::frac2);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc::on;}//............................................................................QSTATE QCalc::operand2(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            me->updateState("operand2-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            me->updateState("operand2-EXIT");            return (QSTATE)0;        }        case CE_SIG: {            me->clear();            Q_TRAN(&QCalc::opEntered);            return (QSTATE)0;        }        case OPER_SIG: {            me->operand2_ = strtod(me->display_, (char **)0);            if (me->eval()) {                me->operand1_ = strtod(me->display_, (char **)0);                me->opKey_ = ((QCalcEvt *)e)->keyId;                Q_TRAN(&QCalc::opEntered);            }            else {                Q_TRAN(&QCalc::error);            }            return (QSTATE)0;        }        case EQUALS_SIG: {            me->operand2_ = strtod(me->display_, (char **)0);            if (me->eval()) {                Q_TRAN(&QCalc::result);            }            else {                Q_TRAN(&QCalc::error);            }            return (QSTATE)0;        }    }    return (QSTATE)&QCalc::on;}//............................................................................QSTATE QCalc::zero2(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            me->updateState("zero2-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            me->updateState("zero2-EXIT");            return (QSTATE)0;        }        case DIGIT_0_SIG: {            ;                                             // explicitly ignore            return (QSTATE)0;        }        case DIGIT_1_9_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc::int2);            return (QSTATE)0;        }        case POINT_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc::frac2);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc::operand2;}//............................................................................QSTATE QCalc::int2(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            me->updateState("int2-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            me->updateState("int2-EXIT");            return (QSTATE)0;        }        case DIGIT_0_SIG:                        // intentionally fall through        case DIGIT_1_9_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            return (QSTATE)0;        }        case POINT_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc::frac2);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc::operand2;}//............................................................................QSTATE QCalc::frac2(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            me->updateState("frac2-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            me->updateState("frac2-EXIT");            return (QSTATE)0;        }        case DIGIT_0_SIG:                        // intentionally fall through        case DIGIT_1_9_SIG: {            me->insert(((QCalcEvt *)e)->keyId);            return (QSTATE)0;        }        case POINT_SIG: {            ;                                             // explicitly ignore            return (QSTATE)0;        }    }    return (QSTATE)&QCalc::operand2;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -