Regina 7.3 Calculation Engine
|
A lightweight object that gives access to all immediate children of a given packet. More...
#include <packet/packet.h>
Public Types | |
using | packet_type = std::conditional_t< const_, const Packet, Packet > |
Either Packet or const Packet , according to the template argument const_. More... | |
Public Member Functions | |
PacketChildren (const PacketChildren &)=default | |
Creates a new object for iterating through the children of the same packet as the given object. More... | |
PacketChildren (std::shared_ptr< packet_type > parent) | |
Creates a new object for iterating through the immediate children of the given packet. More... | |
PacketChildren & | operator= (const PacketChildren &)=default |
Sets this object to iterate over the children of the same packet as the given object. More... | |
ChildIterator< const_ > | begin () const |
Returns a C++ iterator pointing to the first immediate child packet. More... | |
ChildIterator< const_ > | end () const |
Returns a C++ iterator pointing beyond the last immediate child packet. More... | |
auto | __iter__ () const |
Returns a Python iterator over all immediate child packets. More... | |
bool | operator== (const PacketChildren &rhs) const |
Determines whether this and the given object are designed to iterate over children of the same parent packet. More... | |
bool | operator!= (const PacketChildren &rhs) const |
Determines whether this and the given object are designed to iterate over children of different parent packets. More... | |
A lightweight object that gives access to all immediate children of a given packet.
The purpose of this class is to support iteration through all children of a packet p using range-based for
loops:
In Python, PacketChildren is an iterable object:
Each object of this class will hold a std::shared_ptr to the packet whose children it gives access to. This guarantees that the packet will not be destroyed during iteration, but it also means that you must ensure that you dispose of these objects once you are finished with them.
These are lightweight objects, small enough to pass by value and swap with std::swap(), with no need for any specialised move operations or swap functions. Copies of a PacketChildren will iterate over the children of the same underlying packet.
const_ | Indicates whether this iterator should offer const or non-const access to the child packets. |
__iter__()
, which returns a ChildIterator; then ChildIterator implements __next__()
, which either returns the next child packet in the iteration or else throws a StopException
if there are no more children to return. All iteration in Python is non-const (i.e., Python exclusively uses the classes where const_ is false
). using regina::PacketChildren< const_ >::packet_type = std::conditional_t<const_, const Packet, Packet> |
|
default |
Creates a new object for iterating through the children of the same packet as the given object.
|
inline |
Creates a new object for iterating through the immediate children of the given packet.
parent | the packet whose children we will iterate through. |
auto regina::PacketChildren< const_ >::__iter__ | ( | ) | const |
Returns a Python iterator over all immediate child packets.
for
loop.
|
inline |
Returns a C++ iterator pointing to the first immediate child packet.
The iterator range from begin() to end() runs through all immediate children in order from first to last.
|
inline |
Returns a C++ iterator pointing beyond the last immediate child packet.
The iterator range from begin() to end() runs through all immediate children in order from first to last.
bool regina::PacketChildren< const_ >::operator!= | ( | const PacketChildren< const_ > & | rhs | ) | const |
Determines whether this and the given object are designed to iterate over children of different parent packets.
true
if and only if this object and rhs iterate over children of different packets.
|
default |
Sets this object to iterate over the children of the same packet as the given object.
bool regina::PacketChildren< const_ >::operator== | ( | const PacketChildren< const_ > & | rhs | ) | const |
Determines whether this and the given object are designed to iterate over children of the same parent packet.
true
if and only if this object and rhs iterate over children of the same packet.