24 static ossimTrace traceDebug(
"ossimConnectableContainer:debug");
106 connectablObjectMapType::iterator current;
111 if(((*current).second)->canCastTo(typeInfo))
113 return (*current).second.get();
144 connectablObjectMapType::iterator current;
149 if( ((*current).second)->canCastTo(className) )
151 return (*current).second.get();
183 connectablObjectMapType::iterator current;
188 if(((*current).second)->canCastTo(typeInfo))
190 result.push_back( (*current).second.get());
206 for(
long index=0; index < (long)temp.size();++index)
208 result.push_back(temp[index]);
222 connectablObjectMapType::iterator current;
227 if(((*current).second)->canCastTo(className))
229 result.push_back( (*current).second.get());
245 for(
long index=0; index < (long)temp.size();++index)
247 result.push_back(temp[index]);
259 connectablObjectMapType::iterator current;
265 if((*current).second.valid() && ((*current).second->getId()==id))
267 return (*current).second.get();
284 if(
object)
return object;
295 connectablObjectMapType::iterator current;
301 if((*current).second.valid() && ((*current).second==obj))
303 return (*current).second.get();
320 if(
object)
return object;
331 connectablObjectMapType::iterator current;
332 std::vector<ossimRefPtr<ossimConnectableObject> > objectList;
340 objectList.push_back((*current).second.get());
345 for(
long index = 0; index < (long)objectList.size(); ++index)
348 objectList[index].
get());
353 objectList[index].
get()));
359 objectList[index].
get()));
368 connectablObjectMapType::const_iterator current;
404 object->changeOwner(
this);
424 result = (*childIter).second.get();
435 return (result!=NULL);
441 static const char* MODULE =
"ossimConnectableContainer::loadState(kwl, prefix)";
446 std::map<ossimId, std::vector<ossimId> > idMapping;
451 << MODULE <<
" error: " <<
"problems adding sources" << std::endl;
457 << MODULE <<
" error: " <<
"problems connecting sources\n";
464 const char* prefix)
const 467 connectablObjectMapType::const_iterator current;
476 if((*current).second.valid())
478 bool test = ((*current).second)->
saveState(kwl, newPrefix);
496 bool immediateChildrenOnlyFlag)
498 connectablObjectMapType::iterator current;
500 std::vector<ossimConnectableObject*> temp;
504 temp.push_back((*current).second.get());
507 for(i = 0; i < temp.size();++i)
510 if(!immediateChildrenOnlyFlag)
513 (*current).second.get());
516 children.push_back(temp[i]);
521 children.push_back(temp[i]);
525 if(!immediateChildrenOnlyFlag)
527 for(i = 0; i < temp.size(); ++i)
530 (*current).second.get());
535 immediateChildrenOnlyFlag);
543 connectablObjectMapType::iterator current;
551 temp = (*current).second.get();
556 (*current).second = NULL;
564 connectablObjectMapType::iterator current;
570 temp = (*current).second.get();
581 std::vector<ossimId> >& idMapping,
587 std::vector<ossimId> inputConnectionIds;
590 std::vector<ossimString> keys =
592 long numberOfSources = (long)keys.size();
594 int offset = (int)(copyPrefix+
"object").size();
596 std::vector<int> theNumberList(numberOfSources);
597 for(idx = 0; idx < (int)theNumberList.size();++idx)
601 theNumberList[idx] = numberStr.
toInt();
603 std::sort(theNumberList.begin(), theNumberList.end());
604 for(idx=0;idx < (int)theNumberList.size();++idx)
628 inputConnectionIds.clear();
634 if(inputConnectionIds.size() != 0)
636 idMapping.insert(std::make_pair(
id, inputConnectionIds));
660 newPrefix +=
"input_connection";
662 while(numberOfMatches < numberOfKeys)
664 const char* lookup = kwl.
find(newPrefix,
687 std::map<ossimId, std::vector<ossimId> >::const_iterator iter = idMapping.begin();
689 while(iter != idMapping.end())
691 visitor.
setId( (*iter).first );
698 long upperBound = (long)(*iter).second.size();
699 for(
long index = 0; index < upperBound; ++index)
702 visitor.
setId( (*iter).second[index] );
716 <<
"ossimConnectableContainer::connectAllObjects, Could not find " 717 << (*iter).first <<
" for source: \n";
747 connectablObjectMapType::iterator current;
754 return (*current).second.get();
787 connectablObjectMapType::iterator current =
theObjectMap.begin();
810 connectablObjectMapType::iterator current;
817 if (currentObject.
valid())
ossimConnectableContainerChildListener(ossimConnectableContainer *container)
bool connectAllObjects(const std::map< ossimId, std::vector< ossimId > > &idMapping)
virtual void visit(ossimObject *obj)
const ossimObject * getOwner() const
Fetches the current owner, most likely a container but not limited to one.
virtual bool canConnectMyInputTo(ossim_int32 index, const ossimConnectableObject *obj) const
required to be overriden by derived classes
ossimConnectableContainerChildListener * theChildListener
void setId(const ossimId &id)
ossim_uint32 getNumberOfSubstringKeys(const ossimString ®ularExpression) const
virtual ossimConnectableObject * findFirstObjectOfType(const RTTItypeid &typeInfo, bool recurse=true)=0
virtual void disconnect(ossimConnectableObject *object=0)
Will disconnect the object passed in.
virtual ossim_uint32 getNumberOfObjects(bool recurse=true) const =0
bool addAllObjects(std::map< ossimId, std::vector< ossimId > > &idMapping, const ossimKeywordlist &kwl, const char *prefix)
Represents serializable keyword/value map.
const char * find(const char *key) const
void setVisitorType(int vType, bool on=true)
virtual void propagateEventToOutputs(ossimEvent &event)
virtual void objectDestructingEvent(ossimObjectDestructingEvent &event)
virtual bool canConnectMyOutputTo(ossim_int32 index, const ossimConnectableObject *obj) const
default implementation is to allow anyone to connect to us.
virtual ossimConnectableObject::ConnectableObjectList findAllObjectsOfType(const RTTItypeid &typeInfo, bool recurse=true)=0
static ossimString toString(bool aValue)
Numeric to string methods.
virtual ~ossimConnectableContainer()
static const ossim_int64 INVALID_ID
static ossimObjectFactoryRegistry * instance()
ossimObject * theBaseObject
class OSSIMDLLEXPORT ossimConnectableContainerChildListener
ossim_int64 getId() const
virtual void getChildren(std::vector< ossimConnectableObject *> &children, bool immediateChildrenOnlyFlag)=0
void turnOffVisitorType(int vType)
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
std::vector< ossimRefPtr< ossimConnectableObject > > ConnectableObjectList
virtual void changeOwner(ossimObject *owner)
Permits changing the object's owner.
const ossimObject * getObject() const
This is the originating object that originally produced the event.
void findInputConnectionIds(std::vector< ossimId > &result, const ossimKeywordlist &kwl, const char *prefix)
ossimConnectableContainer * theContainer
const ossimId & getId() const
Will allow us to get this object's id.
virtual ossimConnectableObject * getConnectableObject(ossim_uint32 index)
unsigned int ossim_uint32
bool hasVisited(ossimObject *obj) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
virtual ossim_int32 connectMyInputTo(ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
Will try to connect this objects input to the passed in object.
ossimConnectableObject * getObject()
virtual void disconnectInputEvent(ossimConnectionEvent &event)
virtual ossimConnectableObject * findObject(const ossimId &id, bool recurse=true)=0
std::vector< ossimString > getSubstringKeyList(const ossimString ®ularExpression) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
virtual void reset()
Resets m_object to 0, calls ossimVisitor::reset().
ossim_uint32 getNumberOfObjects(bool recurse=true) const
virtual void getChildren(std::vector< ossimConnectableObject *> &children, bool immediateChildrenOnlyFlag)
long toLong() const
toLong's deprecated, please use the toInts...
virtual bool addChild(ossimConnectableObject *attachableObject)
virtual void makeUniqueIds()=0
void propagatePropertyEvent(ossimEvent &event)
VisitorType getVisitorType() const
virtual ossimObject * createObject(const ossimString &name) const
RTTI_DEF2(ossimConnectableContainer, "ossimConnectableContainer", ossimConnectableObject, ossimConnectableContainerInterface)
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
VisitorType
Enumeration type can be a mask and will traverse a graph of connectables based on the values...
bool stopTraversal() const
virtual void accept(ossimVisitor &visitor)
We will add a visitor interface for all connectable objects.
virtual void connectInputEvent(ossimConnectionEvent &event)
void setId(const ossimId &id)
All connectable objects will have id's.
virtual bool fillContainer(ossimConnectableContainer &container)
virtual ossimObject * getObject()
ossimConnectableContainer(ossimConnectableObject *owner=0)
virtual bool removeChild(ossimConnectableObject *object)
connectablObjectMapType theObjectMap
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
static ossimIdManager * instance()
virtual void accept(ossimVisitor &visitor)
We will add a visitor interface for all connectable objects.
void removeAllListeners()
virtual bool removeListener(ossimListener *listener)