Panda3D
Public Types | Public Member Functions | Static Public Member Functions | Friends
PointerToArray< Element > Class Template Reference

A special kind of PointerTo that stores an array of the indicated element type, instead of a single element. More...

#include "pointerToArray.h"

Inheritance diagram for PointerToArray< Element >:
PointerToArrayBase< Element > PointerToBase< ReferenceCountedVector< Element > > PointerToVoid MemoryBase

List of all members.

Public Types

typedef pvector< Element >
::const_iterator 
const_iterator
typedef pvector< Element >
::const_reference 
const_reference
typedef pvector< Element >
::const_reverse_iterator 
const_reverse_iterator
typedef pvector< Element >
::difference_type 
difference_type
typedef pvector< Element >
::iterator 
iterator
typedef pvector< Element >
::reference 
reference
typedef pvector< Element >
::reverse_iterator 
reverse_iterator
typedef pvector< Element >
::size_type 
size_type
typedef PointerToArrayBase
< Element >::To 
To
typedef pvector< Element >
::value_type 
value_type

Public Member Functions

 PointerToArray (TypeHandle type_handle=get_type_handle(Element))
 PointerToArray (size_type n, const Element &value, TypeHandle type_handle=get_type_handle(Element))
 PointerToArray (const PointerToArray< Element > &copy)
const Element & __getitem__ (size_type n) const
 Same as get_element(), this returns the nth element of the array.
void __setitem__ (size_type n, const Element &value)
 Same as set_element(), this replaces the nth element of the array.
reference back () const
iterator begin () const
size_type capacity () const
void clear ()
 To empty the PTA, use the clear() method, since assignment to NULL is problematic (given the ambiguity of the pointer type of NULL).
bool empty () const
iterator end () const
void erase (iterator position)
void erase (iterator first, iterator last)
reference front () const
string get_data () const
 This method exists mainly to access the data of the array easily from a high-level language such as Python.
const Element & get_element (size_type n) const
 This method exists mainly to access the elements of the array easily from a high-level language such as Python, especially on Windows, where the above index element accessor methods can't be defined because of a confusion with the pointer typecast operator.
int get_node_ref_count () const
 Returns the node_ref of the underlying vector.
int get_ref_count () const
 Returns the reference count of the underlying vector.
string get_subdata (size_type n, size_type count) const
 This method exists mainly to access the data of the array easily from a high-level language such as Python.
void * get_void_ptr () const
 Returns the reference to memory where the vector is stored.
iterator insert (iterator position, const Element &x)
void insert (iterator position, size_type n, const Element &x)
void make_empty ()
 Empties the array pointed to.
size_type max_size () const
void node_ref () const
 Increments the node_ref of the underlying vector.
bool node_unref () const
 Decrements the node_ref of the underlying vector.
 operator Element * () const
 The pointer typecast operator is convenient for maintaining the fiction that we actually have a C-style array.
PointerToArray< Element > & operator= (ReferenceCountedVector< Element > *ptr)
PointerToArray< Element > & operator= (const PointerToArray< Element > &copy)
reference operator[] (size_type n) const
reference operator[] (int n) const
Element * p () const
 Function p() is similar to the function from PointerTo.
void pop_back ()
void push_back (const Element &x)
PointerToArray< Element >
::reverse_iterator 
rbegin () const
PointerToArray< Element >
::reverse_iterator 
rend () const
void reserve (size_type n)
void resize (size_type n)
void set_data (const string &data)
 This method exists mainly to access the data of the array easily from a high-level language such as Python.
void set_element (size_type n, const Element &value)
 This method exists mainly to access the elements of the array easily from a high-level language such as Python, especially on Windows, where the above index element accessor methods can't be defined because of a confusion with the pointer typecast operator.
void set_subdata (size_type n, size_type count, const string &data)
 This method exists mainly to access the data of the array easily from a high-level language such as Python.
void set_void_ptr (void *p)
 Sets this PTA to point to the pointer passed in.
size_type size () const
pvector< Element > & v () const
 To access the vector itself, for more direct fiddling with some of the vector's esoteric functionality.
ReferenceCountedVector< Element > * v0 () const
 To access the internal ReferenceCountedVector object, for very low-level fiddling.

Static Public Member Functions

static PointerToArray< Element > empty_array (size_type n, TypeHandle type_handle=get_type_handle(Element))
 Return an empty array of size n.

Friends

class ConstPointerToArray< Element >

Detailed Description

template<class Element>
class PointerToArray< Element >

A special kind of PointerTo that stores an array of the indicated element type, instead of a single element.

This is actually implemented as an STL vector, using the RefCountObj class to wrap it up with a reference count.

We actually inherit from NodeRefCountObj these days, which adds node_ref() and node_unref() to the standard ref() and unref(). This is particularly useful for GeomVertexArrayData; other classes may or may not find this additional counter useful, but since it adds relatively little overhead (compared with what is presumably a largish array), we go ahead and add it here, even though it is inherited by many different parts of the system that may not use it.

Definition at line 102 of file pointerToArray.h.


Member Function Documentation

template<class Element >
const Element & PointerToArray< Element >::__getitem__ ( size_type  n) const [inline]

Same as get_element(), this returns the nth element of the array.

Definition at line 552 of file pointerToArray.I.

template<class Element>
void PointerToArray< Element >::__setitem__ ( size_type  n,
const Element &  value 
) [inline]

Same as set_element(), this replaces the nth element of the array.

Definition at line 564 of file pointerToArray.I.

template<class Element >
void PointerToArray< Element >::clear ( ) [inline]

To empty the PTA, use the clear() method, since assignment to NULL is problematic (given the ambiguity of the pointer type of NULL).

Reimplemented from PointerToBase< ReferenceCountedVector< Element > >.

Definition at line 764 of file pointerToArray.I.

Referenced by PointerToArray< Element >::make_empty().

template<class Element >
PointerToArray< Element > PointerToArray< Element >::empty_array ( size_type  n,
TypeHandle  type_handle = get_type_handle(Element) 
) [inline, static]

Return an empty array of size n.

Definition at line 43 of file pointerToArray.I.

References PointerToBase< ReferenceCountedVector< Element > >::reassign().

template<class Element >
string PointerToArray< Element >::get_data ( ) const [inline]

This method exists mainly to access the data of the array easily from a high-level language such as Python.

It returns the entire contents of the vector as a block of raw data in a string.

Definition at line 581 of file pointerToArray.I.

References PointerToArray< Element >::get_subdata().

template<class Element >
const Element & PointerToArray< Element >::get_element ( size_type  n) const [inline]

This method exists mainly to access the elements of the array easily from a high-level language such as Python, especially on Windows, where the above index element accessor methods can't be defined because of a confusion with the pointer typecast operator.

Definition at line 524 of file pointerToArray.I.

template<class Element >
int PointerToArray< Element >::get_node_ref_count ( ) const [inline]

Returns the node_ref of the underlying vector.

Definition at line 700 of file pointerToArray.I.

Referenced by ConstPointerToArray< Element >::get_node_ref_count().

template<class Element >
int PointerToArray< Element >::get_ref_count ( ) const [inline]

Returns the reference count of the underlying vector.

Definition at line 689 of file pointerToArray.I.

Referenced by ConstPointerToArray< Element >::get_ref_count().

template<class Element >
string PointerToArray< Element >::get_subdata ( size_type  n,
size_type  count 
) const [inline]

This method exists mainly to access the data of the array easily from a high-level language such as Python.

It returns the contents of a portion of the vector--from element (n) through element (n + count - 1)--as a block of raw data in a string.

Definition at line 614 of file pointerToArray.I.

References PointerToArray< Element >::p().

Referenced by PointerToArray< Element >::get_data(), and ConstPointerToArray< Element >::get_data().

template<class Element >
void * PointerToArray< Element >::get_void_ptr ( ) const [inline]

Returns the reference to memory where the vector is stored.

To be used only with set_void_ptr

Definition at line 667 of file pointerToArray.I.

template<class Element >
void PointerToArray< Element >::make_empty ( ) [inline]

Empties the array pointed to.

This is different from clear(), which reassigns the pointer to a NULL pointer.

Definition at line 448 of file pointerToArray.I.

References PointerToArray< Element >::clear().

template<class Element >
void PointerToArray< Element >::node_ref ( ) const [inline]

Increments the node_ref of the underlying vector.

Definition at line 711 of file pointerToArray.I.

Referenced by ConstPointerToArray< Element >::node_ref().

template<class Element >
bool PointerToArray< Element >::node_unref ( ) const [inline]

Decrements the node_ref of the underlying vector.

Definition at line 725 of file pointerToArray.I.

template<class Element >
PointerToArray< Element >::operator Element * ( ) const [inline]

The pointer typecast operator is convenient for maintaining the fiction that we actually have a C-style array.

It returns the address of the first element in the array, unless the pointer is unassigned, in which case it returns NULL.

Definition at line 467 of file pointerToArray.I.

template<class Element >
Element * PointerToArray< Element >::p ( ) const [inline]

Function p() is similar to the function from PointerTo.

It does the same thing: it returns the same thing as the typecast operator, above.

Definition at line 481 of file pointerToArray.I.

Referenced by PointerToArray< Element >::get_subdata(), ConstPointerToArray< Element >::get_subdata(), and PointerToArray< Element >::set_subdata().

template<class Element >
void PointerToArray< Element >::set_data ( const string &  data) [inline]

This method exists mainly to access the data of the array easily from a high-level language such as Python.

It replaces the entire contents of the vector from a block of raw data in a string.

Definition at line 597 of file pointerToArray.I.

References PointerToArray< Element >::set_subdata().

template<class Element>
void PointerToArray< Element >::set_element ( size_type  n,
const Element &  value 
) [inline]

This method exists mainly to access the elements of the array easily from a high-level language such as Python, especially on Windows, where the above index element accessor methods can't be defined because of a confusion with the pointer typecast operator.

Definition at line 539 of file pointerToArray.I.

template<class Element >
void PointerToArray< Element >::set_subdata ( size_type  n,
size_type  count,
const string &  data 
) [inline]

This method exists mainly to access the data of the array easily from a high-level language such as Python.

It replaces the contents of a portion of the vector--from element (n) through element (n + count - 1)--as a block of raw data in a string. The length of the string must be an even multiple of Element size bytes. The array may be expanded or truncated if the length of the string does not correspond to exactly count elements.

Definition at line 638 of file pointerToArray.I.

References PointerToArray< Element >::p().

Referenced by PointerToArray< Element >::set_data().

template<class Element >
void PointerToArray< Element >::set_void_ptr ( void *  p) [inline]

Sets this PTA to point to the pointer passed in.

Definition at line 678 of file pointerToArray.I.

template<class Element >
pvector< Element > & PointerToArray< Element >::v ( ) const [inline]

To access the vector itself, for more direct fiddling with some of the vector's esoteric functionality.

Definition at line 494 of file pointerToArray.I.

template<class Element >
ReferenceCountedVector< Element > * PointerToArray< Element >::v0 ( ) const [inline]

To access the internal ReferenceCountedVector object, for very low-level fiddling.

Know what you are doing!

Definition at line 509 of file pointerToArray.I.


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations