Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #ifndef _FX_BASIC_H_ | 7 #ifndef _FX_BASIC_H_ |
| 8 #define _FX_BASIC_H_ | 8 #define _FX_BASIC_H_ |
| 9 #ifndef _FX_SYSTEM_H_ | 9 #ifndef _FX_SYSTEM_H_ |
| 10 #include "fx_system.h" | 10 #include "fx_system.h" |
| (...skipping 1411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1422 m_Location = location; | 1422 m_Location = location; |
| 1423 m_OldValue = *location; | 1423 m_OldValue = *location; |
| 1424 } | 1424 } |
| 1425 ~CFX_AutoRestorer() { *m_Location = m_OldValue; } | 1425 ~CFX_AutoRestorer() { *m_Location = m_OldValue; } |
| 1426 | 1426 |
| 1427 private: | 1427 private: |
| 1428 T* m_Location; | 1428 T* m_Location; |
| 1429 T m_OldValue; | 1429 T m_OldValue; |
| 1430 }; | 1430 }; |
| 1431 | 1431 |
| 1432 // For objects which support a Release() method as opposed to outright | |
| 1433 // explicit deletion. | |
| 1432 template <class T> | 1434 template <class T> |
| 1433 class CFX_SmartPointer | 1435 class CFX_SmartPointer |
| 1434 { | 1436 { |
| 1435 public: | 1437 public: |
| 1438 CFX_SmartPointer() : m_pObj(nullptr) {} | |
| 1436 CFX_SmartPointer(T *pObj) : m_pObj(pObj) {} | 1439 CFX_SmartPointer(T *pObj) : m_pObj(pObj) {} |
| 1440 CFX_SmartPointer(const CFX_SmartPointer<T>&) = delete; | |
| 1437 ~CFX_SmartPointer() | 1441 ~CFX_SmartPointer() |
| 1438 { | 1442 { |
| 1439 m_pObj->Release(); | 1443 if (m_pObj) |
| 1444 m_pObj->Release(); | |
| 1440 } | 1445 } |
| 1441 operator T*(void) | 1446 T* Get() |
| 1442 { | 1447 { |
| 1443 return m_pObj; | 1448 return m_pObj; |
| 1444 } | 1449 } |
| 1445 T&» » operator *(void) | 1450 T* TakeOwnership() |
| 1451 { | |
| 1452 T* result = m_pObj; | |
| 1453 m_pObj = nullptr; | |
| 1454 return result; | |
| 1455 } | |
| 1456 T& operator* (void) | |
| 1446 { | 1457 { |
| 1447 return *m_pObj; | 1458 return *m_pObj; |
| 1448 } | 1459 } |
| 1449 T*» » operator ->(void) | 1460 T* operator-> (void) |
| 1450 { | 1461 { |
| 1451 return m_pObj; | 1462 return m_pObj; |
| 1452 } | 1463 } |
| 1464 T& operator= (const T* that) | |
| 1465 { | |
| 1466 if (m_pObj) | |
| 1467 m_pObj->Release(); | |
| 1468 m_pObj = that; | |
|
dcheng
2015/01/31 01:41:30
I wonder if we need to worry about bizarre code li
| |
| 1469 } | |
| 1470 T& operator= (const CFX_SmartPointer<T>&) = delete; | |
| 1453 protected: | 1471 protected: |
| 1454 T *m_pObj; | 1472 T *m_pObj; |
| 1455 }; | 1473 }; |
| 1474 | |
| 1456 #define FX_DATALIST_LENGTH 1024 | 1475 #define FX_DATALIST_LENGTH 1024 |
| 1457 template<size_t unit> | 1476 template<size_t unit> |
| 1458 class CFX_SortListArray : public CFX_Object | 1477 class CFX_SortListArray : public CFX_Object |
| 1459 { | 1478 { |
| 1460 protected: | 1479 protected: |
| 1461 | 1480 |
| 1462 struct DataList { | 1481 struct DataList { |
| 1463 | 1482 |
| 1464 FX_INT32 start; | 1483 FX_INT32 start; |
| 1465 | 1484 |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1649 FX_FLOAT c; | 1668 FX_FLOAT c; |
| 1650 FX_FLOAT d; | 1669 FX_FLOAT d; |
| 1651 FX_FLOAT e; | 1670 FX_FLOAT e; |
| 1652 FX_FLOAT f; | 1671 FX_FLOAT f; |
| 1653 FX_FLOAT g; | 1672 FX_FLOAT g; |
| 1654 FX_FLOAT h; | 1673 FX_FLOAT h; |
| 1655 FX_FLOAT i; | 1674 FX_FLOAT i; |
| 1656 }; | 1675 }; |
| 1657 | 1676 |
| 1658 #endif | 1677 #endif |
| OLD | NEW |