namespace stingray_plugin_foundation { // ---------------------------------------------------------------------- // BucketIterator // ---------------------------------------------------------------------- template BucketIterator::BucketIterator(CONTAINER &container, unsigned int i) : _container(&container), _i(i) { advance_to_valid_bucket(); } template BucketIterator::BucketIterator(const iterator &other) : _container(other._container), _i(other._i) {} template BucketIterator BucketIterator::operator++() { //XASSERT(_i < _container->num_buckets(), "iterating past end of container"); XENSURE(_i < _container->num_buckets()); ++_i; advance_to_valid_bucket(); return *this; } template BucketIterator BucketIterator::operator++(int) { iterator result = *this; ++(*this); return result; } template void BucketIterator::advance_to_valid_bucket() { unsigned int size = _container->num_buckets(); for (; _i < size; ++_i) if (_container->bucket_valid(_i)) break; } // ---------------------------------------------------------------------- // ConstBucketIterator // ---------------------------------------------------------------------- template ConstBucketIterator::ConstBucketIterator(const CONTAINER &container, unsigned int i) : _container(&container), _i(i) { advance_to_valid_bucket(); } template ConstBucketIterator::ConstBucketIterator(const iterator &other) : _container(other._container), _i(other._i) {} template ConstBucketIterator::ConstBucketIterator(const BucketIterator &other) : _container(other._container), _i(other._i) {} template ConstBucketIterator ConstBucketIterator::operator++() { XASSERT(_i < _container->num_buckets(), "iterating past end of container"); ++_i; advance_to_valid_bucket(); return *this; } template ConstBucketIterator ConstBucketIterator::operator++(int) { iterator result = *this; ++(*this); return result; } template void ConstBucketIterator::advance_to_valid_bucket() { unsigned int size = _container->num_buckets(); for (; _i < size; ++_i) if (_container->bucket_valid(_i)) break; } } // namespace stingray_plugin_foundation