void IBAction::Create() { // create action variable for (uint i = 0; i < m_pDef->GetVarNames().size(); ++i) m_aVariables.insert(VarPair(m_pDef->GetVarNames()[i], IBObject())); ResolveVariableFromPostCond(m_aPostCond.back()); m_pDef->CreateOwnedVariables(this); m_eState = (IsResolved() ? IBA_State::IBA_Resolved : IBA_State::IBA_Unresolved); if (m_eState == IBA_State::IBA_Resolved) { m_eState = IBA_State::IBA_Ready; FinalizeCreation(); } else if (m_eState == IBA_State::IBA_Unresolved) { for (VarMap::iterator it = m_aVariables.begin(); it != m_aVariables.end(); ++it) { const IBObject& Obj = it->second; if (Obj.GetUserData() == nullptr) m_aPotentialVariables.insert(PotentialVarPair(it->first, vector<IBObject>())); } m_pDef->CompleteVariables(this); } }
void Device::addInput(std::string name, void* ptr, VarType type) { VarDef var; var.ptr = ptr; var.type = type; m_inputs.insert(VarPair(name, var)); };
IBFact::IBFact(const IBFactDef* pDef, bool bInverted, const vector<IBObject>& aVariables, class IBWorldChange* pWorldChangeOwner, IBPlanner* pPlanner) : m_pPlanner(pPlanner) , m_pDef(pDef) , m_bInverted(bInverted) , m_pWorldChangeOwner(pWorldChangeOwner) { ASSERT(aVariables.size() == pDef->GetDegree()); for (uint i=0 ; i<aVariables.size() ; ++i) m_aVariables.insert(VarPair(pDef->GetVariableName(i), aVariables[i])); }
IBAction::IBAction(const class IBAction* pOrig) : m_pDef(pOrig->m_pDef) , m_pPlanner(pOrig->m_pPlanner) , m_eState(IBA_Init) , m_pPostWorldChange(pOrig->m_pPostWorldChange) , m_pPreWorldChange(nullptr) , m_aPostCond(pOrig->m_aPostCond) , m_pUserData(nullptr) { for (VarMap::const_iterator it = pOrig->m_aVariables.begin(); it != pOrig->m_aVariables.end(); ++it) { m_aVariables.insert(VarPair(it->first, it->second)); } for (IBFact* pFact : pOrig->m_aAdditionalPostCond) { m_aAdditionalPostCond.push_back(pFact->Clone()); } }