1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
/**************************************************************************\
*
* This file is part of the Coin 3D visualization library.
* Copyright (C) by Kongsberg Oil & Gas Technologies.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* ("GPL") version 2 as published by the Free Software Foundation.
* See the file LICENSE.GPL at the root directory of this source
* distribution for additional information about the GNU GPL.
*
* For using Coin with software that can not be combined with the GNU
* GPL, and for taking advantage of the additional benefits of our
* support services, please contact Kongsberg Oil & Gas Technologies
* about acquiring a Coin Professional Edition License.
*
* See http://www.coin3d.org/ for more information.
*
* Kongsberg Oil & Gas Technologies, Bygdoy Alle 5, 0257 Oslo, NORWAY.
* http://www.sim.no/ sales@sim.no coin-support@coin3d.org
*
\**************************************************************************/
/*!
\class SoFullPath Inventor/SoFullPath.h
\brief The SoFullPath class allows examination of hidden children in paths.
\ingroup general
SoPath allows only access from the head node to the first node with
hidden children, but not any further.
Since the SoFullPath is derived from SoPath and contains no private
data, you can cast SoPath instances to the SoFullPath type. This
will allow you to examine hidden children.
(Actually, you are not supposed to allocate instances of this class
at all. It is only available as an "extended interface" into the
superclass SoPath.)
*/
/*!
\fn void SoFullPath::pop(void)
This method overrides SoPath::pop() to allow clients to get at all
the nodes in the path.
*/
#include <Inventor/SoFullPath.h>
#include <assert.h>
/*!
A constructor.
*/
SoFullPath::SoFullPath(const int approxLength)
: SoPath(approxLength)
{
}
/*!
The destructor.
*/
SoFullPath::~SoFullPath(void)
{
}
/*!
This method overrides SoPath::getTail() to allow clients to get the
tail node, counting internal path nodes.
*/
SoNode *
SoFullPath::getTail(void) const
{
return this->nodes[this->nodes.getLength() - 1];
}
/*!
This method overrides SoPath::getNodeFromTail() to allow clients to
get the node positioned \a index nodes from the tail, counting
internal path nodes.
*/
SoNode *
SoFullPath::getNodeFromTail(const int index) const
{
return this->nodes[this->nodes.getLength() - 1 - index];
}
/*!
This method overrides SoPath::getIndexFromTail() to allow clients to
get the child index number for nodes based on their position from
the tail, counting hidden nodes.
*/
int
SoFullPath::getIndexFromTail(const int index) const
{
return this->indices[this->nodes.getLength() - 1 - index];
}
/*!
This method returns the length of the path, counting hidden nodes
also.
*/
int
SoFullPath::getLength(void) const
{
return this->nodes.getLength();
}
|