Adobe Systems, Inc.

STL optimizations
[GIL Algorithms]

overloads of STL algorithms allowing more efficient implementation when used with GIL constructs More...

Functions

template<typename IL, typename OL>
GIL_FORCEINLINE GIL::pixel_image_iterator<
OL > 
std::copy (GIL::pixel_image_iterator< IL > first, GIL::pixel_image_iterator< IL > last, GIL::pixel_image_iterator< OL > dst)
template<typename IC1, typename CS1, typename IC2, typename CS2>
GIL_FORCEINLINE GIL::planar_ptr<
IC2, CS2 > 
std::copy (GIL::planar_ptr< IC1, CS1 > first, GIL::planar_ptr< IC1, CS1 > last, GIL::planar_ptr< IC2, CS2 > dst)
template<typename T, typename CS>
GIL_FORCEINLINE GIL::pixel<
T, CS > * 
std::copy (const GIL::pixel< T, CS > *first, const GIL::pixel< T, CS > *last, GIL::pixel< T, CS > *dst)
template<typename T, typename CS>
GIL_FORCEINLINE GIL::pixel<
T, CS > * 
std::copy (GIL::pixel< T, CS > *first, GIL::pixel< T, CS > *last, GIL::pixel< T, CS > *dst)
template<typename LOC1, typename LOC2>
GIL_FORCEINLINE bool std::equal (GIL::pixel_image_iterator< LOC1 > first, GIL::pixel_image_iterator< LOC1 > last, GIL::pixel_image_iterator< LOC2 > first2)
template<typename IL, typename V>
void std::fill (GIL::pixel_image_iterator< IL > first, GIL::pixel_image_iterator< IL > last, const V &val)

Detailed Description


Function Documentation

template<typename T, typename CS>
GIL_FORCEINLINE GIL::pixel<T,CS>* std::copy GIL::pixel< T, CS > *  first,
GIL::pixel< T, CS > *  last,
GIL::pixel< T, CS > *  dst
 

Copy when both src and dst are interleaved and of the same type can be just memmove.

Definition at line 137 of file gil/core/algorithm.hpp.

template<typename T, typename CS>
GIL_FORCEINLINE GIL::pixel<T,CS>* std::copy const GIL::pixel< T, CS > *  first,
const GIL::pixel< T, CS > *  last,
GIL::pixel< T, CS > *  dst
 

Copy when both src and dst are interleaved and of the same type can be just memmove.

Definition at line 144 of file gil/core/algorithm.hpp.

template<typename IC1, typename CS1, typename IC2, typename CS2>
GIL_FORCEINLINE GIL::planar_ptr<IC2,CS2> std::copy GIL::planar_ptr< IC1, CS1 >  first,
GIL::planar_ptr< IC1, CS1 >  last,
GIL::planar_ptr< IC2, CS2 >  dst
 

Copy when both src and dst are planar pointers is copy for each channel.

Definition at line 161 of file gil/core/algorithm.hpp.

template<typename IL, typename OL>
GIL_FORCEINLINE GIL::pixel_image_iterator<OL> std::copy GIL::pixel_image_iterator< IL >  first,
GIL::pixel_image_iterator< IL >  last,
GIL::pixel_image_iterator< OL >  dst
 

std::copy(I1,I1,I2) with I1 and I2 being a pixel_image_iterator

Invoked when one calls std::copy(I1,I1,I2) with I1 and I2 being a pixel_image_iterator (which is a 1D iterator over the pixels in an image). Attempts to demote the source and destination iterators to simpler/faster types if the corresponding range is contiguous. For contiguous images (i.e. images that have no alignment gap at the end of each row) it is more efficient to use the underlying pixel iterator that does not check for the end of rows. If the underlying pixel iterator happens to be a fundamental planar/interleaved pointer, the call may further resolve to memmove. Otherwise it resolves to copying each row using the underlying pixel iterator

Definition at line 249 of file gil/core/algorithm.hpp.

template<typename IL, typename V>
void std::fill GIL::pixel_image_iterator< IL >  first,
GIL::pixel_image_iterator< IL >  last,
const V &  val
 

std::fill(I,I,V) with I being a pixel_image_iterator

Invoked when one calls std::fill(I,I,V) with I being a pixel_image_iterator (which is a 1D iterator over the pixels in an image). For contiguous images (i.e. images that have no alignment gap at the end of each row) it is more efficient to use the underlying pixel iterator that does not check for the end of rows. For non-contiguous images fill resolves to fill of each row using the underlying pixel iterator, which is still faster

Definition at line 336 of file gil/core/algorithm.hpp.

template<typename LOC1, typename LOC2>
GIL_FORCEINLINE bool std::equal GIL::pixel_image_iterator< LOC1 >  first,
GIL::pixel_image_iterator< LOC1 >  last,
GIL::pixel_image_iterator< LOC2 >  first2
 

std::equal(I1,I1,I2) with I1 and I2 being a pixel_image_iterator

Invoked when one calls std::equal(I1,I1,I2) with I1 and I2 being a pixel_image_iterator (which is a 1D iterator over the pixels in an image). Attempts to demote the source and destination iterators to simpler/faster types if the corresponding range is contiguous. For contiguous images (i.e. images that have no alignment gap at the end of each row) it is more efficient to use the underlying pixel iterator that does not check for the end of rows. If the underlying pixel iterator happens to be a fundamental planar/interleaved pointer, the call may further resolve to memcmp. Otherwise it resolves to copying each row using the underlying pixel iterator

Definition at line 552 of file gil/core/algorithm.hpp.

Copyright © 2006 Adobe Systems Incorporated.

Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy.

Search powered by Google