Skip to content

Commit

Permalink
more 4584
Browse files Browse the repository at this point in the history
  • Loading branch information
alabuzhev committed Mar 20, 2016
1 parent 90fad05 commit 7dcd386
Show file tree
Hide file tree
Showing 16 changed files with 45 additions and 113 deletions.
6 changes: 5 additions & 1 deletion far/changelog
@@ -1,4 +1,8 @@
drkns 20.03.2016 00:41:42 +0200 - build 4584
drkns 20.03.2016 11:57:40 +0200 - build 4585

1. Продолжение 4584.

drkns 20.03.2016 00:41:42 +0200 - build 4584

1. Убираем костыли, щедро расставленные повсеместно для поддержки VS2010 и компании.

Expand Down
8 changes: 6 additions & 2 deletions far/common.hpp
Expand Up @@ -82,13 +82,17 @@ inline std::wostream& operator <<(std::wostream& stream, const write_exact& p)
template<class T>
inline void resize_nomove(T& container, size_t size)
{
T(size).swap(container);
T Tmp(size);
using std::swap;
swap(container, Tmp);
}

template<class T>
inline void clear_and_shrink(T& container)
{
T().swap(container);
T Tmp;
using std::swap;
swap(container, Tmp);
}

template<class T>
Expand Down
13 changes: 3 additions & 10 deletions far/common/monitored.hpp
Expand Up @@ -30,28 +30,21 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

template<class T>
class monitored: swapable<monitored<T>>
class monitored
{
public:
TRIVIALLY_MOVABLE(monitored);

monitored(): m_Value(), m_Touched() {}
monitored(const T& Value): m_Value(Value), m_Touched() {}
monitored(const monitored& rhs): m_Value(rhs.m_Value), m_Touched() {}

monitored(T&& Value) noexcept: m_Value(std::move(Value)), m_Touched() {}
monitored(monitored&& rhs) noexcept: m_Value(std::move(rhs.m_Value)), m_Touched() {}

monitored& operator=(const T& Value) { m_Value = Value; m_Touched = true; return *this; }
monitored& operator=(const monitored& rhs) { m_Value = rhs.m_Value; m_Touched = true; return *this; }

monitored& operator=(T&& Value) noexcept { m_Value = std::move(Value); m_Touched = true; return *this; }
monitored& operator=(monitored&& rhs) noexcept { m_Value = std::move(rhs.m_Value); m_Touched = true; return *this; }

void swap(monitored& rhs) noexcept
{
using std::swap;
swap(m_Value, rhs.m_Value);
swap(m_Touched, rhs.m_Touched);
}

T& value() { return m_Value; }
const T& value() const { return m_Value; }
Expand Down
3 changes: 0 additions & 3 deletions far/common/preprocessor.hpp
Expand Up @@ -101,9 +101,6 @@ Type& operator=(const Type& rhs) { Type Tmp(rhs); using std::swap; swap(*this, T
Type(Type&&) = default; \
Type& operator=(Type&&) = default;

#define MOVE_OPERATOR_BY_SWAP(Type) \
Type& operator=(Type&& rhs) noexcept { using std::swap; swap(*this, rhs); return *this; }

#define SCOPED_ACTION(RAII_type) \
const RAII_type ANONYMOUS_VARIABLE(scoped_object_)

Expand Down
16 changes: 3 additions & 13 deletions far/editor.hpp
Expand Up @@ -162,25 +162,15 @@ class Editor: public SimpleScreenObject
class numbered_iterator_t: public T
{
public:
TRIVIALLY_COPYABLE(numbered_iterator_t);
TRIVIALLY_MOVABLE(numbered_iterator_t);

numbered_iterator_t(const T& Iterator, size_t Number):
T(Iterator),
m_Number(Number)
{
}

numbered_iterator_t(const numbered_iterator_t& rhs):
T(rhs),
m_Number(rhs.m_Number)
{
}

void swap(numbered_iterator_t& rhs) noexcept
{
using std::swap;
swap(base(), rhs.base());
swap(m_Number, rhs.m_Number);
}

// BUGBUG, size_t
int Number() const { return static_cast<int>(m_Number); }
void IncrementNumber() { ++m_Number; }
Expand Down
7 changes: 1 addition & 6 deletions far/farrtl.cpp
Expand Up @@ -164,7 +164,7 @@ static std::string FormatLine(const char* File, int Line, const char* Function,

thread_local bool inside_far_bad_alloc = false;

class far_bad_alloc: public std::bad_alloc, public swapable<far_bad_alloc>
class far_bad_alloc: public std::bad_alloc
{
public:
TRIVIALLY_COPYABLE(far_bad_alloc);
Expand All @@ -188,11 +188,6 @@ class far_bad_alloc: public std::bad_alloc, public swapable<far_bad_alloc>

virtual const char* what() const noexcept override { return m_What.empty() ? std::bad_alloc::what() : m_What.data(); }

void swap(far_bad_alloc& rhs) noexcept
{
m_What.swap(rhs.m_What);
}

private:
std::string m_What;
};
Expand Down
27 changes: 10 additions & 17 deletions far/filelist.cpp
Expand Up @@ -210,15 +210,6 @@ struct FileList::PrevDataItem
int PrevTopFile;
};

FileListItem::~FileListItem()
{
DeleteRawArray(CustomColumnData, CustomColumnNumber);

if (DeleteDiz)
delete[] DizText;

}

file_panel_ptr FileList::create(window_ptr Owner)
{
return std::make_shared<FileList>(private_tag(), Owner);
Expand Down Expand Up @@ -313,11 +304,16 @@ void FileList::DeleteListData(std::vector<FileListItem>& ListData)
{
std::for_each(CONST_RANGE(ListData, i)
{
if (m_PanelMode == panel_mode::PLUGIN_PANEL && i.Callback)
if (m_PanelMode == panel_mode::PLUGIN_PANEL)
{
FarPanelItemFreeInfo info = {sizeof(FarPanelItemFreeInfo), m_hPlugin};
i.Callback(i.UserData, &info);
if (i.Callback)
{
FarPanelItemFreeInfo info = { sizeof(FarPanelItemFreeInfo), m_hPlugin };
i.Callback(i.UserData, &info);
}
}
delete[] i.DizText;
DeleteRawArray(i.CustomColumnData, i.CustomColumnNumber);
});

ListData.clear();
Expand Down Expand Up @@ -5618,12 +5614,10 @@ void FileList::PluginToFileListItem(const PluginPanelItem& pi,FileListItem& fi)
auto Str = new wchar_t[wcslen(pi.Description)+1];
wcscpy(Str, pi.Description);
fi.DizText = Str;
fi.DeleteDiz=true;
}
else
{
fi.DizText = nullptr;
fi.DeleteDiz = false;
}

fi.FileSize=pi.FileSize;
Expand Down Expand Up @@ -7368,14 +7362,13 @@ void FileList::ReadDiz(PluginPanelItem *ItemList,int ItemLength,DWORD dwFlags)
}
}

std::for_each(RANGE(m_ListData, i)
for(auto& i: m_ListData)
{
if (!i.DizText)
{
i.DeleteDiz = false;
i.DizText = Diz.Get(i.strName, i.strShortName, i.FileSize);
}
});
}
}


Expand Down
28 changes: 4 additions & 24 deletions far/filelist.hpp
Expand Up @@ -75,18 +75,18 @@ namespace detail
DWORD CRC32;

const wchar_t *DizText;
bool DeleteDiz;

char Selected;
char PrevSelected;
char ShowFolderSize;
char ShortNamePresent;
};
}

// BUGBUG: refactor and make TRIVIALLY_MOVABLE
struct FileListItem: public detail::FileListItemPod, noncopyable, swapable<FileListItem>
struct FileListItem: public detail::FileListItemPod
{
NONCOPYABLE(FileListItem);
TRIVIALLY_MOVABLE(FileListItem);

string strName;
string strShortName;
string strOwner;
Expand All @@ -96,26 +96,6 @@ struct FileListItem: public detail::FileListItemPod, noncopyable, swapable<FileL
{
ClearStruct(static_cast<detail::FileListItemPod&>(*this));
}

FileListItem(FileListItem&& rhs) noexcept
{
ClearStruct(static_cast<detail::FileListItemPod&>(*this));
*this = std::move(rhs);
}

~FileListItem();

MOVE_OPERATOR_BY_SWAP(FileListItem);

void swap(FileListItem& rhs) noexcept
{
using std::swap;
swap(static_cast<detail::FileListItemPod&>(*this), static_cast<detail::FileListItemPod&>(rhs));
strName.swap(rhs.strName);
strShortName.swap(rhs.strShortName);
strOwner.swap(rhs.strOwner);
ContentData.swap(rhs.ContentData);
}
};

struct PluginsListItem
Expand Down
3 changes: 2 additions & 1 deletion far/filepanels.cpp
Expand Up @@ -989,7 +989,8 @@ panel_ptr FilePanels::ChangePanel(panel_ptr Current, panel_type NewType, int Cre
NewPanel->SetPosition(X1,Y1,X2,Y2);
}

NewPanel->SetSortMode(OldSortMode);
if (OldSortMode < panel_sort::COUNT)
NewPanel->SetSortMode(OldSortMode);
NewPanel->SetSortOrder(OldSortOrder);
NewPanel->SetNumericSort(OldNumericSort);
NewPanel->SetCaseSensitiveSort(OldCaseSensitiveSort);
Expand Down
13 changes: 4 additions & 9 deletions far/matrix.hpp
Expand Up @@ -34,9 +34,12 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

template<class T>
class matrix: swapable<matrix<T>>
class matrix
{
public:
TRIVIALLY_COPYABLE(matrix);
TRIVIALLY_MOVABLE(matrix);

class row
{
public:
Expand Down Expand Up @@ -110,14 +113,6 @@ class matrix: swapable<matrix<T>>
std::vector<T>& vector() { return m_buffer; }
const std::vector<T>& vector() const { return m_buffer; }

void swap(matrix& rhs) noexcept
{
using std::swap;
m_buffer.swap(rhs.m_buffer);
swap(m_rows, rhs.m_rows);
swap(m_cols, rhs.m_cols);
}

private:
std::vector<T> m_buffer;
size_t m_rows;
Expand Down
2 changes: 1 addition & 1 deletion far/panel.cpp
Expand Up @@ -846,7 +846,7 @@ int Panel::SetPluginCommand(int Command,int Param1,void* Param2)
{
int Mode=Param1;

if ((Mode>SM_DEFAULT) && (Mode<=SM_CHTIME))
if ((Mode>SM_DEFAULT) && (Mode < SM_COUNT))
{
SetSortMode(panel_sort(Mode - 1)); // Уменьшим на 1 из-за SM_DEFAULT
Result=TRUE;
Expand Down
2 changes: 2 additions & 0 deletions far/plugin.hpp
Expand Up @@ -846,6 +846,8 @@ enum OPENPANELINFO_SORTMODES
SM_STREAMSSIZE = 13,
SM_FULLNAME = 14,
SM_CHTIME = 15,

SM_COUNT
};

struct PanelInfo
Expand Down
3 changes: 2 additions & 1 deletion far/savescr.cpp
Expand Up @@ -258,7 +258,8 @@ void SaveScreen::Resize(int NewX,int NewY, DWORD Corner, bool SyncWithConsole)
}
}

ScreenBuf.swap(NewBuf);
using std::swap;
swap(ScreenBuf, NewBuf);
m_X1 = NX1; m_Y1 = NY1; m_X2 = NX2; m_Y2 = NY2;
}

Expand Down
23 changes: 0 additions & 23 deletions far/scrobj.hpp
Expand Up @@ -84,18 +84,6 @@ class SimpleScreenObject: noncopyable
virtual void DisplayObject() = 0;

protected:
void swap(SimpleScreenObject& rhs) noexcept
{
using std::swap;
swap(m_Owner, rhs.m_Owner);
swap(m_Flags, rhs.m_Flags);
swap(nLockCount, rhs.nLockCount);
swap(m_X1, rhs.m_X1);
swap(m_Y1, rhs.m_Y1);
swap(m_X2, rhs.m_X2);
swap(m_Y2, rhs.m_Y2);
}

// KEEP ALIGNED!
std::weak_ptr<window> m_Owner;
BitFlags m_Flags;
Expand All @@ -116,12 +104,6 @@ class ScreenObject:public SimpleScreenObject
ScreenObject(window_ptr Owner);
virtual ~ScreenObject();

void swap(ScreenObject& rhs) noexcept
{
SimpleScreenObject::swap(rhs);
SaveScr.swap(rhs.SaveScr);
}

public: // BUGBUG
std::unique_ptr<SaveScreen> SaveScr;
};
Expand All @@ -137,11 +119,6 @@ class ScreenObjectWithShadow:public ScreenObject
virtual ~ScreenObjectWithShadow();

void Shadow(bool Full=false);
void swap(ScreenObjectWithShadow& rhs) noexcept
{
ScreenObject::swap(rhs);
ShadowSaveScr.swap(rhs.ShadowSaveScr);
}

std::unique_ptr<SaveScreen> ShadowSaveScr;
};
Expand Down
2 changes: 1 addition & 1 deletion far/synchro.hpp
Expand Up @@ -72,7 +72,7 @@ inline string make_name(const S& HashPart, const S& TextPart)
return Str;
}

class Thread: public os::HandleWrapper, swapable<Thread>
class Thread: public os::HandleWrapper
{
public:
NONCOPYABLE(Thread);
Expand Down
2 changes: 1 addition & 1 deletion far/vbuild.m4
@@ -1 +1 @@
m4_define(BUILD,4584)m4_dnl
m4_define(BUILD,4585)m4_dnl

0 comments on commit 7dcd386

Please sign in to comment.