00001 #ifndef COIN_SOSEARCHACTION_H
00002 #define COIN_SOSEARCHACTION_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <Inventor/actions/SoAction.h>
00028 #include <Inventor/actions/SoSubAction.h>
00029 #include <Inventor/SbName.h>
00030 #include <Inventor/lists/SoPathList.h>
00031
00032 class COIN_DLL_API SoSearchAction : public SoAction {
00033 typedef SoAction inherited;
00034
00035 SO_ACTION_HEADER(SoSearchAction);
00036
00037 public:
00038 SoSearchAction(void);
00039 virtual ~SoSearchAction();
00040
00041 static void initClass(void);
00042
00043 enum LookFor { NODE = 1, TYPE = 2, NAME = 4 };
00044 enum Interest { FIRST, LAST, ALL };
00045
00046 void setNode(SoNode * const node);
00047 SoNode * getNode(void) const;
00048 void setType(const SoType type, const SbBool chkderived = TRUE);
00049 SoType getType(SbBool & chkderived) const;
00050 void setName(const SbName name);
00051 SbName getName(void) const;
00052 void setFind(const int what);
00053 int getFind(void) const;
00054 void setInterest(const Interest interest);
00055 Interest getInterest(void) const;
00056 void setSearchingAll(const SbBool searchall);
00057 SbBool isSearchingAll(void) const;
00058 SoPath * getPath(void) const;
00059 SoPathList & getPaths(void);
00060 void reset(void);
00061
00062 void setFound(void);
00063 SbBool isFound(void) const;
00064 void addPath(SoPath * const path);
00065
00066
00067
00068 static SbBool duringSearchAll;
00069
00070 protected:
00071 virtual void beginTraversal(SoNode * node);
00072
00073 private:
00074 int lookfor;
00075 Interest interest;
00076 SbBool searchall, chkderived;
00077 SoNode * node;
00078 SoType type;
00079 SbName name;
00080 SoPath * path;
00081 SoPathList paths;
00082 };
00083
00084 #endif // !COIN_SOSEARCHACTION_H