Changeset 85289 in vbox for trunk/include/VBox
- Timestamp:
- Jul 13, 2020 12:21:34 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 139266
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/com/array.h
r82968 r85289 1012 1012 } 1013 1013 1014 voidcloneTo(SafeArray<T>& aOther) const1014 HRESULT cloneTo(SafeArray<T>& aOther) const 1015 1015 { 1016 1016 aOther.reset(size()); 1017 aOther.initFrom(*this);1017 return aOther.initFrom(*this); 1018 1018 } 1019 1019 … … 1088 1088 } 1089 1089 1090 inline voidinitFrom(const com::SafeArray<T> & aRef);1091 inline voidinitFrom(const T* aPtr, size_t aSize);1090 inline HRESULT initFrom(const com::SafeArray<T> & aRef); 1091 inline HRESULT initFrom(const T* aPtr, size_t aSize); 1092 1092 1093 1093 // Public methods for internal purposes only. … … 1295 1295 /* Few fast specializations for primitive array types */ 1296 1296 template<> 1297 inline voidcom::SafeArray<BYTE>::initFrom(const com::SafeArray<BYTE> & aRef)1297 inline HRESULT com::SafeArray<BYTE>::initFrom(const com::SafeArray<BYTE> & aRef) 1298 1298 { 1299 1299 size_t sSize = aRef.size(); 1300 resize(sSize); 1301 ::memcpy(raw(), aRef.raw(), sSize); 1300 if (resize(sSize)) 1301 { 1302 ::memcpy(raw(), aRef.raw(), sSize); 1303 return S_OK; 1304 } 1305 return E_OUTOFMEMORY; 1302 1306 } 1303 1307 template<> 1304 inline void com::SafeArray<BYTE>::initFrom(const BYTE* aPtr, size_t aSize) 1305 { 1306 resize(aSize); 1307 ::memcpy(raw(), aPtr, aSize); 1308 inline HRESULT com::SafeArray<BYTE>::initFrom(const BYTE *aPtr, size_t aSize) 1309 { 1310 if (resize(aSize)) 1311 { 1312 ::memcpy(raw(), aPtr, aSize); 1313 return S_OK; 1314 } 1315 return E_OUTOFMEMORY; 1308 1316 } 1309 1317 1310 1318 1311 1319 template<> 1312 inline voidcom::SafeArray<SHORT>::initFrom(const com::SafeArray<SHORT> & aRef)1320 inline HRESULT com::SafeArray<SHORT>::initFrom(const com::SafeArray<SHORT> & aRef) 1313 1321 { 1314 1322 size_t sSize = aRef.size(); 1315 resize(sSize); 1316 ::memcpy(raw(), aRef.raw(), sSize * sizeof(SHORT)); 1323 if (resize(sSize)) 1324 { 1325 ::memcpy(raw(), aRef.raw(), sSize * sizeof(SHORT)); 1326 return S_OK; 1327 } 1328 return E_OUTOFMEMORY; 1317 1329 } 1318 1330 template<> 1319 inline void com::SafeArray<SHORT>::initFrom(const SHORT* aPtr, size_t aSize) 1320 { 1321 resize(aSize); 1322 ::memcpy(raw(), aPtr, aSize * sizeof(SHORT)); 1331 inline HRESULT com::SafeArray<SHORT>::initFrom(const SHORT *aPtr, size_t aSize) 1332 { 1333 if (resize(aSize)) 1334 { 1335 ::memcpy(raw(), aPtr, aSize * sizeof(SHORT)); 1336 return S_OK; 1337 } 1338 return E_OUTOFMEMORY; 1323 1339 } 1324 1340 1325 1341 template<> 1326 inline voidcom::SafeArray<USHORT>::initFrom(const com::SafeArray<USHORT> & aRef)1342 inline HRESULT com::SafeArray<USHORT>::initFrom(const com::SafeArray<USHORT> & aRef) 1327 1343 { 1328 1344 size_t sSize = aRef.size(); 1329 resize(sSize); 1330 ::memcpy(raw(), aRef.raw(), sSize * sizeof(USHORT)); 1345 if (resize(sSize)) 1346 { 1347 ::memcpy(raw(), aRef.raw(), sSize * sizeof(USHORT)); 1348 return S_OK; 1349 } 1350 return E_OUTOFMEMORY; 1331 1351 } 1332 1352 template<> 1333 inline void com::SafeArray<USHORT>::initFrom(const USHORT* aPtr, size_t aSize) 1334 { 1335 resize(aSize); 1336 ::memcpy(raw(), aPtr, aSize * sizeof(USHORT)); 1353 inline HRESULT com::SafeArray<USHORT>::initFrom(const USHORT *aPtr, size_t aSize) 1354 { 1355 if (resize(aSize)) 1356 { 1357 ::memcpy(raw(), aPtr, aSize * sizeof(USHORT)); 1358 return S_OK; 1359 } 1360 return E_OUTOFMEMORY; 1337 1361 } 1338 1362 1339 1363 template<> 1340 inline voidcom::SafeArray<LONG>::initFrom(const com::SafeArray<LONG> & aRef)1364 inline HRESULT com::SafeArray<LONG>::initFrom(const com::SafeArray<LONG> & aRef) 1341 1365 { 1342 1366 size_t sSize = aRef.size(); 1343 resize(sSize); 1344 ::memcpy(raw(), aRef.raw(), sSize * sizeof(LONG)); 1367 if (resize(sSize)) 1368 { 1369 ::memcpy(raw(), aRef.raw(), sSize * sizeof(LONG)); 1370 return S_OK; 1371 } 1372 return E_OUTOFMEMORY; 1345 1373 } 1346 1374 template<> 1347 inline void com::SafeArray<LONG>::initFrom(const LONG* aPtr, size_t aSize) 1348 { 1349 resize(aSize); 1350 ::memcpy(raw(), aPtr, aSize * sizeof(LONG)); 1375 inline HRESULT com::SafeArray<LONG>::initFrom(const LONG *aPtr, size_t aSize) 1376 { 1377 if (resize(aSize)) 1378 { 1379 ::memcpy(raw(), aPtr, aSize * sizeof(LONG)); 1380 return S_OK; 1381 } 1382 return E_OUTOFMEMORY; 1351 1383 } 1352 1384
Note:
See TracChangeset
for help on using the changeset viewer.