Пример #1
0
MLProc::err MLMultiContainer::buildProc(juce::XmlElement* parent)
{
	err e = OK;
	const int copies = (int)mCopies.size();	
	const MLSymbol className(parent->getStringAttribute("class").toUTF8());
	const MLSymbol procName(parent->getStringAttribute("name").toUTF8());
	// debug() << "MLMultiContainer::buildProc (class=" << className << ", name=" << procName << ")\n";

	for(int i=0; i<copies; i++)
	{
		// add the specified proc to all subcontainers. 
		MLProcContainer* pCopy = getCopyAsContainer(i);
        if(pCopy != nullptr)
        {
            e = pCopy->addProc(className, procName);
            if (e == MLProc::OK)
            {
                MLPath procPath(procName);
                pCopy->setProcParams(procPath, parent);
                pCopy->setCopyIndex(i + 1);
                MLProcPtr p = pCopy->getProc(procPath);	
                if(p)
                {	
                    p->setup();
                    if (p->isContainer())
                    {	
                        MLProcContainer* pc = static_cast<MLProcContainer*>(&(*p));
                        pc->buildGraph(parent);
                    }
                }		
                else
                {
                    debug() << "MLMultiContainer::buildProc: getProc failed for new proc!\n";
                }
            }
        }
        else
        {
            debug() << "MLMultiContainer: null copy in buildProc ()!\n";
        }
	}
	return e;
}