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