From 226663889b4deeb2ffd38576fce0e8371482f071 Mon Sep 17 00:00:00 2001 From: Markus Gans Date: Thu, 3 Dec 2020 23:20:33 +0100 Subject: [PATCH] Improvement of the move semantics in FVTermPreprocessing --- src/flistview.cpp | 6 ++--- src/ftermlinux.cpp | 12 ++++----- src/fvterm.cpp | 6 ++--- src/fwidget.cpp | 13 ++------- src/include/final/fapplication.h | 2 +- src/include/final/fcallback.h | 4 +-- src/include/final/fcolorpalette.h | 4 +-- src/include/final/fdialog.h | 5 ++-- src/include/final/ffiledialog.h | 3 +-- src/include/final/fkeyboard.h | 4 +-- src/include/final/flistbox.h | 12 ++++----- src/include/final/flistview.h | 45 ++++++++++++++++--------------- src/include/final/fmenu.h | 17 ++++++------ src/include/final/fmouse.h | 6 ++--- src/include/final/foptiattr.h | 11 ++++---- src/include/final/foptimove.h | 16 +++++------ src/include/final/fscrollview.h | 4 +-- src/include/final/fstatusbar.h | 4 +-- src/include/final/fstringstream.h | 2 +- src/include/final/fterm.h | 4 +-- src/include/final/ftermcap.h | 6 ++--- src/include/final/ftermdata.h | 4 +-- src/include/final/ftermlinux.h | 12 ++++----- src/include/final/ftermopenbsd.h | 2 +- src/include/final/ftextview.h | 4 +-- src/include/final/fvterm.h | 12 +++++---- src/include/final/fwidget.h | 10 +++---- src/include/final/sgr_optimizer.h | 4 +-- test/ftermfreebsd-test.cpp | 4 +-- test/ftermlinux-test.cpp | 20 +++++++------- test/ftermopenbsd-test.cpp | 8 +++--- 31 files changed, 125 insertions(+), 141 deletions(-) diff --git a/src/flistview.cpp b/src/flistview.cpp index aeb99961..084f1d00 100644 --- a/src/flistview.cpp +++ b/src/flistview.cpp @@ -478,7 +478,7 @@ void FListViewItem::resetVisibleLineCounter() // constructor and destructor //---------------------------------------------------------------------- -FListViewIterator::FListViewIterator (iterator iter) +FListViewIterator::FListViewIterator (Iterator iter) : node{iter} { } @@ -533,7 +533,7 @@ FListViewIterator& FListViewIterator::operator -= (int n) // private methods of FListViewIterator //---------------------------------------------------------------------- -void FListViewIterator::nextElement (iterator& iter) +void FListViewIterator::nextElement (Iterator& iter) { const auto& item = static_cast(*iter); @@ -570,7 +570,7 @@ void FListViewIterator::nextElement (iterator& iter) } //---------------------------------------------------------------------- -void FListViewIterator::prevElement (iterator& iter) +void FListViewIterator::prevElement (Iterator& iter) { auto start_iter = iter; diff --git a/src/ftermlinux.cpp b/src/ftermlinux.cpp index 27fbd1e1..b5f09306 100644 --- a/src/ftermlinux.cpp +++ b/src/ftermlinux.cpp @@ -130,7 +130,7 @@ bool FTermLinux::setPalette (FColor, int, int, int) #endif //---------------------------------------------------------------------- -bool FTermLinux::isLinuxConsole() +bool FTermLinux::isLinuxConsole() const { // Check if it's a Linux console @@ -484,7 +484,7 @@ FKey FTermLinux::modifierKeyCorrection (const FKey& key_id) // private methods of FTermLinux //---------------------------------------------------------------------- -int FTermLinux::getFramebuffer_bpp() +int FTermLinux::getFramebuffer_bpp() const { int fd{-1}; const char* fb = "/dev/fb/0"; @@ -707,7 +707,7 @@ int FTermLinux::setScreenFont ( const uChar fontdata[], uInt count } //---------------------------------------------------------------------- -int FTermLinux::setUnicodeMap (struct unimapdesc* unimap) +int FTermLinux::setUnicodeMap (struct unimapdesc* unimap) const { struct unimapinit advice; const int fd_tty = FTerm::getTTYFileDescriptor(); @@ -751,7 +751,7 @@ void FTermLinux::setLinuxCursorStyle (CursorStyle style) const #if defined(ISA_SYSCTL_SUPPORT) //---------------------------------------------------------------------- -inline uInt16 FTermLinux::getInputStatusRegisterOne() +inline uInt16 FTermLinux::getInputStatusRegisterOne() const { // Gets the VGA input-status-register-1 @@ -1271,7 +1271,7 @@ FKey FTermLinux::shiftCtrlAltKeyCorrection (const FKey& key_id) const } //---------------------------------------------------------------------- -inline void FTermLinux::initSpecialCharacter() +inline void FTermLinux::initSpecialCharacter() const { const auto& fterm_data = FTerm::getFTermData(); const wchar_t c1 = fc::UpperHalfBlock; @@ -1311,7 +1311,7 @@ sInt16 FTermLinux::getFontPos (wchar_t ucs) const //---------------------------------------------------------------------- void FTermLinux::characterFallback ( wchar_t ucs - , std::vector fallback ) + , std::vector fallback ) const { constexpr sInt16 NOT_FOUND = -1; const auto& fterm_data = FTerm::getFTermData(); diff --git a/src/fvterm.cpp b/src/fvterm.cpp index a1bafe16..53577070 100644 --- a/src/fvterm.cpp +++ b/src/fvterm.cpp @@ -298,14 +298,14 @@ bool FVTerm::updateTerminal() const //---------------------------------------------------------------------- void FVTerm::addPreprocessingHandler ( const FVTerm* instance - , const FPreprocessingFunction& function ) + , FPreprocessingFunction&& function ) { if ( ! print_area ) FVTerm::getPrintArea(); if ( print_area ) { - FVTermPreprocessing obj{ instance, function }; + FVTermPreprocessing obj{ instance, std::move(function) }; delPreprocessingHandler (instance); print_area->preproc_list.emplace_back(std::move(obj)); } @@ -325,7 +325,7 @@ void FVTerm::delPreprocessingHandler (const FVTerm* instance) while ( iter != print_area->preproc_list.end() ) { if ( iter->instance.get() == instance ) - iter = std::move(print_area->preproc_list.erase(iter)); + iter = print_area->preproc_list.erase(iter); else ++iter; } diff --git a/src/fwidget.cpp b/src/fwidget.cpp index 4317d63b..e117059d 100644 --- a/src/fwidget.cpp +++ b/src/fwidget.cpp @@ -1149,12 +1149,12 @@ FVTerm::FTermArea* FWidget::getPrintArea() //---------------------------------------------------------------------- void FWidget::addPreprocessingHandler ( const FVTerm* instance - , const FPreprocessingFunction& function ) + , FPreprocessingFunction&& function ) { if ( ! getCurrentPrintArea() ) FWidget::getPrintArea(); - FVTerm::addPreprocessingHandler (instance, function); + FVTerm::addPreprocessingHandler (instance, std::move(function)); } //---------------------------------------------------------------------- @@ -1781,8 +1781,6 @@ void FWidget::finish() delete window_list; window_list = nullptr; } - - destroyColorTheme(); } //---------------------------------------------------------------------- @@ -2061,13 +2059,6 @@ void FWidget::initColorTheme() } } -//---------------------------------------------------------------------- -void FWidget::destroyColorTheme() -{ - const FWidgetColorsPtr* theme = &(getColorTheme()); - delete theme; -} - //---------------------------------------------------------------------- void FWidget::removeQueuedEvent() const { diff --git a/src/include/final/fapplication.h b/src/include/final/fapplication.h index 733a7ade..d405ccba 100644 --- a/src/include/final/fapplication.h +++ b/src/include/final/fapplication.h @@ -162,7 +162,7 @@ class FApplication : public FWidget using CmdOption = struct option; #endif - // Typedefs + // Using-declaration using EventPair = std::pair; using FEventQueue = std::deque; using CmdMap = std::unordered_map>; diff --git a/src/include/final/fcallback.h b/src/include/final/fcallback.h index a493a13b..5341c760 100644 --- a/src/include/final/fcallback.h +++ b/src/include/final/fcallback.h @@ -211,8 +211,8 @@ class FCallback void emitCallback (const FString& emit_signal) const; private: - // Typedefs - typedef std::vector FCallbackObjects; + // Using-declaration + using FCallbackObjects = std::vector; // Data members FCallbackObjects callback_objects{}; diff --git a/src/include/final/fcolorpalette.h b/src/include/final/fcolorpalette.h index 63387705..1c5b2a48 100644 --- a/src/include/final/fcolorpalette.h +++ b/src/include/final/fcolorpalette.h @@ -49,8 +49,8 @@ namespace finalcut class FColorPalette { public: - // Typedef - typedef std::function FSetPalette; + // Using-declaration + using FSetPalette = std::function; // Constructor explicit FColorPalette (const FSetPalette&); diff --git a/src/include/final/fdialog.h b/src/include/final/fdialog.h index 4916ac44..26a44ebb 100644 --- a/src/include/final/fdialog.h +++ b/src/include/final/fdialog.h @@ -155,15 +155,14 @@ class FDialog : public FWindow void onClose (FCloseEvent*) override; private: - // Typedef - typedef struct + struct MouseStates { int mouse_x; int mouse_y; FPoint termPos; std::size_t zoom_btn; bool mouse_over_menu; - } MouseStates; + }; // Constant static constexpr std::size_t MENU_BTN = 3; diff --git a/src/include/final/ffiledialog.h b/src/include/final/ffiledialog.h index aa6acda5..20902290 100644 --- a/src/include/final/ffiledialog.h +++ b/src/include/final/ffiledialog.h @@ -138,7 +138,6 @@ class FFileDialog : public FDialog void adjustSize() override; private: - // Typedef struct FDirEntry { // Constructor @@ -183,7 +182,7 @@ class FFileDialog : public FDialog uChar : 1; // padding bits }; - typedef std::vector DirEntries; + using DirEntries = std::vector; // Methods void init(); diff --git a/src/include/final/fkeyboard.h b/src/include/final/fkeyboard.h index bf86002d..e1e91d8f 100644 --- a/src/include/final/fkeyboard.h +++ b/src/include/final/fkeyboard.h @@ -88,8 +88,8 @@ class FKeyboard final // Constants static constexpr std::size_t FIFO_BUF_SIZE{512}; - // Typedef - typedef char keybuffer[FIFO_BUF_SIZE]; + // Using-declaration + using keybuffer = char[FIFO_BUF_SIZE]; // Constructor FKeyboard(); diff --git a/src/include/final/flistbox.h b/src/include/final/flistbox.h index 0d27a1ae..714a46e5 100644 --- a/src/include/final/flistbox.h +++ b/src/include/final/flistbox.h @@ -169,9 +169,7 @@ class FListBox : public FWidget public: // Using-declaration using FWidget::setGeometry; - - // Typedef - typedef std::vector FListBoxItems; + using FListBoxItems = std::vector; // Constructor explicit FListBox (FWidget* = nullptr); @@ -276,10 +274,10 @@ class FListBox : public FWidget void adjustSize() override; private: - // Typedefs - typedef std::unordered_map> KeyMap; - typedef std::unordered_map> KeyMapResult; - typedef std::function LazyInsert; + // Using-declaration + using KeyMap = std::unordered_map>; + using KeyMapResult = std::unordered_map>; + using LazyInsert = std::function; // Enumeration enum convert_type diff --git a/src/include/final/flistview.h b/src/include/final/flistview.h index 7db08aa4..ccdf926c 100644 --- a/src/include/final/flistview.h +++ b/src/include/final/flistview.h @@ -48,6 +48,7 @@ #endif #include +#include #include #include #include @@ -214,17 +215,20 @@ class FListViewIterator { public: // Using-declarations - using FObjectList = std::list; - using iterator = FObjectList::iterator; - using iterator_stack = std::stack; + using FObjectList = std::list; + using Iterator = FObjectList::iterator; + using IteratorStack = std::stack; // Constructor FListViewIterator () = default; - FListViewIterator (iterator); + FListViewIterator (Iterator); FListViewIterator (const FListViewIterator&) = default; - FListViewIterator (FListViewIterator&& ) - noexcept (std::is_nothrow_move_constructible::value) - = default; + FListViewIterator (FListViewIterator&& i) noexcept + : iter_path{std::move(i.iter_path)} + , node{i.node} + , position{i.position} + { } + // Overloaded operators FListViewIterator& operator = (const FListViewIterator&) = default; FListViewIterator& operator = (FListViewIterator&&) noexcept = default; @@ -248,12 +252,12 @@ class FListViewIterator private: // Methods - void nextElement (iterator&); - void prevElement (iterator&); + void nextElement (Iterator&); + void prevElement (Iterator&); // Data members - iterator_stack iter_path{}; - iterator node{}; + IteratorStack iter_path{}; + Iterator node{}; int position{0}; }; @@ -293,9 +297,7 @@ class FListView : public FWidget public: // Using-declaration using FWidget::setGeometry; - - // Typedef - typedef std::list FListViewItems; + using FListViewItems = std::list; // Constructor explicit FListView (FWidget* = nullptr); @@ -401,18 +403,17 @@ class FListView : public FWidget void adjustSize() override; private: - // Typedefs - typedef std::unordered_map> KeyMap; - typedef std::unordered_map> KeyMapResult; + struct Header; // forward declaration + + // Using-declaration + using KeyMap = std::unordered_map>; + using KeyMapResult = std::unordered_map>; + using HeaderItems = std::vector
; + using SortTypes = std::vector; // Constants static constexpr std::size_t checkbox_space = 4; - // Typedef - struct Header; // forward declaration - typedef std::vector
HeaderItems; - typedef std::vector SortTypes; - // Constants static constexpr int USE_MAX_SIZE = -1; diff --git a/src/include/final/fmenu.h b/src/include/final/fmenu.h index 81bd4cb1..b745b584 100644 --- a/src/include/final/fmenu.h +++ b/src/include/final/fmenu.h @@ -132,12 +132,7 @@ class FMenu : public FWindow, public FMenuList void cb_menuitemToggled (const FMenuItem*) const; private: - // Constants - static constexpr auto NOT_SET = static_cast(-1); - static constexpr bool SELECT_ITEM = true; - - // Typedef - typedef struct + struct MouseStates { uChar focus_changed : 1; uChar hide_sub_menu : 1; @@ -146,14 +141,18 @@ class FMenu : public FWindow, public FMenuList uChar mouse_over_supermenu : 1; uChar mouse_over_menubar : 1; uChar : 2; // padding bits - } MouseStates; + }; - typedef struct + struct MenuText { FString text; std::size_t hotkeypos; bool no_underline; - } MenuText; + }; + + // Constants + static constexpr auto NOT_SET = static_cast(-1); + static constexpr bool SELECT_ITEM = true; // Accessors FWidget* getSuperMenu() const; diff --git a/src/include/final/fmouse.h b/src/include/final/fmouse.h index b0616c7d..1891e13a 100644 --- a/src/include/final/fmouse.h +++ b/src/include/final/fmouse.h @@ -122,8 +122,7 @@ class FMouseData void clearButtonState(); protected: - // Typedef and Enumerations - typedef struct + struct FMouseButton // bit field { uChar left_button : 2; // 0..3 uChar right_button : 2; // 0..3 @@ -135,8 +134,9 @@ class FMouseData uChar wheel_down : 1; // 0..1 uChar mouse_moved : 1; // 0..1 uChar : 4; // padding bits - } FMouseButton; // bit field + }; + // Enumerations enum states { Undefined = 0, diff --git a/src/include/final/foptiattr.h b/src/include/final/foptiattr.h index cfa48398..18af4e5e 100644 --- a/src/include/final/foptiattr.h +++ b/src/include/final/foptiattr.h @@ -159,15 +159,16 @@ class FOptiAttr final const char* changeAttribute (FChar&, FChar&); private: - // Typedefs and Enumerations - typedef SGRoptimizer::AttributeBuffer AttributeBuffer; - - typedef struct + struct Capability { const char* cap; bool caused_reset; - } Capability; + }; + // Using-declaration + using AttributeBuffer = SGRoptimizer::AttributeBuffer; + + // Enumerations enum init_reset_tests { no_test = 0x00, diff --git a/src/include/final/foptimove.h b/src/include/final/foptimove.h index c9003fee..4dc24953 100644 --- a/src/include/final/foptimove.h +++ b/src/include/final/foptimove.h @@ -57,8 +57,7 @@ namespace finalcut class FOptiMove final { public: - // Typedef - typedef struct + struct TermEnv { const char* t_cursor_home; const char* t_carriage_return; @@ -83,7 +82,7 @@ class FOptiMove final int tabstop; bool automatic_left_margin; bool eat_nl_glitch; - } TermEnv; + }; // Constructor explicit FOptiMove (int = 0); @@ -147,16 +146,15 @@ class FOptiMove final const char* moveCursor (int, int, int, int); private: - // Constant - static constexpr std::size_t BUF_SIZE{512}; - - // Typedef - typedef struct + struct Capability { const char* cap; int duration; int length; - } Capability; + }; + + // Constant + static constexpr std::size_t BUF_SIZE{512}; // Constants static constexpr int LONG_DURATION{INT_MAX}; diff --git a/src/include/final/fscrollview.h b/src/include/final/fscrollview.h index a019e2f1..23c82fa2 100644 --- a/src/include/final/fscrollview.h +++ b/src/include/final/fscrollview.h @@ -149,8 +149,8 @@ class FScrollView : public FWidget void copy2area(); private: - // Typedefs - typedef std::unordered_map> KeyMap; + // Using-declaration + using KeyMap = std::unordered_map>; // Constants static constexpr int vertical_border_spacing = 2; diff --git a/src/include/final/fstatusbar.h b/src/include/final/fstatusbar.h index 7b7cc1c3..4b0f1f95 100644 --- a/src/include/final/fstatusbar.h +++ b/src/include/final/fstatusbar.h @@ -230,8 +230,8 @@ class FStatusBar : public FWindow void cb_statuskey_activated (const FStatusKey*); private: - // Typedef - typedef std::vector FKeyList; + // Using-declaration + using FKeyList = std::vector; // Methods void init(); diff --git a/src/include/final/fstringstream.h b/src/include/final/fstringstream.h index dfd994a6..6635e549 100644 --- a/src/include/final/fstringstream.h +++ b/src/include/final/fstringstream.h @@ -72,7 +72,7 @@ class FStringStream : public std::wiostream FStringStream (FStringStream&&) noexcept; // Destructor - ~FStringStream() noexcept; + ~FStringStream() noexcept override; // Disable copy assignment operator (=) FStringStream& operator = (const FStringStream&) = delete; diff --git a/src/include/final/fterm.h b/src/include/final/fterm.h index cf1379a1..10cabb62 100644 --- a/src/include/final/fterm.h +++ b/src/include/final/fterm.h @@ -251,7 +251,7 @@ class FTerm final static bool canChangeColorPalette(); // Mutators - static void setFSystem (std::unique_ptr&&); + static void setFSystem (std::unique_ptr&); static void setTermType (const char[]); static void setInsertCursor (bool); static void setInsertCursor(); @@ -391,7 +391,7 @@ inline FString FTerm::getClassName() { return "FTerm"; } //---------------------------------------------------------------------- -inline void FTerm::setFSystem (std::unique_ptr&& fsystem) +inline void FTerm::setFSystem (std::unique_ptr& fsystem) { getFSystem().swap(fsystem); } diff --git a/src/include/final/ftermcap.h b/src/include/final/ftermcap.h index dc30ec31..45c77363 100644 --- a/src/include/final/ftermcap.h +++ b/src/include/final/ftermcap.h @@ -75,13 +75,11 @@ namespace finalcut class FTermcap final { public: - // Typedef - typedef struct + struct TCapMap { const char* string; char tname[alignof(char*)]; - } - TCapMap; + }; // Using-declaration using fn_putc = int (*)(int); diff --git a/src/include/final/ftermdata.h b/src/include/final/ftermdata.h index 3b77b4fc..ced0c4ff 100644 --- a/src/include/final/ftermdata.h +++ b/src/include/final/ftermdata.h @@ -53,8 +53,8 @@ namespace finalcut class FTermData final { public: - // Typedefs - typedef std::unordered_map EncodingMap; + // Using-declaration + using EncodingMap = std::unordered_map; // Constructors FTermData () = default; diff --git a/src/include/final/ftermlinux.h b/src/include/final/ftermlinux.h index efaa0e32..386ceb80 100644 --- a/src/include/final/ftermlinux.h +++ b/src/include/final/ftermlinux.h @@ -99,7 +99,7 @@ class FTermLinux final void setUTF8 (bool) const; // Inquiries - bool isLinuxConsole(); + bool isLinuxConsole() const; bool isVGAFontUsed() const; bool isNewFontUsed() const; @@ -140,7 +140,7 @@ class FTermLinux final }; // Accessors - int getFramebuffer_bpp(); + int getFramebuffer_bpp() const; bool getScreenFont(); bool getUnicodeMap (); ModifierKey& getModifierKey(); @@ -148,12 +148,12 @@ class FTermLinux final // Mutators int setScreenFont ( const uChar[], uInt, uInt, uInt , bool = false ); - int setUnicodeMap (struct unimapdesc*); + int setUnicodeMap (struct unimapdesc*) const; void setLinuxCursorStyle (fc::linuxConsoleCursorStyle) const; // Methods #if defined(ISA_SYSCTL_SUPPORT) - uInt16 getInputStatusRegisterOne(); + uInt16 getInputStatusRegisterOne() const; uChar readAttributeController (uChar); void writeAttributeController (uChar, uChar); uChar getAttributeMode(); @@ -174,8 +174,8 @@ class FTermLinux final FKey ctrlAltKeyCorrection (const FKey&) const; FKey shiftCtrlAltKeyCorrection (const FKey&) const; sInt16 getFontPos (wchar_t ucs) const; - void initSpecialCharacter(); - void characterFallback (wchar_t, std::vector); + void initSpecialCharacter() const; + void characterFallback (wchar_t, std::vector) const; // Data members #if defined(__linux__) diff --git a/src/include/final/ftermopenbsd.h b/src/include/final/ftermopenbsd.h index 43dabe28..aa7deb08 100644 --- a/src/include/final/ftermopenbsd.h +++ b/src/include/final/ftermopenbsd.h @@ -47,7 +47,7 @@ #define WSKBD_BELL_DOVOLUME 0x4 // get/set volume #define WSKBD_BELL_DOALL 0x7 // all of the above - typedef uInt32 kbd_t; + using kbd_t = uInt32; struct wskbd_bell_data { diff --git a/src/include/final/ftextview.h b/src/include/final/ftextview.h index 6ddd3946..2be73fc4 100644 --- a/src/include/final/ftextview.h +++ b/src/include/final/ftextview.h @@ -137,8 +137,8 @@ class FTextView : public FWidget void adjustSize() override; private: - // Typedefs - typedef std::unordered_map> KeyMap; + // Using-declaration + using KeyMap = std::unordered_map>; // Accessors std::size_t getTextHeight() const; diff --git a/src/include/final/fvterm.h b/src/include/final/fvterm.h index 6270a1fc..0a518372 100644 --- a/src/include/final/fvterm.h +++ b/src/include/final/fvterm.h @@ -97,7 +97,7 @@ class FVTerm // Using-declarations using FPreprocessingHandler = void (FVTerm::*)(); - using FPreprocessingFunction = std::function ; + using FPreprocessingFunction = std::function; using FPreprocessing = std::vector; // Enumerations @@ -253,7 +253,7 @@ class FVTerm void putVTerm() const; bool updateTerminal() const; virtual void addPreprocessingHandler ( const FVTerm* - , const FPreprocessingFunction& ); + , FPreprocessingFunction&& ); virtual void delPreprocessingHandler (const FVTerm*); template int printf (const FString&, Args&&...); @@ -491,7 +491,9 @@ struct FVTerm::FTermArea // define virtual terminal character properties struct D { void operator () (const FVTerm*) const - { } + { + // No deleting of pointer objects when exiting the std::unique_ptr + } }; //---------------------------------------------------------------------- @@ -501,9 +503,9 @@ struct D struct FVTerm::FVTermPreprocessing { // Constructor - FVTermPreprocessing (const FVTerm* i, const FPreprocessingFunction& f) + FVTermPreprocessing (const FVTerm* i, FPreprocessingFunction&& f) : instance(std::unique_ptr(i)) - , function(f) + , function(std::move(f)) { } FVTermPreprocessing (const FVTermPreprocessing&) = delete; diff --git a/src/include/final/fwidget.h b/src/include/final/fwidget.h index 187aea0d..9e1da773 100644 --- a/src/include/final/fwidget.h +++ b/src/include/final/fwidget.h @@ -136,7 +136,6 @@ class FWidget : public FVTerm, public FObject using FVTerm::print; using FWidgetList = std::vector; using FAcceleratorList = std::vector; - using FWidgetColorsPtr = std::shared_ptr; struct FWidgetFlags // Properties of a widget ⚑ { @@ -187,7 +186,7 @@ class FWidget : public FVTerm, public FObject static FWidgetList*& getWindowList(); static FMenuBar* getMenuBar(); static FStatusBar* getStatusBar(); - static FWidgetColorsPtr& getColorTheme(); + static auto getColorTheme() -> std::shared_ptr&; virtual FWidget* getFirstFocusableWidget (FObjectList); virtual FWidget* getLastFocusableWidget (FObjectList); const FAcceleratorList& getAcceleratorList() const; @@ -338,7 +337,7 @@ class FWidget : public FVTerm, public FObject static FWidgetList*& getAlwaysOnTopList(); static FWidgetList*& getWidgetCloseList(); void addPreprocessingHandler ( const FVTerm* - , const FPreprocessingFunction& ) override; + , FPreprocessingFunction&& ) override; void delPreprocessingHandler (const FVTerm*) override; // Inquiry @@ -443,7 +442,6 @@ class FWidget : public FVTerm, public FObject void drawChildren(); static bool isDefaultTheme(); static void initColorTheme(); - void destroyColorTheme(); void removeQueuedEvent() const; void setStatusbarText (bool) const; @@ -573,9 +571,9 @@ inline FStatusBar* FWidget::getStatusBar() { return statusbar; } //---------------------------------------------------------------------- -inline FWidget::FWidgetColorsPtr& FWidget::getColorTheme() +inline auto FWidget::getColorTheme() -> std::shared_ptr& { - static auto color_theme = new FWidgetColorsPtr(); + static const auto& color_theme = make_unique>(); return *color_theme; } diff --git a/src/include/final/sgr_optimizer.h b/src/include/final/sgr_optimizer.h index 67a604b2..700c7320 100644 --- a/src/include/final/sgr_optimizer.h +++ b/src/include/final/sgr_optimizer.h @@ -51,8 +51,8 @@ class SGRoptimizer final // Constants static constexpr std::size_t ATTR_BUF_SIZE{8192}; - // Typedefs - typedef std::array AttributeBuffer; + // Using-declaration + using AttributeBuffer = std::array; // Constructors explicit SGRoptimizer (AttributeBuffer&); diff --git a/test/ftermfreebsd-test.cpp b/test/ftermfreebsd-test.cpp index 640a2894..0a87ab47 100644 --- a/test/ftermfreebsd-test.cpp +++ b/test/ftermfreebsd-test.cpp @@ -623,8 +623,8 @@ void ftermfreebsdTest::freebsdConsoleTest() setenv ("COLUMNS", "80", 1); setenv ("LINES", "25", 1); - auto fsys = finalcut::make_unique(); - finalcut::FTerm::setFSystem(std::move(fsys)); + std::unique_ptr fsys = finalcut::make_unique(); + finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; const auto& data = finalcut::FTerm::getFTermData(); diff --git a/test/ftermlinux-test.cpp b/test/ftermlinux-test.cpp index de4a49ba..820eca94 100644 --- a/test/ftermlinux-test.cpp +++ b/test/ftermlinux-test.cpp @@ -1559,8 +1559,8 @@ void FTermLinuxTest::classNameTest() //---------------------------------------------------------------------- void FTermLinuxTest::linuxConsoleTest() { - auto fsys = finalcut::make_unique(); - finalcut::FTerm::setFSystem(std::move(fsys)); + std::unique_ptr fsys = finalcut::make_unique(); + finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; const auto& data = finalcut::FTerm::getFTermData(); @@ -1681,8 +1681,8 @@ void FTermLinuxTest::linuxConsoleTest() //---------------------------------------------------------------------- void FTermLinuxTest::linuxCursorStyleTest() { - auto fsys = finalcut::make_unique(); - finalcut::FTerm::setFSystem(std::move(fsys)); + std::unique_ptr fsys = finalcut::make_unique(); + finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; const auto& data = finalcut::FTerm::getFTermData(); @@ -1870,8 +1870,8 @@ void FTermLinuxTest::linuxCursorStyleTest() //---------------------------------------------------------------------- void FTermLinuxTest::linuxColorPaletteTest() { - auto fsys = finalcut::make_unique(); - finalcut::FTerm::setFSystem(std::move(fsys)); + std::unique_ptr fsys = finalcut::make_unique(); + finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; const auto& data = finalcut::FTerm::getFTermData(); @@ -2145,8 +2145,8 @@ void FTermLinuxTest::linuxColorPaletteTest() //---------------------------------------------------------------------- void FTermLinuxTest::linuxFontTest() { - auto fsys = finalcut::make_unique(); - finalcut::FTerm::setFSystem(std::move(fsys)); + std::unique_ptr fsys = finalcut::make_unique(); + finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; const auto& data = finalcut::FTerm::getFTermData(); @@ -2288,8 +2288,8 @@ void FTermLinuxTest::linuxFontTest() //---------------------------------------------------------------------- void FTermLinuxTest::modifierKeyTest() { - auto fsys = finalcut::make_unique(); - finalcut::FTerm::setFSystem(std::move(fsys)); + std::unique_ptr fsys = finalcut::make_unique(); + finalcut::FTerm::setFSystem(fsys); const auto& fsystem = finalcut::FTerm::getFSystem(); auto fsystest = static_cast(fsystem.get()); diff --git a/test/ftermopenbsd-test.cpp b/test/ftermopenbsd-test.cpp index 9201aaba..f190e225 100644 --- a/test/ftermopenbsd-test.cpp +++ b/test/ftermopenbsd-test.cpp @@ -345,8 +345,8 @@ void ftermopenbsdTest::classNameTest() //---------------------------------------------------------------------- void ftermopenbsdTest::netbsdConsoleTest() { - auto fsys = finalcut::make_unique(); - finalcut::FTerm::setFSystem(std::move(fsys)); + std::unique_ptr fsys = finalcut::make_unique(); + finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; const auto& data = finalcut::FTerm::getFTermData(); @@ -449,8 +449,8 @@ void ftermopenbsdTest::netbsdConsoleTest() //---------------------------------------------------------------------- void ftermopenbsdTest::openbsdConsoleTest() { - auto fsys = finalcut::make_unique(); - finalcut::FTerm::setFSystem(std::move(fsys)); + std::unique_ptr fsys = finalcut::make_unique(); + finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; const auto& data = finalcut::FTerm::getFTermData();