diff --git a/bitbutton.h b/bitbutton.h index da4fa07..594279f 100644 --- a/bitbutton.h +++ b/bitbutton.h @@ -1,42 +1,42 @@ /* Copyright (C) 2012 - 2013 Evan Teran evan.teran@gmail.com Copyright (C) 2006 Michel Marti mma@objectxp.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef BITBUTTON_H_20120104_ #define BITBUTTON_H_20120104_ #include class BitButton : public QAbstractButton { Q_OBJECT public: explicit BitButton(QWidget *parent = 0); bool isOn() const; void setOn(bool value); protected: - void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *event) override; private: bool on_; }; #endif diff --git a/kcalc.h b/kcalc.h index 15d5549..3668436 100644 --- a/kcalc.h +++ b/kcalc.h @@ -1,283 +1,283 @@ /* Copyright (C) 2001 - 2013 Evan Teran evan.teran@gmail.com Copyright (C) 1996 - 2000 Bernd Johannes Wuebben wuebben@kde.org This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef KCALC_H_ #define KCALC_H_ class Constants; class QButtonGroup; class KToggleAction; class KCalcConstMenu; class KCalcStatusBar; /* Kcalc basically consist of a class for the GUI (here), a class for the display (dlabel.h), and one for the mathematics core (kcalc_core.h). When for example '+' is pressed, one sends the contents of the Display and the '+' to the core via "core.Plus(DISPLAY_AMOUNT)". This only updates the core. To bring the changes to the display, use afterwards "UpdateDisplay(true)". "UpdateDisplay(true)" means that the amount to be displayed should be taken from the core (get the result of some operation that was performed), "UpdateDisplay(false)" has already the information, what to be display (e.g. user is typing in a number). Note that in the last case the core does not know the number typed in until some operation button is pressed, e.g. "core.Plus(display_number)". */ #include "kcalc_core.h" #include "kcalc_button.h" #include "kcalc_const_button.h" #include "ui_kcalc.h" #include "ui_general.h" #include "ui_fonts.h" #include "ui_constants.h" #include "ui_colors.h" #include #include class General: public QWidget, public Ui::General { public: explicit General(QWidget *parent) : QWidget(parent) { setupUi(this); } }; class Fonts: public QWidget, public Ui::Fonts { public: explicit Fonts(QWidget *parent) : QWidget(parent) { setupUi(this); } }; class Constants : public QWidget, public Ui::Constants { public: explicit Constants(QWidget *parent) : QWidget(parent) { setupUi(this); } }; class Colors : public QWidget, public Ui::Colors { public: explicit Colors(QWidget *parent) : QWidget(parent) { setupUi(this); } }; class KCalculator : public KXmlGuiWindow, private Ui::KCalculator { Q_OBJECT public: explicit KCalculator(QWidget *parent = 0); ~KCalculator(); Q_SIGNALS: void switchShift(bool); void switchMode(ButtonModeFlags, bool); void switchShowAccels(bool); public: enum UpdateFlag { UPDATE_FROM_CORE = 1, UPDATE_STORE_RESULT = 2 }; Q_DECLARE_FLAGS(UpdateFlags, UpdateFlag) private: - bool eventFilter(QObject *o, QEvent *e) Q_DECL_OVERRIDE; - bool event(QEvent *e) Q_DECL_OVERRIDE; + bool eventFilter(QObject *o, QEvent *e) override; + bool event(QEvent *e) override; void updateGeometry(); void setupMainActions(); void setupKeys(); void setupNumberKeys(); void setupRightKeypad(); void setupNumericKeypad(); void setupLogicKeys(); void setupScientificKeys(); void setupStatisticKeys(); void setupConstantsKeys(); void setupMiscKeys(); - void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; - void keyReleaseEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *e) override; + void keyReleaseEvent(QKeyEvent *e) override; void setPrecision(); void setAngle(); void setBase(); void updateDisplay(UpdateFlags flags); KCalcStatusBar *statusBar(); // button sets void showMemButtons(bool toggled); void showStatButtons(bool toggled); void showScienceButtons(bool toggled); void showLogicButtons(bool toggled); KCalcConstMenu *createConstantsMenu(); protected Q_SLOTS: void changeButtonNames(); void updateSettings(); void setColors(); void setFonts(); void EnterEqual(); void showSettings(); // Mode void slotSetSimpleMode(); void slotSetScienceMode(); void slotSetStatisticMode(); void slotSetNumeralMode(); void slotConstantsShow(bool toggled); void slotBitsetshow(bool toggled); void slotAngleSelected(int mode); void slotBaseSelected(int base); void slotNumberclicked(int number_clicked); void slotEEclicked(); void slotShifttoggled(bool myboolean); void slotMemRecallclicked(); void slotMemStoreclicked(); void slotSinclicked(); void slotPlusMinusclicked(); void slotMemPlusMinusclicked(); void slotCosclicked(); void slotReciclicked(); void slotTanclicked(); void slotFactorialclicked(); void slotLogclicked(); void slotSquareclicked(); void slotCubeclicked(); void slotLnclicked(); void slotPowerclicked(); void slotMemClearclicked(); void slotClearclicked(); void slotAllClearclicked(); void slotParenOpenclicked(); void slotParenCloseclicked(); void slotANDclicked(); void slotMultiplicationclicked(); void slotDivisionclicked(); void slotORclicked(); void slotXORclicked(); void slotPlusclicked(); void slotMinusclicked(); void slotLeftShiftclicked(); void slotRightShiftclicked(); void slotPeriodclicked(); void slotEqualclicked(); void slotPercentclicked(); void slotNegateclicked(); void slotModclicked(); void slotStatNumclicked(); void slotStatMeanclicked(); void slotStatStdDevclicked(); void slotStatMedianclicked(); void slotStatDataInputclicked(); void slotStatClearDataclicked(); void slotHyptoggled(bool flag); void slotConstclicked(int); void slotBackspaceclicked(); void slotConstantToDisplay(const science_constant &const_chosen); void slotChooseScientificConst0(const science_constant &); void slotChooseScientificConst1(const science_constant &); void slotChooseScientificConst2(const science_constant &); void slotChooseScientificConst3(const science_constant &); void slotChooseScientificConst4(const science_constant &); void slotChooseScientificConst5(const science_constant &); void slotBitsetChanged(quint64); void slotUpdateBitset(const KNumber &); private: enum StatusField { ShiftField = 0, BaseField, AngleField, MemField }; enum AngleMode { DegMode = 0, RadMode, GradMode }; enum BaseMode { BinMode = 2, OctMode = 8, DecMode = 10, HexMode = 16 }; private: bool shift_mode_; bool hyp_mode_; KNumber memory_num_; int angle_mode_; // angle modes for trigonometric values KCalcConstMenu* constants_menu_; Constants* constants_; // this is the dialog for configuring const buttons QButtonGroup* angle_choose_group_; QButtonGroup* base_choose_group_; // num_button_group_: 0-9 = digits, 0xA-0xF = hex-keys QButtonGroup* num_button_group_; QList logic_buttons_; QList scientific_buttons_; QList stat_buttons_; QList const_buttons_; KToggleAction *action_bitset_show_; KToggleAction *action_constants_show_; KToggleAction *action_mode_simple_; KToggleAction *action_mode_science_; KToggleAction *action_mode_statistic_; KToggleAction *action_mode_numeral_; QList function_button_list_; QList stat_button_list_; QList mem_button_list_; QList operation_button_list_; CalcEngine core; }; Q_DECLARE_OPERATORS_FOR_FLAGS(KCalculator::UpdateFlags) #endif diff --git a/kcalc_button.h b/kcalc_button.h index 0287e47..68c262f 100644 --- a/kcalc_button.h +++ b/kcalc_button.h @@ -1,92 +1,92 @@ /* Copyright (C) 2001 - 2013 Evan Teran evan.teran@gmail.com Copyright (C) 2003 - 2005 Klaus Niederkrueger kniederk@math.uni-koeln.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef KCALC_BUTTON_H_ #define KCALC_BUTTON_H_ #include #include // The class KCalcButton is an overridden QPushButton. It offers extra // functionality e.g. text can be richtext, and the button can be // told to display its shortcuts in the label, but the most important // thing is that the button may have several modes with corresponding // labels and tooltips. When one switches modes, the corresponding // label is displayed. enum ButtonModeFlags { ModeNormal = 0, ModeShift = 1, ModeHyperbolic = 2 }; // Each kcalc button can be in one of several modes. // The following class describes label, tooltip etc. for each mode... class ButtonMode { public: ButtonMode() { } ButtonMode(const QString &label, const QString &tooltip) : label(label), tooltip(tooltip) { } QString label; QString tooltip; }; class KCalcButton : public QPushButton { Q_OBJECT public: explicit KCalcButton(QWidget *parent); KCalcButton(const QString &label, QWidget *parent, const QString &tooltip = QString()); void addMode(ButtonModeFlags mode, const QString &label, const QString &tooltip); - QSize sizeHint() const; // reimp + QSize sizeHint() const override; void setFont(const QFont &fnt); void setText(const QString &text); // reimp void setToolTip(const QString &tip); // reimp public Q_SLOTS: void slotSetMode(ButtonModeFlags mode, bool flag); void slotSetAccelDisplayMode(bool flag); protected: - void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *e) override; private: void calcSizeHint(); private: bool show_shortcut_mode_; ButtonModeFlags mode_flags_; QMap mode_; QSize size_; }; #endif diff --git a/kcalcdisplay.h b/kcalcdisplay.h index 6b92892..b6ac035 100644 --- a/kcalcdisplay.h +++ b/kcalcdisplay.h @@ -1,156 +1,156 @@ /* Copyright (C) 2001 - 2013 Evan Teran evan.teran@gmail.com Copyright (C) 1996 - 2000 Bernd Johannes Wuebben wuebben@kde.org This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef KCALCDISPLAY_H_ #define KCALCDISPLAY_H_ #include #include #include "knumber.h" class CalcEngine; class QTimer; class QStyleOptionFrame; #define NUM_STATUS_TEXT 4 /* This class provides a pocket calculator display. The display has implicitely two major modes: One is for editing and one is purely for displaying. When one uses "setAmount", the given amount is displayed, and the amount which was possibly typed in before is lost. At the same time this new value can not be modified. On the other hand, "addNewChar" adds a new digit to the amount that is being typed in. If "setAmount" was used before, the display is cleared and a new input starts. TODO: Check overflows, number of digits and such... */ enum NumBase { NB_BINARY = 2, NB_OCTAL = 8, NB_DECIMAL = 10, NB_HEX = 16 }; class KCalcDisplay : public QFrame { Q_OBJECT public: explicit KCalcDisplay(QWidget *parent = 0); ~KCalcDisplay(); enum Event { EventReset, // resets display EventClear, // if no error reset display EventError, EventChangeSign }; bool sendEvent(Event event); void deleteLastDigit(); const KNumber &getAmount() const; void newCharacter(const QChar new_char); bool setAmount(const KNumber &new_amount); int setBase(NumBase new_base); void setBeep(bool flag); void setGroupDigits(bool flag); void setTwosComplement(bool flag); void setBinaryGrouping(int digits); void setOctalGrouping(int digits); void setHexadecimalGrouping(int digits); void setFixedPrecision(int precision); void setPrecision(int precision); void setText(const QString &string); QString formatDecimalNumber(QString string); QString groupDigits(const QString &displayString, int numDigits); QString text() const; void updateDisplay(); void setStatusText(int i, const QString &text); - QSize sizeHint() const Q_DECL_OVERRIDE; + QSize sizeHint() const override; void changeSettings(); void enterDigit(int data); void updateFromCore(const CalcEngine &core, bool store_result_in_history = false); public Q_SLOTS: void slotCut(); void slotCopy(); void slotPaste(bool bClipboard = true); Q_SIGNALS: void clicked(); void changedText(const QString &); void changedAmount(const KNumber &); protected: - void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; - void paintEvent(QPaintEvent *p) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *) override; + void paintEvent(QPaintEvent *p) override; private: bool changeSign(); void invertColors(); void initStyleOption(QStyleOptionFrame *option) const; private Q_SLOTS: void slotSelectionTimedOut(); void slotDisplaySelected(); void slotHistoryBack(); void slotHistoryForward(); private: QString text_; bool beep_; bool groupdigits_; bool twoscomplement_; int binaryGrouping_; int octalGrouping_; int hexadecimalGrouping_; int button_; bool lit_; NumBase num_base_; int precision_; int fixed_precision_; // "-1" = no fixed_precision KNumber display_amount_; QVector history_list_; int history_index_; // only used for input of new numbers bool eestate_; bool period_; bool neg_sign_; QString str_int_; QString str_int_exp_; QString str_status_[NUM_STATUS_TEXT]; QTimer* selection_timer_; }; #endif diff --git a/knumber/knumber_error.h b/knumber/knumber_error.h index 2fd5ce7..23178c3 100644 --- a/knumber/knumber_error.h +++ b/knumber/knumber_error.h @@ -1,125 +1,125 @@ /* Copyright (C) 2001 - 2013 Evan Teran evan.teran@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef KNUMBER_ERROR_H_ #define KNUMBER_ERROR_H_ #include "knumber_base.h" class KNumber; namespace detail { class knumber_error : public knumber_base { friend class ::KNumber; friend class knumber_integer; friend class knumber_fraction; friend class knumber_float; public: enum Error { ERROR_UNDEFINED, ERROR_POS_INFINITY, ERROR_NEG_INFINITY }; public: explicit knumber_error(const QString &s); explicit knumber_error(Error e); knumber_error(); virtual ~knumber_error(); public: - QString toString(int precision) const Q_DECL_OVERRIDE; - quint64 toUint64() const Q_DECL_OVERRIDE; - qint64 toInt64() const Q_DECL_OVERRIDE; + QString toString(int precision) const override; + quint64 toUint64() const override; + qint64 toInt64() const override; public: - bool is_integer() const Q_DECL_OVERRIDE; - bool is_zero() const Q_DECL_OVERRIDE; - int sign() const Q_DECL_OVERRIDE; + bool is_integer() const override; + bool is_zero() const override; + int sign() const override; public: - knumber_base *add(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *sub(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *mul(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *div(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *mod(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *add(knumber_base *rhs) override; + knumber_base *sub(knumber_base *rhs) override; + knumber_base *mul(knumber_base *rhs) override; + knumber_base *div(knumber_base *rhs) override; + knumber_base *mod(knumber_base *rhs) override; public: - knumber_base *bitwise_and(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_xor(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_or(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_shift(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *bitwise_and(knumber_base *rhs) override; + knumber_base *bitwise_xor(knumber_base *rhs) override; + knumber_base *bitwise_or(knumber_base *rhs) override; + knumber_base *bitwise_shift(knumber_base *rhs) override; public: - knumber_base *pow(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *neg() Q_DECL_OVERRIDE; - knumber_base *cmp() Q_DECL_OVERRIDE; - knumber_base *abs() Q_DECL_OVERRIDE; - knumber_base *sqrt() Q_DECL_OVERRIDE; - knumber_base *cbrt() Q_DECL_OVERRIDE; - knumber_base *factorial() Q_DECL_OVERRIDE; - knumber_base *reciprocal() Q_DECL_OVERRIDE; - knumber_base *tgamma() Q_DECL_OVERRIDE; + knumber_base *pow(knumber_base *rhs) override; + knumber_base *neg() override; + knumber_base *cmp() override; + knumber_base *abs() override; + knumber_base *sqrt() override; + knumber_base *cbrt() override; + knumber_base *factorial() override; + knumber_base *reciprocal() override; + knumber_base *tgamma() override; public: - knumber_base *log2() Q_DECL_OVERRIDE; - knumber_base *log10() Q_DECL_OVERRIDE; - knumber_base *ln() Q_DECL_OVERRIDE; - knumber_base *exp2() Q_DECL_OVERRIDE; - knumber_base *exp10() Q_DECL_OVERRIDE; - knumber_base *floor() Q_DECL_OVERRIDE; - knumber_base *ceil() Q_DECL_OVERRIDE; - knumber_base *exp() Q_DECL_OVERRIDE; - knumber_base *bin(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *log2() override; + knumber_base *log10() override; + knumber_base *ln() override; + knumber_base *exp2() override; + knumber_base *exp10() override; + knumber_base *floor() override; + knumber_base *ceil() override; + knumber_base *exp() override; + knumber_base *bin(knumber_base *rhs) override; public: - knumber_base *sin() Q_DECL_OVERRIDE; - knumber_base *cos() Q_DECL_OVERRIDE; - knumber_base *tan() Q_DECL_OVERRIDE; - knumber_base *asin() Q_DECL_OVERRIDE; - knumber_base *acos() Q_DECL_OVERRIDE; - knumber_base *atan() Q_DECL_OVERRIDE; - knumber_base *sinh() Q_DECL_OVERRIDE; - knumber_base *cosh() Q_DECL_OVERRIDE; - knumber_base *tanh() Q_DECL_OVERRIDE; - knumber_base *asinh() Q_DECL_OVERRIDE; - knumber_base *acosh() Q_DECL_OVERRIDE; - knumber_base *atanh() Q_DECL_OVERRIDE; + knumber_base *sin() override; + knumber_base *cos() override; + knumber_base *tan() override; + knumber_base *asin() override; + knumber_base *acos() override; + knumber_base *atan() override; + knumber_base *sinh() override; + knumber_base *cosh() override; + knumber_base *tanh() override; + knumber_base *asinh() override; + knumber_base *acosh() override; + knumber_base *atanh() override; public: - int compare(knumber_base *rhs) Q_DECL_OVERRIDE; + int compare(knumber_base *rhs) override; private: // conversion constructors explicit knumber_error(const knumber_integer *value); explicit knumber_error(const knumber_fraction *value); explicit knumber_error(const knumber_float *value); explicit knumber_error(const knumber_error *value); public: - knumber_base *clone() Q_DECL_OVERRIDE; + knumber_base *clone() override; private: Error error_; }; } #endif diff --git a/knumber/knumber_float.h b/knumber/knumber_float.h index 6dfda02..1b512c6 100644 --- a/knumber/knumber_float.h +++ b/knumber/knumber_float.h @@ -1,135 +1,135 @@ /* Copyright (C) 2001 - 2013 Evan Teran evan.teran@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef KNUMBER_FLOAT_H_ #define KNUMBER_FLOAT_H_ #include "knumber_base.h" class KNumber; namespace detail { class knumber_float : public knumber_base { friend class ::KNumber; friend class knumber_error; friend class knumber_integer; friend class knumber_fraction; private: #ifdef KNUMBER_USE_MPFR static const mpfr_rnd_t rounding_mode; static const mpfr_prec_t precision; #endif public: explicit knumber_float(const QString &s); explicit knumber_float(double value); #ifdef HAVE_LONG_DOUBLE explicit knumber_float(long double value); #endif explicit knumber_float(mpf_t mpf); virtual ~knumber_float(); private: // conversion constructors explicit knumber_float(const knumber_integer *value); explicit knumber_float(const knumber_fraction *value); explicit knumber_float(const knumber_float *value); explicit knumber_float(const knumber_error *value); public: - QString toString(int precision) const Q_DECL_OVERRIDE; - quint64 toUint64() const Q_DECL_OVERRIDE; - qint64 toInt64() const Q_DECL_OVERRIDE; + QString toString(int precision) const override; + quint64 toUint64() const override; + qint64 toInt64() const override; public: - bool is_integer() const Q_DECL_OVERRIDE; - bool is_zero() const Q_DECL_OVERRIDE; - int sign() const Q_DECL_OVERRIDE; + bool is_integer() const override; + bool is_zero() const override; + int sign() const override; public: - knumber_base *add(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *sub(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *mul(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *div(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *mod(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *add(knumber_base *rhs) override; + knumber_base *sub(knumber_base *rhs) override; + knumber_base *mul(knumber_base *rhs) override; + knumber_base *div(knumber_base *rhs) override; + knumber_base *mod(knumber_base *rhs) override; public: - knumber_base *pow(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *neg() Q_DECL_OVERRIDE; - knumber_base *cmp() Q_DECL_OVERRIDE; - knumber_base *abs() Q_DECL_OVERRIDE; - knumber_base *sqrt() Q_DECL_OVERRIDE; - knumber_base *cbrt() Q_DECL_OVERRIDE; - knumber_base *factorial() Q_DECL_OVERRIDE; - knumber_base *reciprocal() Q_DECL_OVERRIDE; - knumber_base *tgamma() Q_DECL_OVERRIDE; + knumber_base *pow(knumber_base *rhs) override; + knumber_base *neg() override; + knumber_base *cmp() override; + knumber_base *abs() override; + knumber_base *sqrt() override; + knumber_base *cbrt() override; + knumber_base *factorial() override; + knumber_base *reciprocal() override; + knumber_base *tgamma() override; public: - knumber_base *log2() Q_DECL_OVERRIDE; - knumber_base *log10() Q_DECL_OVERRIDE; - knumber_base *ln() Q_DECL_OVERRIDE; - knumber_base *floor() Q_DECL_OVERRIDE; - knumber_base *ceil() Q_DECL_OVERRIDE; - knumber_base *exp2() Q_DECL_OVERRIDE; - knumber_base *exp10() Q_DECL_OVERRIDE; - knumber_base *exp() Q_DECL_OVERRIDE; - knumber_base *bin(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *log2() override; + knumber_base *log10() override; + knumber_base *ln() override; + knumber_base *floor() override; + knumber_base *ceil() override; + knumber_base *exp2() override; + knumber_base *exp10() override; + knumber_base *exp() override; + knumber_base *bin(knumber_base *rhs) override; public: - knumber_base *sin() Q_DECL_OVERRIDE; - knumber_base *cos() Q_DECL_OVERRIDE; - knumber_base *tan() Q_DECL_OVERRIDE; - knumber_base *asin() Q_DECL_OVERRIDE; - knumber_base *acos() Q_DECL_OVERRIDE; - knumber_base *atan() Q_DECL_OVERRIDE; - knumber_base *sinh() Q_DECL_OVERRIDE; - knumber_base *cosh() Q_DECL_OVERRIDE; - knumber_base *tanh() Q_DECL_OVERRIDE; - knumber_base *asinh() Q_DECL_OVERRIDE; - knumber_base *acosh() Q_DECL_OVERRIDE; - knumber_base *atanh() Q_DECL_OVERRIDE; + knumber_base *sin() override; + knumber_base *cos() override; + knumber_base *tan() override; + knumber_base *asin() override; + knumber_base *acos() override; + knumber_base *atan() override; + knumber_base *sinh() override; + knumber_base *cosh() override; + knumber_base *tanh() override; + knumber_base *asinh() override; + knumber_base *acosh() override; + knumber_base *atanh() override; public: - int compare(knumber_base *rhs) Q_DECL_OVERRIDE; + int compare(knumber_base *rhs) override; public: - knumber_base *bitwise_and(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_xor(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_or(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_shift(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *bitwise_and(knumber_base *rhs) override; + knumber_base *bitwise_xor(knumber_base *rhs) override; + knumber_base *bitwise_or(knumber_base *rhs) override; + knumber_base *bitwise_shift(knumber_base *rhs) override; public: - knumber_base *clone() Q_DECL_OVERRIDE; + knumber_base *clone() override; private: template knumber_base *execute_libc_func(double x); template knumber_base *execute_libc_func(double x, double y); private: mpf_t mpf_; }; } #endif diff --git a/knumber/knumber_fraction.h b/knumber/knumber_fraction.h index c2b1d60..4bcf719 100644 --- a/knumber/knumber_fraction.h +++ b/knumber/knumber_fraction.h @@ -1,137 +1,137 @@ /* Copyright (C) 2001 - 2013 Evan Teran evan.teran@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef KNUMBER_FRACTION_H_ #define KNUMBER_FRACTION_H_ #include "knumber_base.h" class KNumber; namespace detail { class knumber_fraction : public knumber_base { friend class ::KNumber; friend class knumber_error; friend class knumber_integer; friend class knumber_float; public: static bool default_fractional_input; static bool default_fractional_output; static bool split_off_integer_for_fraction_output; public: static void set_default_fractional_input(bool value); static void set_default_fractional_output(bool value); static void set_split_off_integer_for_fraction_output(bool value); public: explicit knumber_fraction(const QString &s); knumber_fraction(qint64 num, quint64 den); knumber_fraction(quint64 num, quint64 den); explicit knumber_fraction(mpq_t mpq); virtual ~knumber_fraction(); public: - knumber_base *clone() Q_DECL_OVERRIDE; + knumber_base *clone() override; public: - QString toString(int precision) const Q_DECL_OVERRIDE; - quint64 toUint64() const Q_DECL_OVERRIDE; - qint64 toInt64() const Q_DECL_OVERRIDE; + QString toString(int precision) const override; + quint64 toUint64() const override; + qint64 toInt64() const override; public: - bool is_integer() const Q_DECL_OVERRIDE; - bool is_zero() const Q_DECL_OVERRIDE; - int sign() const Q_DECL_OVERRIDE; + bool is_integer() const override; + bool is_zero() const override; + int sign() const override; public: - knumber_base *add(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *sub(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *mul(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *div(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *mod(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *add(knumber_base *rhs) override; + knumber_base *sub(knumber_base *rhs) override; + knumber_base *mul(knumber_base *rhs) override; + knumber_base *div(knumber_base *rhs) override; + knumber_base *mod(knumber_base *rhs) override; public: - knumber_base *bitwise_and(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_xor(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_or(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_shift(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *bitwise_and(knumber_base *rhs) override; + knumber_base *bitwise_xor(knumber_base *rhs) override; + knumber_base *bitwise_or(knumber_base *rhs) override; + knumber_base *bitwise_shift(knumber_base *rhs) override; public: - knumber_base *pow(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *neg() Q_DECL_OVERRIDE; - knumber_base *cmp() Q_DECL_OVERRIDE; - knumber_base *abs() Q_DECL_OVERRIDE; - knumber_base *sqrt() Q_DECL_OVERRIDE; - knumber_base *cbrt() Q_DECL_OVERRIDE; - knumber_base *factorial() Q_DECL_OVERRIDE; - knumber_base *reciprocal() Q_DECL_OVERRIDE; - knumber_base *tgamma() Q_DECL_OVERRIDE; + knumber_base *pow(knumber_base *rhs) override; + knumber_base *neg() override; + knumber_base *cmp() override; + knumber_base *abs() override; + knumber_base *sqrt() override; + knumber_base *cbrt() override; + knumber_base *factorial() override; + knumber_base *reciprocal() override; + knumber_base *tgamma() override; public: - knumber_base *log2() Q_DECL_OVERRIDE; - knumber_base *log10() Q_DECL_OVERRIDE; - knumber_base *ln() Q_DECL_OVERRIDE; - knumber_base *exp2() Q_DECL_OVERRIDE; - knumber_base *floor() Q_DECL_OVERRIDE; - knumber_base *ceil() Q_DECL_OVERRIDE; - knumber_base *exp10() Q_DECL_OVERRIDE; - knumber_base *exp() Q_DECL_OVERRIDE; - knumber_base *bin(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *log2() override; + knumber_base *log10() override; + knumber_base *ln() override; + knumber_base *exp2() override; + knumber_base *floor() override; + knumber_base *ceil() override; + knumber_base *exp10() override; + knumber_base *exp() override; + knumber_base *bin(knumber_base *rhs) override; public: - knumber_base *sin() Q_DECL_OVERRIDE; - knumber_base *cos() Q_DECL_OVERRIDE; - knumber_base *tan() Q_DECL_OVERRIDE; - knumber_base *asin() Q_DECL_OVERRIDE; - knumber_base *acos() Q_DECL_OVERRIDE; - knumber_base *atan() Q_DECL_OVERRIDE; - knumber_base *sinh() Q_DECL_OVERRIDE; - knumber_base *cosh() Q_DECL_OVERRIDE; - knumber_base *tanh() Q_DECL_OVERRIDE; - knumber_base *asinh() Q_DECL_OVERRIDE; - knumber_base *acosh() Q_DECL_OVERRIDE; - knumber_base *atanh() Q_DECL_OVERRIDE; + knumber_base *sin() override; + knumber_base *cos() override; + knumber_base *tan() override; + knumber_base *asin() override; + knumber_base *acos() override; + knumber_base *atan() override; + knumber_base *sinh() override; + knumber_base *cosh() override; + knumber_base *tanh() override; + knumber_base *asinh() override; + knumber_base *acosh() override; + knumber_base *atanh() override; public: - int compare(knumber_base *rhs) Q_DECL_OVERRIDE; + int compare(knumber_base *rhs) override; private: knumber_integer *numerator() const; knumber_integer *denominator() const; private: // conversion constructors explicit knumber_fraction(const knumber_integer *value); explicit knumber_fraction(const knumber_fraction *value); #if 0 // TODO: this is omitted because there is no good way to // implement it knumber_fraction(const knumber_float *value); #endif explicit knumber_fraction(const knumber_error *value); private: mpq_t mpq_; }; } #endif diff --git a/knumber/knumber_integer.h b/knumber/knumber_integer.h index 9218aac..b9fe52d 100644 --- a/knumber/knumber_integer.h +++ b/knumber/knumber_integer.h @@ -1,123 +1,123 @@ /* Copyright (C) 2001 - 2013 Evan Teran evan.teran@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef KNUMBER_INTEGER_H_ #define KNUMBER_INTEGER_H_ #include "knumber_base.h" class KNumber; namespace detail { class knumber_integer : public knumber_base { friend class ::KNumber; friend class knumber_error; friend class knumber_fraction; friend class knumber_float; public: explicit knumber_integer(const QString &s); explicit knumber_integer(qint32 value); explicit knumber_integer(qint64 value); explicit knumber_integer(quint32 value); explicit knumber_integer(quint64 value); explicit knumber_integer(mpz_t mpz); virtual ~knumber_integer(); public: - knumber_base *clone() Q_DECL_OVERRIDE; + knumber_base *clone() override; public: - QString toString(int precision) const Q_DECL_OVERRIDE; - quint64 toUint64() const Q_DECL_OVERRIDE; - qint64 toInt64() const Q_DECL_OVERRIDE; + QString toString(int precision) const override; + quint64 toUint64() const override; + qint64 toInt64() const override; public: virtual bool is_even() const; virtual bool is_odd() const; - bool is_integer() const Q_DECL_OVERRIDE; - bool is_zero() const Q_DECL_OVERRIDE; - int sign() const Q_DECL_OVERRIDE; + bool is_integer() const override; + bool is_zero() const override; + int sign() const override; public: - knumber_base *add(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *sub(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *mul(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *div(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *mod(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *add(knumber_base *rhs) override; + knumber_base *sub(knumber_base *rhs) override; + knumber_base *mul(knumber_base *rhs) override; + knumber_base *div(knumber_base *rhs) override; + knumber_base *mod(knumber_base *rhs) override; public: - knumber_base *bitwise_and(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_xor(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_or(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *bitwise_shift(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *bitwise_and(knumber_base *rhs) override; + knumber_base *bitwise_xor(knumber_base *rhs) override; + knumber_base *bitwise_or(knumber_base *rhs) override; + knumber_base *bitwise_shift(knumber_base *rhs) override; public: - knumber_base *pow(knumber_base *rhs) Q_DECL_OVERRIDE; - knumber_base *neg() Q_DECL_OVERRIDE; - knumber_base *cmp() Q_DECL_OVERRIDE; - knumber_base *abs() Q_DECL_OVERRIDE; - knumber_base *sqrt() Q_DECL_OVERRIDE; - knumber_base *cbrt() Q_DECL_OVERRIDE; - knumber_base *factorial() Q_DECL_OVERRIDE; - knumber_base *reciprocal() Q_DECL_OVERRIDE; + knumber_base *pow(knumber_base *rhs) override; + knumber_base *neg() override; + knumber_base *cmp() override; + knumber_base *abs() override; + knumber_base *sqrt() override; + knumber_base *cbrt() override; + knumber_base *factorial() override; + knumber_base *reciprocal() override; public: - knumber_base *log2() Q_DECL_OVERRIDE; - knumber_base *log10() Q_DECL_OVERRIDE; - knumber_base *ln() Q_DECL_OVERRIDE; - knumber_base *exp2() Q_DECL_OVERRIDE; - knumber_base *floor() Q_DECL_OVERRIDE; - knumber_base *ceil() Q_DECL_OVERRIDE; - knumber_base *exp10() Q_DECL_OVERRIDE; - knumber_base *exp() Q_DECL_OVERRIDE; - knumber_base *bin(knumber_base *rhs) Q_DECL_OVERRIDE; + knumber_base *log2() override; + knumber_base *log10() override; + knumber_base *ln() override; + knumber_base *exp2() override; + knumber_base *floor() override; + knumber_base *ceil() override; + knumber_base *exp10() override; + knumber_base *exp() override; + knumber_base *bin(knumber_base *rhs) override; public: - knumber_base *sin() Q_DECL_OVERRIDE; - knumber_base *cos() Q_DECL_OVERRIDE; - knumber_base *tan() Q_DECL_OVERRIDE; - knumber_base *asin() Q_DECL_OVERRIDE; - knumber_base *acos() Q_DECL_OVERRIDE; - knumber_base *atan() Q_DECL_OVERRIDE; - knumber_base *sinh() Q_DECL_OVERRIDE; - knumber_base *cosh() Q_DECL_OVERRIDE; - knumber_base *tanh() Q_DECL_OVERRIDE; - knumber_base *asinh() Q_DECL_OVERRIDE; - knumber_base *acosh() Q_DECL_OVERRIDE; - knumber_base *atanh() Q_DECL_OVERRIDE; - knumber_base *tgamma() Q_DECL_OVERRIDE; + knumber_base *sin() override; + knumber_base *cos() override; + knumber_base *tan() override; + knumber_base *asin() override; + knumber_base *acos() override; + knumber_base *atan() override; + knumber_base *sinh() override; + knumber_base *cosh() override; + knumber_base *tanh() override; + knumber_base *asinh() override; + knumber_base *acosh() override; + knumber_base *atanh() override; + knumber_base *tgamma() override; public: - int compare(knumber_base *rhs) Q_DECL_OVERRIDE; + int compare(knumber_base *rhs) override; private: // conversion constructors explicit knumber_integer(const knumber_integer *value); explicit knumber_integer(const knumber_fraction *value); explicit knumber_integer(const knumber_float *value); explicit knumber_integer(const knumber_error *value); private: mpz_t mpz_; }; } #endif