void Port::acquireOutputBuffer (BufferProvider &provider, nframes_t len) { int numConnections = dependents().count(); if (numConnections == 1) { // Use the other port's buffer Port *other = static_cast<Port *>( *(dependents().begin()) ); m_buffer = other->buffer(); } else if (numConnections == 2) { qFatal("Internal mixing is not yet supported"); } if (!m_buffer) { m_buffer = provider.acquire(type(), len); } }
/****************************************************************************** * Returns the container to which this dataset belongs. ******************************************************************************/ DataSetContainer* DataSet::container() const { for(RefMaker* refmaker : dependents()) { if(DataSetContainer* c = dynamic_object_cast<DataSetContainer>(refmaker)) { return c; } } OVITO_ASSERT_MSG(false, "DataSet::container()", "DataSet is not in a DataSetContainer."); return nullptr; }
bool CachedResults<T>::GetCachedResult1Dep(T& retResult, const TaggedObject* dependent1) { #ifdef IP_DEBUG_CACHE DBG_START_METH("CachedResults<T>::GetCachedResult1Dep", dbg_verbosity); #endif std::vector<const TaggedObject*> dependents(1); dependents[0] = dependent1; return GetCachedResult(retResult, dependents); }
void CachedResults<T>::AddCachedResult2Dep(const T& result, const TaggedObject* dependent1, const TaggedObject* dependent2) { #ifdef IP_DEBUG_CACHE DBG_START_METH("CachedResults<T>::AddCachedResult2dDep", dbg_verbosity); #endif std::vector<const TaggedObject*> dependents(2); dependents[0] = dependent1; dependents[1] = dependent2; AddCachedResult(result, dependents); }