00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef COIN_SONODEKITPATH_H
00021
#define COIN_SONODEKITPATH_H
00022
00023
#include <Inventor/SoPath.h>
00024
00025
class SoNode;
00026
class SoBaseKit;
00027
class SoSearchAction;
00028
00029 class COIN_DLL_API SoNodeKitPath :
public SoPath {
00030
typedef SoPath inherited;
00031
00032
public:
00033
int getLength(
void)
const;
00034
SoNode *
getTail(
void)
const;
00035
SoNode * getNode(
const int idx)
const;
00036
SoNode * getNodeFromTail(
const int idx)
const;
00037
void truncate(
const int length);
00038
void pop(
void);
00039
void append(
SoBaseKit * childKit);
00040
void append(
const SoNodeKitPath * fromPath);
00041 SbBool containsNode(
SoBaseKit * node)
const;
00042
int findFork(
const SoNodeKitPath * path)
const;
00043
00044
friend COIN_DLL_API
int operator==(
const SoNodeKitPath & p1,
const SoNodeKitPath & p2);
00045
00046
protected:
00047 SoNodeKitPath(
const int approxLength);
00048
virtual ~SoNodeKitPath();
00049
00050
private:
00051
00052
static void clean(
void);
00053
static SoSearchAction *searchAction;
00054
SoSearchAction *getSearchAction(
void);
00055
00056
00057
void append(
const int childIndex);
00058
void append(
SoNode *childNode);
00059
void append(
const SoPath *fromPath);
00060
void push(
const int childIndex);
00061
int getIndex(
const int i)
const;
00062
int getIndexFromTail(
const int i)
const;
00063
void insertIndex(
SoNode *parent,
const int newIndex);
00064
void removeIndex(
SoNode *parent,
const int oldIndex);
00065
void replaceIndex(
SoNode *parent,
const int index,
SoNode *newChild);
00066 };
00067
00068 COIN_DLL_API
int operator==(
const SoNodeKitPath & p1,
const SoNodeKitPath & p2);
00069
00070
#endif // !COIN_SONODEKITPATH_H