View Template Library


downcast_view<Container, DerivedType, Const_tag, Base>

Category: adaptors

Component type: type

Description

The downcast_view is a tranform_view where the container elements are pointers or iterators and references to only those objects of derived_type are presented. The properties of any downcast_view instance depend on the properties of the container template parameter. The interface of downcast_view adapts itself [1] to the referenced container, if this is one of Container provides a Container interface, a downcast_view referencing Forward Containers provides a Forward Container interface.

The downcast_view presents transformed values, by applying first a transformation of dynamic_cast<Derived_Type *> to the elements, the applying a transform view with a transform of a downcast and then appling a filter_view with a filter of is_nonzero to remove the zero elements, and then applying a polymorphic_view with the operator*() transformation to the contents of the iterators. This transformation and filtering is only applied in presenting the elements, the container's elements themselves are not altered.

The properties of the order of elements are the same as those provided by the underlying container, as is the validity of more than one active iterators at any one time.

A downcast_view owns its referenced container, if its base template parameter is aggregated_ownership, it merely references its container, if the base template parameter is referenced_ownership.

Template parameters

Parameter

Description

Default

container

The view's container type: the type of container referenced by this view


derived_type

The derived type of the objects in the container you are interested in.


const_tag

The view's const tag: either const_view_tag or mutable_view_tag

const_view_tag

base

The view's ownership type: the base class that determines if the view references or owns the container

referenced_ownership

Definition

Defined in the header downcast_view.hpp.

Model of

View

Type requirements

container::value_type must have a operator*(), and be polymorphic with at least one virtual function. derived_type must be a subclass of std::iterator_traits<container::value_type>::value_type for the downcast_view to make any sense.


Members

Member

Where defined

Description

value_type

Container

The type T of the elements accessed through the container.

domain_t

view

The type of the referenced container.

pointer

Container

Pointer to T.

reference

Container

T

const_reference

Container

const T

size_type

Container

An unsigned integral type.

difference_type

Container

A signed integral type.

iterator

Container

Iterator used to iterate through the view.

const_iterator

Container

Const iterator used to iterate through the view.

reverse_iterator

Reversible Container

Iterator used to iterate backwards through a container.

const_reverse_iterator

Reversible Container

Const iterator used to iterate backwards through a container.

iterator begin()

Container

Returns an iterator pointing to the begin of the view.

iterator end()

Container

Returns an iterator pointing to the end of the view.

const_iterator begin() const

Container

Returns a const_iterator pointing to the begin of the view.

const_iterator end() const

Container

Returns a const_iterator pointing to the end of the view.

reverse_iterator rbegin()

Reversible Container

Valid for reversible container's only. Returns a reverse_iterator pointing to the beginning of the reversed container.

reverse_iterator rend()

Reversible Container

Valid for reversible container's only. Returns a reverse_iterator pointing to the end of the reversed container.

const_reverse_iterator rbegin() const

Reversible Container

Valid for reversible container's only. Returns a const_reverse_iterator pointing to the beginning of the reversed container.

const_reverse_iterator rend() const

Reversible Container

Valid for reversible container's only. Returns a const_reverse_iterator pointing to the end of the reversed container.

size_type size() const

Container

Returns the size of the view.

size_type max_size() const

Container

Returns the largest possible size of the view.

bool empty() const

Container

true if the view's size is 0.

downcast_view()

view

Creates an empty view.

downcast_view(container_t&)

view

Creates a view of given container.

void swap(downcast_view&)

Container

Swaps the two views. Iterators are invalidated by this operation. For referencing views, the containers themselves are not swapped.

bool operator==(const downcast_view&, const downcast_view&)

Forward Container

Tests two views for equality. This is a global function, not a member function. Views may be equal even if their referenced containers are not.

bool operator<(const downcast_view&, const downcast_view&)

Forward Container

Lexicographical comparison. This is a global function, not a member function.

Notes



VTL Home
Copyright © 1999 Konrad-Zuse-Zentrum für Informationstechnik Berlin & Gary Powell All Rights Reserved.