NodesByNameExpl.cc

Go to the documentation of this file.
00001 #include <esg/explorer/NodesByNameExpl.h>
00002 
00003 using namespace esg;
00004 
00005 bool NodesByNameExpl::_explore(SceneGraphObject& obj)
00006 {
00007     /*
00008      * Chack name of the node
00009      */
00010     if (!_name) return false;
00011     
00012     const char * n = obj.getName();
00013     bool found = false;
00014 
00015     if (!n || strlen(n) == 0) {
00016         if (_falsePositives) {
00017             _foundObjects.append(&obj);
00018             found = true;
00019         }
00020     } else {
00021         if (strcmp(_name, n) == 0) {
00022             _foundObjects.append(&obj);
00023             found = true;
00024         }
00025     }
00026     
00027     /*
00028      * Inspect subnodes and/or attributes
00029      */
00030     return (((obj.hasSubnodes()) ?  _iterate(obj) : false) | found);
00031 }
00032 
00033 NodesByNameExpl::NodesByNameExpl(const char * name, bool falsePositives)
00034     : _falsePositives(falsePositives)
00035 {
00036     setName(name);
00037 }
00038 
00039 NodesByNameExpl::~NodesByNameExpl()
00040 {
00041     delete _name;
00042 }
00043 
00044 void NodesByNameExpl::setName(const char * name)
00045 {
00046     if (_name) delete _name;
00047     size_t size = strlen(name) + 1;
00048     _name = (char*) malloc(sizeof(char) * size);
00049     _name = strncpy(_name, name, size);
00050 }
00051 
00052 SceneGraphObject* NodesByNameExpl::result()
00053 {
00054     return _foundObjects.remove(_foundObjects.firstItem());
00055 }

Generated on Wed Jun 28 12:24:31 2006 for esg by  doxygen 1.4.6