1 #ifndef COIN_SOSEARCHACTION_H 2 #define COIN_SOSEARCHACTION_H 3 4 /**************************************************************************\ 5 * Copyright (c) Kongsberg Oil & Gas Technologies AS 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions are 10 * met: 11 * 12 * Redistributions of source code must retain the above copyright notice, 13 * this list of conditions and the following disclaimer. 14 * 15 * Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * Neither the name of the copyright holder nor the names of its 20 * contributors may be used to endorse or promote products derived from 21 * this software without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 27 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 \**************************************************************************/ 35 36 #include <Inventor/actions/SoAction.h> 37 #include <Inventor/actions/SoSubAction.h> 38 #include <Inventor/tools/SbLazyPimplPtr.h> 39 #include <Inventor/SbName.h> 40 #include <Inventor/lists/SoPathList.h> 41 42 class SoSearchActionP; 43 44 class COIN_DLL_API SoSearchAction : public SoAction { 45 typedef SoAction inherited; 46 47 SO_ACTION_HEADER(SoSearchAction); 48 49 public: 50 static void initClass(void); 51 52 SoSearchAction(void); 53 virtual ~SoSearchAction(void); 54 55 enum LookFor { NODE = 1, TYPE = 2, NAME = 4 }; 56 enum Interest { FIRST, LAST, ALL }; 57 58 void setNode(SoNode * const node); 59 SoNode * getNode(void) const; 60 void setType(const SoType type, const SbBool chkderived = TRUE); 61 SoType getType(SbBool & chkderived) const; 62 void setName(const SbName name); 63 SbName getName(void) const; 64 void setFind(const int what); 65 int getFind(void) const; 66 void setInterest(const Interest interest); 67 Interest getInterest(void) const; 68 void setSearchingAll(const SbBool searchall); 69 SbBool isSearchingAll(void) const; 70 SoPath * getPath(void) const; 71 SoPathList & getPaths(void); 72 void reset(void); 73 74 void setFound(void); 75 SbBool isFound(void) const; 76 void addPath(SoPath * const path); 77 78 // Obsoleted global flag, only present for compatibility reasons 79 // with old SGI / TGS Inventor application code. 80 static SbBool duringSearchAll; 81 82 protected: 83 virtual void beginTraversal(SoNode * node); 84 85 private: 86 int lookfor; 87 Interest interest; 88 SbBool searchall, chkderived; 89 SoNode * node; 90 SoType type; 91 SbName name; 92 SoPath * path; 93 SoPathList paths; 94 95 private: 96 SbLazyPimplPtr<SoSearchActionP> pimpl; 97 98 // NOT IMPLEMENTED: 99 SoSearchAction(const SoSearchAction & rhs); 100 SoSearchAction & operator = (const SoSearchAction & rhs); 101 }; // SoSearchAction 102 103 #endif // !COIN_SOSEARCHACTION_H 104