Panda3D
|
A special kind of PointerTo that stores an array of the indicated element type, instead of a single element. More...
#include "pointerToArray.h"
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 > ©) | |
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 > ©) |
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 > |
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.
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.
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.
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().
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().
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().
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.
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().
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().
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().
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.
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().
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().
bool PointerToArray< Element >::node_unref | ( | ) | const [inline] |
Decrements the node_ref of the underlying vector.
Definition at line 725 of file pointerToArray.I.
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.
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().
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().
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.
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().
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.
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.
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.