Changeset 21221 in webkit for trunk/JavaScriptCore/wtf/Vector.h
- Timestamp:
- May 2, 2007, 6:11:05 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/wtf/Vector.h
r19661 r21221 445 445 template<typename U, size_t c> void append(const Vector<U, c>&); 446 446 447 template<typename U> void insert(size_t position, const U*, size_t); 447 448 template<typename U> void insert(size_t position, const U&); 449 template<typename U, size_t c> void insert(size_t position, const Vector<U, c>&); 450 451 template<typename U> void prepend(const U*, size_t); 452 template<typename U> void prepend(const U&); 453 template<typename U, size_t c> void prepend(const Vector<U, c>&); 448 454 449 455 void remove(size_t position); … … 637 643 append(val.begin(), val.size()); 638 644 } 639 645 646 template<typename T, size_t inlineCapacity> template<typename U> 647 void Vector<T, inlineCapacity>::insert(size_t position, const U* data, size_t dataSize) 648 { 649 ASSERT(position <= size()); 650 size_t newSize = m_size + dataSize; 651 if (newSize > capacity()) 652 data = expandCapacity(newSize, data); 653 T* spot = begin() + position; 654 TypeOperations::moveOverlapping(spot, end(), spot + dataSize); 655 for (size_t i = 0; i < dataSize; ++i) 656 new (&spot[i]) T(data[i]); 657 m_size = newSize; 658 } 659 640 660 template<typename T, size_t inlineCapacity> template<typename U> 641 661 inline void Vector<T, inlineCapacity>::insert(size_t position, const U& val) 642 662 { 643 663 ASSERT(position <= size()); 644 const U* ptr= &val;664 const U* data = &val; 645 665 if (size() == capacity()) 646 ptr = expandCapacity(size() + 1, ptr);666 data = expandCapacity(size() + 1, data); 647 667 T* spot = begin() + position; 648 668 TypeOperations::moveOverlapping(spot, end(), spot + 1); 649 new (spot) T(* ptr);669 new (spot) T(*data); 650 670 ++m_size; 651 671 } 652 672 673 template<typename T, size_t inlineCapacity> template<typename U, size_t c> 674 inline void Vector<T, inlineCapacity>::insert(size_t position, const Vector<U, c>& val) 675 { 676 insert(position, val.begin(), val.size()); 677 } 678 679 template<typename T, size_t inlineCapacity> template<typename U> 680 void Vector<T, inlineCapacity>::prepend(const U* data, size_t dataSize) 681 { 682 insert(0, data, dataSize); 683 } 684 685 template<typename T, size_t inlineCapacity> template<typename U> 686 inline void Vector<T, inlineCapacity>::prepend(const U& val) 687 { 688 insert(0, val); 689 } 690 691 template<typename T, size_t inlineCapacity> template<typename U, size_t c> 692 inline void Vector<T, inlineCapacity>::prepend(const Vector<U, c>& val) 693 { 694 insert(0, val.begin(), val.size()); 695 } 696 653 697 template<typename T, size_t inlineCapacity> 654 698 inline void Vector<T, inlineCapacity>::remove(size_t position)
Note:
See TracChangeset
for help on using the changeset viewer.