diff options
32 files changed, 66 insertions, 87 deletions
diff --git a/src/mongo/bson/bson_validate_test.cpp b/src/mongo/bson/bson_validate_test.cpp index 77dfc11e15c..b3965763861 100644 --- a/src/mongo/bson/bson_validate_test.cpp +++ b/src/mongo/bson/bson_validate_test.cpp @@ -27,7 +27,6 @@ #define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kDefault -#include <boost/scoped_array.hpp> #include "mongo/base/data_view.h" #include "mongo/db/jsobj.h" @@ -39,7 +38,7 @@ namespace { using namespace mongo; - using boost::scoped_array; + using std::unique_ptr; using std::endl; void appendInvalidStringElement(const char* fieldName, BufBuilder* bb) { @@ -165,7 +164,7 @@ namespace { int32_t fuzzFrequency = fuzzFrequencies[ i ]; // Copy the 'original' BSONObj to 'buffer'. - scoped_array<char> buffer( new char[ original.objsize() ] ); + unique_ptr<char[]> buffer( new char[ original.objsize() ] ); memcpy( buffer.get(), original.objdata(), original.objsize() ); // Randomly flip bits in 'buffer', with probability determined by 'fuzzFrequency'. The diff --git a/src/mongo/bson/bsonobj.h b/src/mongo/bson/bsonobj.h index e8f82e895cc..32411f21118 100644 --- a/src/mongo/bson/bsonobj.h +++ b/src/mongo/bson/bsonobj.h @@ -29,7 +29,6 @@ #pragma once -#include <boost/scoped_array.hpp> #include <list> #include <set> #include <string> @@ -721,7 +720,7 @@ namespace mongo { private: const int _nfields; - const boost::scoped_array<const char *> _fields; + const std::unique_ptr<const char *[]> _fields; int _cur; }; diff --git a/src/mongo/client/cyrus_sasl_client_session.h b/src/mongo/client/cyrus_sasl_client_session.h index d24d12124c5..977b22d9a93 100644 --- a/src/mongo/client/cyrus_sasl_client_session.h +++ b/src/mongo/client/cyrus_sasl_client_session.h @@ -25,7 +25,6 @@ * then also delete it in the license file. */ -#include <boost/scoped_array.hpp> #include "mongo/client/sasl_client_session.h" @@ -77,7 +76,7 @@ namespace mongo { bool _done; /// Stored of password in sasl_secret_t format - boost::scoped_array<char> _secret; + std::unique_ptr<char[]> _secret; /// Callbacks registered on _saslConnection for providing the Cyrus SASL library with /// parameter values, etc. diff --git a/src/mongo/client/sasl_client_session.h b/src/mongo/client/sasl_client_session.h index 4bb6c9b72ba..80d8b698d6c 100644 --- a/src/mongo/client/sasl_client_session.h +++ b/src/mongo/client/sasl_client_session.h @@ -27,7 +27,7 @@ #pragma once -#include <boost/scoped_array.hpp> +#include <memory> #include <string> #include "mongo/base/disallow_copying.h" @@ -133,7 +133,7 @@ namespace mongo { * Buffer object that owns data for a single parameter. */ struct DataBuffer { - boost::scoped_array<char> data; + std::unique_ptr<char[]> data; size_t size; }; diff --git a/src/mongo/client/sasl_sspi.cpp b/src/mongo/client/sasl_sspi.cpp index 391530e20eb..8d2ccc55df3 100644 --- a/src/mongo/client/sasl_sspi.cpp +++ b/src/mongo/client/sasl_sspi.cpp @@ -32,7 +32,6 @@ #include "mongo/platform/basic.h" -#include <boost/scoped_array.hpp> #include <sasl/sasl.h> #include <sasl/saslplug.h> #include <sspi.h> @@ -219,7 +218,7 @@ namespace { sasl_client_params_t* cparams, const char *serverin, unsigned serverinlen) { - boost::scoped_array<char> message(new char[serverinlen]); + std::unique_ptr<char[]> message(new char[serverinlen]); memcpy(message.get(), serverin, serverinlen); SecBuffer wrapBufs[2]; @@ -299,7 +298,7 @@ namespace { // See RFC4752. int plaintextMessageSize = 4 + pcctx->userPlusRealm.size(); - boost::scoped_array<char> message(new char[sizes.cbSecurityTrailer + + std::unique_ptr<char[]> message(new char[sizes.cbSecurityTrailer + plaintextMessageSize + sizes.cbBlockSize]); char* plaintextMessage = message.get() + sizes.cbSecurityTrailer; diff --git a/src/mongo/db/field_ref.h b/src/mongo/db/field_ref.h index 70bb97cf587..b22bfcb3da9 100644 --- a/src/mongo/db/field_ref.h +++ b/src/mongo/db/field_ref.h @@ -28,7 +28,6 @@ #pragma once -#include <boost/scoped_array.hpp> #include <iosfwd> #include <string> #include <vector> diff --git a/src/mongo/db/pipeline/document.cpp b/src/mongo/db/pipeline/document.cpp index 4a54a5e614d..741834d39cf 100644 --- a/src/mongo/db/pipeline/document.cpp +++ b/src/mongo/db/pipeline/document.cpp @@ -31,7 +31,6 @@ #include "mongo/db/pipeline/document.h" #include <boost/functional/hash.hpp> -#include <boost/scoped_array.hpp> #include "mongo/db/jsobj.h" #include "mongo/db/pipeline/field_path.h" @@ -146,7 +145,7 @@ namespace mongo { uassert(16490, "Tried to make oversized document", capacity <= size_t(BufferMaxSize)); - boost::scoped_array<char> oldBuf(_buffer); + std::unique_ptr<char[]> oldBuf(_buffer); _buffer = new char[capacity]; _bufferEnd = _buffer + capacity - hashTabBytes(); @@ -211,7 +210,7 @@ namespace mongo { } DocumentStorage::~DocumentStorage() { - boost::scoped_array<char> deleteBufferAtScopeEnd (_buffer); + std::unique_ptr<char[]> deleteBufferAtScopeEnd (_buffer); for (DocumentStorageIterator it = iteratorAll(); !it.atEnd(); it.advance()) { it->val.~Value(); // explicit destructor call diff --git a/src/mongo/db/pipeline/expression.h b/src/mongo/db/pipeline/expression.h index 05891fe1592..d1f24408038 100644 --- a/src/mongo/db/pipeline/expression.h +++ b/src/mongo/db/pipeline/expression.h @@ -88,7 +88,7 @@ namespace mongo { private: Document _root; - const boost::scoped_array<Value> _rest; + const std::unique_ptr<Value[]> _rest; const size_t _numVars; }; diff --git a/src/mongo/db/pipeline/value.cpp b/src/mongo/db/pipeline/value.cpp index c949601ac4d..833d7ac23de 100644 --- a/src/mongo/db/pipeline/value.cpp +++ b/src/mongo/db/pipeline/value.cpp @@ -32,7 +32,6 @@ #include <cmath> #include <boost/functional/hash.hpp> -#include <boost/scoped_array.hpp> #include "mongo/base/compare_numbers.h" #include "mongo/db/jsobj.h" @@ -124,7 +123,7 @@ namespace mongo { const size_t totalLen = patternLen + 1/*middle NUL*/ + flagsLen; // Need to copy since putString doesn't support scatter-gather. - boost::scoped_array<char> buf (new char[totalLen]); + std::unique_ptr<char[]> buf (new char[totalLen]); re.pattern.copyTo(buf.get(), true); re.flags.copyTo(buf.get() + patternLen + 1, false); // no NUL putString(StringData(buf.get(), totalLen)); diff --git a/src/mongo/db/repl/isself.cpp b/src/mongo/db/repl/isself.cpp index 4746ff01a28..d0b44858913 100644 --- a/src/mongo/db/repl/isself.cpp +++ b/src/mongo/db/repl/isself.cpp @@ -66,7 +66,6 @@ #elif defined(_WIN32) #include <boost/asio/detail/socket_ops.hpp> -#include <boost/scoped_array.hpp> #include <boost/system/error_code.hpp> #include <iphlpapi.h> #include <winsock2.h> @@ -260,7 +259,7 @@ namespace { // for the rare case that the adapter config changes between calls ULONG adaptersLen = 15 * 1024; - boost::scoped_array<char> buf(new char[adaptersLen]); + std::unique_ptr<char[]> buf(new char[adaptersLen]); IP_ADAPTER_ADDRESSES* adapters = reinterpret_cast<IP_ADAPTER_ADDRESSES*>(buf.get()); DWORD err; diff --git a/src/mongo/db/sorter/sorter.cpp b/src/mongo/db/sorter/sorter.cpp index 8b2e82ef665..adf287fa86d 100644 --- a/src/mongo/db/sorter/sorter.cpp +++ b/src/mongo/db/sorter/sorter.cpp @@ -228,7 +228,7 @@ namespace mongo { massert(17061, "couldn't get uncompressed length", snappy::GetUncompressedLength(_buffer.get(), blockSize, &uncompressedSize)); - boost::scoped_array<char> decompressionBuffer(new char[uncompressedSize]); + std::unique_ptr<char[]> decompressionBuffer(new char[uncompressedSize]); massert(17062, "decompression failed", snappy::RawUncompress(_buffer.get(), blockSize, @@ -257,7 +257,7 @@ namespace mongo { const Settings _settings; bool _done; - boost::scoped_array<char> _buffer; + std::unique_ptr<char[]> _buffer; std::unique_ptr<BufReader> _reader; std::string _fileName; boost::shared_ptr<FileDeleter> _fileDeleter; // Must outlive _file diff --git a/src/mongo/db/sorter/sorter_test.cpp b/src/mongo/db/sorter/sorter_test.cpp index 6c6501dc576..f053c5de4a7 100644 --- a/src/mongo/db/sorter/sorter_test.cpp +++ b/src/mongo/db/sorter/sorter_test.cpp @@ -497,7 +497,7 @@ namespace mongo { NUM_ITEMS = 500*1000, MEM_LIMIT = 64*1024, }; - boost::scoped_array<int> _array; + std::unique_ptr<int[]> _array; }; diff --git a/src/mongo/db/storage/key_string.cpp b/src/mongo/db/storage/key_string.cpp index c77e5fc2e72..526460c1d68 100644 --- a/src/mongo/db/storage/key_string.cpp +++ b/src/mongo/db/storage/key_string.cpp @@ -34,7 +34,6 @@ #include "mongo/db/storage/key_string.h" -#include <boost/scoped_array.hpp> #include <cmath> #include "mongo/base/data_view.h" @@ -839,7 +838,7 @@ namespace mongo { *stream << BSONBinData(ptr, size, subType); } else { - boost::scoped_array<char> flipped(new char[size]); + std::unique_ptr<char[]> flipped(new char[size]); memcpy_flipBits(flipped.get(), ptr, size); *stream << BSONBinData(flipped.get(), size, subType); } @@ -863,7 +862,7 @@ namespace mongo { case CType::kDBRef: { size_t size = endian::bigToNative(readType<uint32_t>(reader, inverted)); if (inverted) { - boost::scoped_array<char> ns(new char[size]); + std::unique_ptr<char[]> ns(new char[size]); memcpy_flipBits(ns.get(), reader->skip(size), size); char oidBytes[OID::kOIDSize]; memcpy_flipBits(oidBytes, reader->skip(OID::kOIDSize), OID::kOIDSize); diff --git a/src/mongo/db/storage/mmap_v1/durop.cpp b/src/mongo/db/storage/mmap_v1/durop.cpp index ee91e0c60aa..573c1f5688a 100644 --- a/src/mongo/db/storage/mmap_v1/durop.cpp +++ b/src/mongo/db/storage/mmap_v1/durop.cpp @@ -48,7 +48,7 @@ namespace mongo { - using boost::scoped_array; + using std::unique_ptr; using boost::shared_ptr; using std::endl; using std::string; @@ -162,7 +162,7 @@ namespace mongo { massert(13547, str::stream() << "recover couldn't create file " << full, f.is_open()); unsigned long long left = _len; const unsigned blksz = 64 * 1024; - scoped_array<char> v( new char[blksz] ); + unique_ptr<char[]> v( new char[blksz] ); memset( v.get(), 0, blksz ); fileofs ofs = 0; while( left ) { diff --git a/src/mongo/db/storage/mmap_v1/file_allocator.cpp b/src/mongo/db/storage/mmap_v1/file_allocator.cpp index d0bd764d25a..17ea4b328b2 100644 --- a/src/mongo/db/storage/mmap_v1/file_allocator.cpp +++ b/src/mongo/db/storage/mmap_v1/file_allocator.cpp @@ -289,7 +289,7 @@ namespace mongo { lseek(fd, 0, SEEK_SET); const long z = 256 * 1024; - const boost::scoped_array<char> buf_holder (new char[z]); + const std::unique_ptr<char[]> buf_holder (new char[z]); char* buf = buf_holder.get(); memset(buf, 0, z); long left = size; diff --git a/src/mongo/db/storage/mmap_v1/record_access_tracker.h b/src/mongo/db/storage/mmap_v1/record_access_tracker.h index 7145ed833dc..aa98e22230e 100644 --- a/src/mongo/db/storage/mmap_v1/record_access_tracker.h +++ b/src/mongo/db/storage/mmap_v1/record_access_tracker.h @@ -28,7 +28,6 @@ #pragma once -#include <boost/scoped_array.hpp> #include "mongo/util/concurrency/mutex.h" @@ -154,7 +153,7 @@ namespace mongo { bool _blockSupported; // An array of Rolling instances for tracking record accesses. - boost::scoped_array<Rolling> _rollingTable; + std::unique_ptr<Rolling[]> _rollingTable; }; } // namespace diff --git a/src/mongo/logger/rotatable_file_writer.cpp b/src/mongo/logger/rotatable_file_writer.cpp index f657f42c18d..f97e3a72958 100644 --- a/src/mongo/logger/rotatable_file_writer.cpp +++ b/src/mongo/logger/rotatable_file_writer.cpp @@ -30,7 +30,6 @@ #include "mongo/logger/rotatable_file_writer.h" #include <boost/filesystem/operations.hpp> -#include <boost/scoped_array.hpp> #include <cstdio> #include <fstream> @@ -61,7 +60,7 @@ namespace { // A Windows wchar_t encoding of a unicode codepoint never takes more instances of wchar_t // than the UTF-8 encoding takes instances of char. - boost::scoped_array<wchar_t> tempBuffer(new wchar_t[utf8Str.size()]); + std::unique_ptr<wchar_t[]> tempBuffer(new wchar_t[utf8Str.size()]); tempBuffer[0] = L'\0'; int finalSize = MultiByteToWideChar( CP_UTF8, // Code page diff --git a/src/mongo/platform/backtrace.cpp b/src/mongo/platform/backtrace.cpp index 8ed3303decd..f1c963aca22 100644 --- a/src/mongo/platform/backtrace.cpp +++ b/src/mongo/platform/backtrace.cpp @@ -32,9 +32,9 @@ #include "mongo/platform/backtrace.h" -#include <boost/smart_ptr/scoped_array.hpp> #include <cstdio> #include <dlfcn.h> +#include <memory> #include <string> #include <ucontext.h> #include <vector> @@ -141,7 +141,7 @@ namespace { size_t blockSize = size * sizeof(char*); size_t blockPtr = blockSize; const size_t kBufferSize = 8 * 1024; - boost::scoped_array<char> stringBuffer(new char[kBufferSize]); + std::unique_ptr<char[]> stringBuffer(new char[kBufferSize]); for (int i = 0; i < size; ++i) { size_t thisLength = 1 + addrtosymstr(array[i], stringBuffer.get(), kBufferSize); stringVector.push_back(string(stringBuffer.get())); diff --git a/src/mongo/scripting/engine.cpp b/src/mongo/scripting/engine.cpp index 153df5d7f6d..e42a3db8186 100644 --- a/src/mongo/scripting/engine.cpp +++ b/src/mongo/scripting/engine.cpp @@ -35,7 +35,6 @@ #include <cctype> #include <boost/filesystem/operations.hpp> -#include <boost/scoped_array.hpp> #include <boost/shared_ptr.hpp> #include "mongo/client/dbclientcursor.h" @@ -172,7 +171,7 @@ namespace { return false; } unsigned len = static_cast<unsigned>(fo); - boost::scoped_array<char> data (new char[len+1]); + std::unique_ptr<char[]> data (new char[len+1]); data[len] = 0; f.read(0, data.get(), len); diff --git a/src/mongo/scripting/v8-3.25_db.cpp b/src/mongo/scripting/v8-3.25_db.cpp index bf8fd9c78a5..f4fe7d6a88d 100644 --- a/src/mongo/scripting/v8-3.25_db.cpp +++ b/src/mongo/scripting/v8-3.25_db.cpp @@ -31,7 +31,6 @@ #include <iostream> #include <iomanip> -#include <boost/scoped_array.hpp> #include <boost/shared_ptr.hpp> #include "mongo/base/init.h" @@ -46,7 +45,7 @@ #include "mongo/util/text.h" using namespace std; -using boost::scoped_array; +using std::unique_ptr; using boost::shared_ptr; namespace mongo { @@ -895,7 +894,7 @@ namespace mongo { // up of valid hex digits, and fails in the hex utility functions int len = hexstr.length() / 2; - scoped_array<char> data(new char[len]); + unique_ptr<char[]> data(new char[len]); const char* src = hexstr.c_str(); for(int i = 0; i < len; i++) { data[i] = fromHex(src + i * 2); diff --git a/src/mongo/scripting/v8_db.cpp b/src/mongo/scripting/v8_db.cpp index b14016e86ea..6d4fa2a4e2f 100644 --- a/src/mongo/scripting/v8_db.cpp +++ b/src/mongo/scripting/v8_db.cpp @@ -31,7 +31,6 @@ #include <iostream> #include <iomanip> -#include <boost/scoped_array.hpp> #include <boost/shared_ptr.hpp> #include "mongo/base/init.h" @@ -50,7 +49,7 @@ #include "mongo/util/text.h" using namespace std; -using boost::scoped_array; +using std::unique_ptr; using boost::shared_ptr; namespace mongo { @@ -995,7 +994,7 @@ namespace mongo { // up of valid hex digits, and fails in the hex utility functions int len = hexstr.length() / 2; - scoped_array<char> data(new char[len]); + unique_ptr<char[]> data(new char[len]); const char* src = hexstr.c_str(); for(int i = 0; i < len; i++) { data[i] = fromHex(src + i * 2); diff --git a/src/mongo/shell/linenoise.cpp b/src/mongo/shell/linenoise.cpp index 753f1154f27..43b42b9f028 100644 --- a/src/mongo/shell/linenoise.cpp +++ b/src/mongo/shell/linenoise.cpp @@ -119,12 +119,11 @@ #include "mk_wcwidth.h" #include <string> #include <vector> -#include <boost/smart_ptr/scoped_array.hpp> using std::string; using std::vector; -using boost::scoped_array; +using std::unique_ptr; using linenoise_utf8::UChar8; using linenoise_utf8::UChar32; @@ -1652,7 +1651,7 @@ int InputBuffer::incrementalHistorySearch( PromptBase& pi, int startChar ) { if ( historyIndex == historyLen - 1 ) { free( history[historyLen - 1] ); bufferSize = sizeof( UChar32 ) * len + 1; - scoped_array< UChar8 > tempBuffer( new UChar8[ bufferSize ] ); + unique_ptr< UChar8 []> tempBuffer( new UChar8[ bufferSize ] ); copyString32to8( tempBuffer.get(), buf32, bufferSize ); history[ historyLen - 1 ] = reinterpret_cast< UChar8 * >( strdup( reinterpret_cast< const char * >( tempBuffer.get() ) ) ); } @@ -1759,7 +1758,7 @@ int InputBuffer::incrementalHistorySearch( PromptBase& pi, int startChar ) { enableRawMode(); // Back from Linux shell, re-enter raw mode { bufferSize = historyLineLength + 1; - scoped_array< UChar32 > tempUnicode( new UChar32[ bufferSize ] ); + unique_ptr< UChar32 []> tempUnicode( new UChar32[ bufferSize ] ); copyString8to32( tempUnicode.get(), history[ historyIndex ], bufferSize, ucharCount, errorCode ); dynamicRefresh( dp, tempUnicode.get(), historyLineLength, historyLinePosition ); } @@ -1770,7 +1769,7 @@ int InputBuffer::incrementalHistorySearch( PromptBase& pi, int startChar ) { // these characters update the search string, and hence the selected input line case ctrlChar( 'H' ): // backspace/ctrl-H, delete char to left of cursor if ( dp.searchTextLen > 0 ) { - scoped_array<UChar32> tempUnicode( new UChar32[ dp.searchTextLen ] ); + unique_ptr<UChar32[]> tempUnicode( new UChar32[ dp.searchTextLen ] ); --dp.searchTextLen; dp.searchText[ dp.searchTextLen ] = 0; copyString32( tempUnicode.get(), dp.searchText.get(), dp.searchTextLen + 1 ); @@ -1786,7 +1785,7 @@ int InputBuffer::incrementalHistorySearch( PromptBase& pi, int startChar ) { default: if ( !isControlChar( c ) && c <= 0x0010FFFF ) { // not an action character - scoped_array< UChar32 > tempUnicode( new UChar32[ dp.searchTextLen + 2 ] ); + unique_ptr< UChar32 []> tempUnicode( new UChar32[ dp.searchTextLen + 2 ] ); copyString32( tempUnicode.get(), dp.searchText.get(), dp.searchTextLen + 2 ); tempUnicode[ dp.searchTextLen ] = c; tempUnicode[ dp.searchTextLen + 1 ] = 0; @@ -1889,7 +1888,7 @@ int InputBuffer::getInputLine( PromptBase& pi ) { // The latest history entry is always our current buffer if ( len > 0 ) { size_t bufferSize = sizeof( UChar32 ) * len + 1; - scoped_array< char > tempBuffer( new char[ bufferSize ] ); + unique_ptr< char []> tempBuffer( new char[ bufferSize ] ); copyString32to8( reinterpret_cast< UChar8 * >( tempBuffer.get() ), buf32, bufferSize ); linenoiseHistoryAdd( tempBuffer.get() ); } @@ -2193,7 +2192,7 @@ int InputBuffer::getInputLine( PromptBase& pi ) { if ( historyIndex == historyLen - 1 ) { free( history[historyLen - 1] ); size_t tempBufferSize = sizeof( UChar32 ) * len + 1; - scoped_array< UChar8 > tempBuffer( new UChar8[ tempBufferSize ] ); + unique_ptr< UChar8 []> tempBuffer( new UChar8[ tempBufferSize ] ); copyString32to8( tempBuffer.get(), buf32, tempBufferSize ); history[historyLen - 1] = reinterpret_cast< UChar8 * >( strdup( reinterpret_cast< const char * >( tempBuffer.get() ) ) ); } @@ -2385,7 +2384,7 @@ int InputBuffer::getInputLine( PromptBase& pi ) { if ( historyIndex == historyLen - 1 ) { free( history[historyLen - 1] ); size_t tempBufferSize = sizeof( UChar32 ) * len + 1; - scoped_array< UChar8 > tempBuffer( new UChar8[ tempBufferSize ] ); + unique_ptr< UChar8 []> tempBuffer( new UChar8[ tempBufferSize ] ); copyString32to8( tempBuffer.get(), buf32, tempBufferSize ); history[historyLen - 1] = reinterpret_cast< UChar8 * >( strdup( reinterpret_cast< const char * >( tempBuffer.get() ) ) ); } @@ -2466,7 +2465,7 @@ void linenoisePreloadBuffer( const char* preloadText ) { return; } int bufferSize = strlen( preloadText ) + 1; - scoped_array< char > tempBuffer( new char[ bufferSize ] ); + unique_ptr< char []> tempBuffer( new char[ bufferSize ] ); strncpy( &tempBuffer[0], preloadText, bufferSize ); // remove characters that won't display correctly @@ -2535,7 +2534,7 @@ char* linenoise( const char* prompt ) { if ( write32( 1, pi.promptText.get(), pi.promptChars ) == -1 ) return 0; fflush( stdout ); if ( preloadedBufferContents.empty() ) { - scoped_array<char> buf8( new char[ LINENOISE_MAX_LINE ] ); + unique_ptr<char[]> buf8( new char[ LINENOISE_MAX_LINE ] ); if ( fgets( buf8.get(), LINENOISE_MAX_LINE, stdin ) == NULL ) { return NULL; } @@ -2568,13 +2567,13 @@ char* linenoise( const char* prompt ) { return NULL; } size_t bufferSize = sizeof( UChar32 ) * ib.length() + 1; - scoped_array<UChar8> buf8( new UChar8[ bufferSize ] ); + unique_ptr<UChar8[]> buf8( new UChar8[ bufferSize ] ); copyString32to8( buf8.get(), buf32, bufferSize ); return strdup( reinterpret_cast<char*>( buf8.get() ) ); // caller must free buffer } } else { // input not from a terminal, we should work with piped input, i.e. redirected stdin - scoped_array<char> buf8( new char[ LINENOISE_MAX_LINE ] ); + unique_ptr<char[]> buf8( new char[ LINENOISE_MAX_LINE ] ); if ( fgets( buf8.get(), LINENOISE_MAX_LINE, stdin ) == NULL ) { return NULL; } diff --git a/src/mongo/shell/linenoise_utf8.cpp b/src/mongo/shell/linenoise_utf8.cpp index f5c69708bb8..986e87259f6 100644 --- a/src/mongo/shell/linenoise_utf8.cpp +++ b/src/mongo/shell/linenoise_utf8.cpp @@ -336,7 +336,7 @@ int strncmp32( UChar32* first32, UChar32* second32, size_t length ) { */ int write32( int fileHandle, const UChar32* string32, unsigned int sourceLengthInCharacters ) { size_t tempBufferBytes = 4 * sourceLengthInCharacters + 1; - boost::scoped_array<char> tempCharString( new char[ tempBufferBytes ] ); + std::unique_ptr<char[]> tempCharString( new char[ tempBufferBytes ] ); size_t count = copyString32to8counted( reinterpret_cast<UChar8*>( tempCharString.get() ), string32, tempBufferBytes, diff --git a/src/mongo/shell/linenoise_utf8.h b/src/mongo/shell/linenoise_utf8.h index b650098e73c..4cca38ad298 100644 --- a/src/mongo/shell/linenoise_utf8.h +++ b/src/mongo/shell/linenoise_utf8.h @@ -27,8 +27,8 @@ * then also delete it in the license file. */ -#include <boost/smart_ptr/scoped_array.hpp> #include <algorithm> +#include <memory> #include <string.h> namespace linenoise_utf8 { @@ -165,7 +165,7 @@ protected: size_t _len; // in units of char_t without nul size_t _cap; // size of _str buffer including nul size_t _chars; // number of codepoints - boost::scoped_array<char_t> _str; + std::unique_ptr<char_t[]> _str; }; struct Utf32String; diff --git a/src/mongo/shell/shell_utils_launcher.cpp b/src/mongo/shell/shell_utils_launcher.cpp index 4578e195f4a..2b8aa0239db 100644 --- a/src/mongo/shell/shell_utils_launcher.cpp +++ b/src/mongo/shell/shell_utils_launcher.cpp @@ -33,7 +33,6 @@ #include "mongo/shell/shell_utils_launcher.h" -#include <boost/scoped_array.hpp> #include <boost/thread/thread.hpp> #include <iostream> #include <map> @@ -62,7 +61,7 @@ namespace mongo { - using boost::scoped_array; + using std::unique_ptr; using std::cout; using std::endl; using std::make_pair; @@ -398,7 +397,7 @@ namespace mongo { string args = ss.str(); - boost::scoped_array<TCHAR> args_tchar (new TCHAR[args.size() + 1]); + std::unique_ptr<TCHAR[]> args_tchar (new TCHAR[args.size() + 1]); size_t i; for(i=0; i < args.size(); i++) args_tchar[i] = args[i]; @@ -444,14 +443,14 @@ namespace mongo { #else - scoped_array<const char *> argvStorage( new const char* [_argv.size()+1] ); + unique_ptr<const char *[]> argvStorage( new const char* [_argv.size()+1] ); const char** argv = argvStorage.get(); for (unsigned i=0; i < _argv.size(); i++) { argv[i] = _argv[i].c_str(); } argv[_argv.size()] = 0; - scoped_array<const char *> envStorage( new const char* [2] ); + unique_ptr<const char *[]> envStorage( new const char* [2] ); const char** env = envStorage.get(); env[0] = NULL; env[1] = NULL; diff --git a/src/mongo/util/base64.h b/src/mongo/util/base64.h index cfbea3fad20..35de757532a 100644 --- a/src/mongo/util/base64.h +++ b/src/mongo/util/base64.h @@ -29,7 +29,6 @@ #pragma once -#include <boost/scoped_array.hpp> #include "mongo/util/assert_util.h" @@ -65,7 +64,7 @@ namespace mongo { private: const unsigned char * encode; public: - boost::scoped_array<unsigned char> decode; + std::unique_ptr<unsigned char[]> decode; }; extern Alphabet alphabet; diff --git a/src/mongo/util/net/listen.cpp b/src/mongo/util/net/listen.cpp index 2a8e366e105..4cb97c9367e 100644 --- a/src/mongo/util/net/listen.cpp +++ b/src/mongo/util/net/listen.cpp @@ -34,7 +34,6 @@ #include "mongo/util/net/listen.h" -#include <boost/scoped_array.hpp> #include <boost/shared_ptr.hpp> #include "mongo/config.h" @@ -430,7 +429,7 @@ namespace mongo { } OwnedPointerVector<EventHolder> eventHolders; - boost::scoped_array<WSAEVENT> events(new WSAEVENT[_socks.size()]); + std::unique_ptr<WSAEVENT[]> events(new WSAEVENT[_socks.size()]); // Populate events array with an event for each socket we are watching diff --git a/src/mongo/util/processinfo_windows.cpp b/src/mongo/util/processinfo_windows.cpp index e370076fec9..f52ff511ef9 100644 --- a/src/mongo/util/processinfo_windows.cpp +++ b/src/mongo/util/processinfo_windows.cpp @@ -31,7 +31,6 @@ #include "mongo/platform/basic.h" -#include <boost/scoped_array.hpp> #include <iostream> #include <psapi.h> @@ -39,7 +38,7 @@ #include "mongo/util/log.h" using namespace std; -using boost::scoped_array; +using std::unique_ptr; namespace mongo { @@ -177,7 +176,7 @@ namespace mongo { return false; } - boost::scoped_array<char> verData(new char[verSize]); + std::unique_ptr<char[]> verData(new char[verSize]); if (GetFileVersionInfoA(filePath, NULL, verSize, verData.get()) == 0) { DWORD gle = GetLastError(); warning() << "GetFileVersionInfoSizeA on " << filePath << " failed with " << errnoWithDescription(gle); @@ -213,7 +212,7 @@ namespace mongo { return false; } - boost::scoped_array<char> systemDirectory(new char[pathBufferSize]); + std::unique_ptr<char[]> systemDirectory(new char[pathBufferSize]); UINT systemDirectoryPathLen; systemDirectoryPathLen = GetSystemDirectoryA(systemDirectory.get(), pathBufferSize); if (systemDirectoryPathLen == 0) { @@ -380,7 +379,7 @@ namespace mongo { DWORD returnLength = 0; DWORD numaNodeCount = 0; - scoped_array<SYSTEM_LOGICAL_PROCESSOR_INFORMATION> buffer; + unique_ptr<SYSTEM_LOGICAL_PROCESSOR_INFORMATION[]> buffer; LPFN_GLPI glpi(reinterpret_cast<LPFN_GLPI>(GetProcAddress( GetModuleHandleW(L"kernel32"), @@ -454,7 +453,7 @@ namespace mongo { bool ProcessInfo::pagesInMemory(const void* start, size_t numPages, vector<char>* out) { out->resize(numPages); - scoped_array<PSAPI_WORKING_SET_EX_INFORMATION> wsinfo( + unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> wsinfo( new PSAPI_WORKING_SET_EX_INFORMATION[numPages]); const void* startOfFirstPage = alignToStartOfPage(start); diff --git a/src/mongo/util/stacktrace_windows.cpp b/src/mongo/util/stacktrace_windows.cpp index 4abc27e3c97..b11ae1d630e 100644 --- a/src/mongo/util/stacktrace_windows.cpp +++ b/src/mongo/util/stacktrace_windows.cpp @@ -33,7 +33,6 @@ #include <DbgHelp.h> #include <boost/filesystem/operations.hpp> -#include <boost/smart_ptr/scoped_array.hpp> #include <cstdio> #include <cstdlib> #include <iostream> @@ -58,7 +57,7 @@ namespace mongo { if (symbolSearchPath.empty()) { static const size_t bufferSize = 1024; - boost::scoped_array<char> pathBuffer(new char[bufferSize]); + std::unique_ptr<char[]> pathBuffer(new char[bufferSize]); GetModuleFileNameA(NULL, pathBuffer.get(), bufferSize); boost::filesystem::path exePath(pathBuffer.get()); symbolSearchPath = exePath.parent_path().string(); @@ -122,7 +121,7 @@ namespace mongo { filename.swap( shorter ); } static const size_t bufferSize = 32; - boost::scoped_array<char> lineNumber( new char[bufferSize] ); + std::unique_ptr<char[]> lineNumber( new char[bufferSize] ); _snprintf( lineNumber.get(), bufferSize, "(%u)", line64.LineNumber ); filename += lineNumber.get(); returnedSourceAndLine->swap( filename ); @@ -148,7 +147,7 @@ namespace mongo { } std::string symbolString( symbolInfo->Name ); static const size_t bufferSize = 32; - boost::scoped_array<char> symbolOffset( new char[bufferSize] ); + std::unique_ptr<char[]> symbolOffset( new char[bufferSize] ); _snprintf( symbolOffset.get(), bufferSize, "+0x%x", displacement64 ); symbolString += symbolOffset.get(); returnedSymbolAndOffset->swap( symbolString ); @@ -219,7 +218,7 @@ namespace mongo { const size_t nameSize = 1024; const size_t symbolBufferSize = sizeof(SYMBOL_INFO) + nameSize; - boost::scoped_array<char> symbolCharBuffer( new char[symbolBufferSize] ); + std::unique_ptr<char[]> symbolCharBuffer( new char[symbolBufferSize] ); memset( symbolCharBuffer.get(), 0, symbolBufferSize ); SYMBOL_INFO* symbolBuffer = reinterpret_cast<SYMBOL_INFO*>( symbolCharBuffer.get() ); symbolBuffer->SizeOfStruct = sizeof(SYMBOL_INFO); diff --git a/src/mongo/util/stringutils.h b/src/mongo/util/stringutils.h index c57205b4160..794b128816a 100644 --- a/src/mongo/util/stringutils.h +++ b/src/mongo/util/stringutils.h @@ -31,10 +31,10 @@ #include <ctype.h> +#include <memory> #include <string> #include <vector> -#include <boost/scoped_array.hpp> #include "mongo/base/string_data.h" @@ -50,7 +50,7 @@ namespace mongo { inline std::string tolowerString( StringData input ) { std::string::size_type sz = input.size(); - boost::scoped_array<char> line(new char[sz+1]); + std::unique_ptr<char[]> line(new char[sz+1]); char * copy = line.get(); for ( std::string::size_type i=0; i<sz; i++ ) { diff --git a/src/mongo/util/text.cpp b/src/mongo/util/text.cpp index 3b0e7ee7d6f..264c9a0e771 100644 --- a/src/mongo/util/text.cpp +++ b/src/mongo/util/text.cpp @@ -30,7 +30,6 @@ #include "mongo/util/text.h" #include <boost/integer_traits.hpp> -#include <boost/smart_ptr/scoped_array.hpp> #include <errno.h> #include <iostream> #include <sstream> @@ -209,7 +208,7 @@ namespace mongo { if ( bufferSize == 0 ) { return std::wstring(); } - boost::scoped_array< wchar_t > tempBuffer( new wchar_t[ bufferSize ] ); + std::unique_ptr< wchar_t []> tempBuffer( new wchar_t[ bufferSize ] ); tempBuffer[0] = 0; MultiByteToWideChar( CP_UTF8, // Code page @@ -241,7 +240,7 @@ namespace mongo { if ( bufferSize == 0 ) { return true; } - boost::scoped_array<wchar_t> utf16String( new wchar_t[ bufferSize ] ); + std::unique_ptr<wchar_t[]> utf16String( new wchar_t[ bufferSize ] ); MultiByteToWideChar( CP_UTF8, // Code page 0, // Flags diff --git a/src/mongo/util/unordered_fast_key_table.h b/src/mongo/util/unordered_fast_key_table.h index e7d670cc24d..786747bcecb 100644 --- a/src/mongo/util/unordered_fast_key_table.h +++ b/src/mongo/util/unordered_fast_key_table.h @@ -29,7 +29,7 @@ #pragma once -#include <boost/smart_ptr/scoped_array.hpp> +#include <memory> #include "mongo/base/disallow_copying.h" @@ -85,7 +85,7 @@ namespace mongo { unsigned _capacity; unsigned _maxProbe; - boost::scoped_array<Entry> _entries; + std::unique_ptr<Entry[]> _entries; }; public: |