Merge "Implement C++11 move semantics for android::FileMap"

This commit is contained in:
Adam Lesinski 2015-10-02 01:16:05 +00:00 committed by Gerrit Code Review
commit c6c6ab50bc
2 changed files with 40 additions and 0 deletions

View file

@ -52,6 +52,9 @@ class FileMap {
public:
FileMap(void);
FileMap(FileMap&& f);
FileMap& operator=(FileMap&& f);
/*
* Create a new mapping on an open file.
*

View file

@ -53,6 +53,43 @@ FileMap::FileMap(void)
{
}
// Move Constructor.
FileMap::FileMap(FileMap&& other)
: mFileName(other.mFileName), mBasePtr(other.mBasePtr), mBaseLength(other.mBaseLength),
mDataOffset(other.mDataOffset), mDataPtr(other.mDataPtr), mDataLength(other.mDataLength)
#if defined(__MINGW32__)
, mFileHandle(other.mFileHandle), mFileMapping(other.mFileMapping)
#endif
{
other.mFileName = NULL;
other.mBasePtr = NULL;
other.mDataPtr = NULL;
#if defined(__MINGW32__)
other.mFileHandle = 0;
other.mFileMapping = 0;
#endif
}
// Move assign operator.
FileMap& FileMap::operator=(FileMap&& other) {
mFileName = other.mFileName;
mBasePtr = other.mBasePtr;
mBaseLength = other.mBaseLength;
mDataOffset = other.mDataOffset;
mDataPtr = other.mDataPtr;
mDataLength = other.mDataLength;
other.mFileName = NULL;
other.mBasePtr = NULL;
other.mDataPtr = NULL;
#if defined(__MINGW32__)
mFileHandle = other.mFileHandle;
mFileMapping = other.mFileMapping;
other.mFileHandle = 0;
other.mFileMapping = 0;
#endif
return *this;
}
// Destructor.
FileMap::~FileMap(void)
{