qcalc.cpp

来自「Quantum Platform(QP) is a family of very」· C++ 代码 · 共 581 行 · 第 1/2 页

CPP
581
字号
        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 + =
减小字号Ctrl + -
显示快捷键?