| 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 CORE_INCLUDE_FXCRT_FX_BASIC_H_ | 7 #ifndef CORE_INCLUDE_FXCRT_FX_BASIC_H_ |
| 8 #define CORE_INCLUDE_FXCRT_FX_BASIC_H_ | 8 #define CORE_INCLUDE_FXCRT_FX_BASIC_H_ |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 | 473 |
| 474 void RemoveAll() { | 474 void RemoveAll() { |
| 475 for (int i = 0; i < m_nSize; i++) { | 475 for (int i = 0; i < m_nSize; i++) { |
| 476 ((ObjectClass*)GetDataPtr(i))->~ObjectClass(); | 476 ((ObjectClass*)GetDataPtr(i))->~ObjectClass(); |
| 477 } | 477 } |
| 478 CFX_BasicArray::SetSize(0); | 478 CFX_BasicArray::SetSize(0); |
| 479 } | 479 } |
| 480 }; | 480 }; |
| 481 typedef CFX_ObjectArray<CFX_ByteString> CFX_ByteStringArray; | 481 typedef CFX_ObjectArray<CFX_ByteString> CFX_ByteStringArray; |
| 482 typedef CFX_ObjectArray<CFX_WideString> CFX_WideStringArray; | 482 typedef CFX_ObjectArray<CFX_WideString> CFX_WideStringArray; |
| 483 class CFX_BaseSegmentedArray { | |
| 484 public: | |
| 485 CFX_BaseSegmentedArray(int unit_size = 1, | |
| 486 int segment_units = 512, | |
| 487 int index_size = 8); | |
| 488 | |
| 489 ~CFX_BaseSegmentedArray(); | |
| 490 | |
| 491 void SetUnitSize(int unit_size, int segment_units, int index_size = 8); | |
| 492 | |
| 493 void* Add(); | |
| 494 | |
| 495 void* GetAt(int index) const; | |
| 496 | |
| 497 void RemoveAll(); | |
| 498 | |
| 499 void Delete(int index, int count = 1); | |
| 500 | |
| 501 int GetSize() const { return m_DataSize; } | |
| 502 | |
| 503 int GetSegmentSize() const { return m_SegmentSize; } | |
| 504 | |
| 505 int GetUnitSize() const { return m_UnitSize; } | |
| 506 | |
| 507 void* Iterate(FX_BOOL (*callback)(void* param, void* pData), | |
| 508 void* param) const; | |
| 509 | |
| 510 private: | |
| 511 int m_UnitSize; | |
| 512 | |
| 513 short m_SegmentSize; | |
| 514 | |
| 515 uint8_t m_IndexSize; | |
| 516 | |
| 517 uint8_t m_IndexDepth; | |
| 518 | |
| 519 int m_DataSize; | |
| 520 | |
| 521 void* m_pIndex; | |
| 522 void** GetIndex(int seg_index) const; | |
| 523 void* IterateIndex(int level, | |
| 524 int& start, | |
| 525 void** pIndex, | |
| 526 FX_BOOL (*callback)(void* param, void* pData), | |
| 527 void* param) const; | |
| 528 void* IterateSegment(const uint8_t* pSegment, | |
| 529 int count, | |
| 530 FX_BOOL (*callback)(void* param, void* pData), | |
| 531 void* param) const; | |
| 532 }; | |
| 533 template <class ElementType> | |
| 534 class CFX_SegmentedArray : public CFX_BaseSegmentedArray { | |
| 535 public: | |
| 536 CFX_SegmentedArray(int segment_units, int index_size = 8) | |
| 537 : CFX_BaseSegmentedArray(sizeof(ElementType), segment_units, index_size) { | |
| 538 } | |
| 539 | |
| 540 void Add(ElementType data) { | |
| 541 *(ElementType*)CFX_BaseSegmentedArray::Add() = data; | |
| 542 } | |
| 543 | |
| 544 ElementType& operator[](int index) { | |
| 545 return *(ElementType*)CFX_BaseSegmentedArray::GetAt(index); | |
| 546 } | |
| 547 }; | |
| 548 template <class DataType, int FixedSize> | 483 template <class DataType, int FixedSize> |
| 549 class CFX_FixedBufGrow { | 484 class CFX_FixedBufGrow { |
| 550 public: | 485 public: |
| 551 CFX_FixedBufGrow() : m_pData(NULL) {} | 486 CFX_FixedBufGrow() : m_pData(NULL) {} |
| 552 CFX_FixedBufGrow(int data_size) : m_pData(NULL) { | 487 CFX_FixedBufGrow(int data_size) : m_pData(NULL) { |
| 553 if (data_size > FixedSize) { | 488 if (data_size > FixedSize) { |
| 554 m_pData = FX_Alloc(DataType, data_size); | 489 m_pData = FX_Alloc(DataType, data_size); |
| 555 } else { | 490 } else { |
| 556 FXSYS_memset(m_Data, 0, sizeof(DataType) * FixedSize); | 491 FXSYS_memset(m_Data, 0, sizeof(DataType) * FixedSize); |
| 557 } | 492 } |
| (...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1048 FX_FLOAT c; | 983 FX_FLOAT c; |
| 1049 FX_FLOAT d; | 984 FX_FLOAT d; |
| 1050 FX_FLOAT e; | 985 FX_FLOAT e; |
| 1051 FX_FLOAT f; | 986 FX_FLOAT f; |
| 1052 FX_FLOAT g; | 987 FX_FLOAT g; |
| 1053 FX_FLOAT h; | 988 FX_FLOAT h; |
| 1054 FX_FLOAT i; | 989 FX_FLOAT i; |
| 1055 }; | 990 }; |
| 1056 | 991 |
| 1057 #endif // CORE_INCLUDE_FXCRT_FX_BASIC_H_ | 992 #endif // CORE_INCLUDE_FXCRT_FX_BASIC_H_ |
| OLD | NEW |