/// \{ /// Adds an edge to the graph. /// /// Complexity: O(m) /// /// \param[in] e The edge to add /// \param[in] type Type of edge to add /// \return true on success, false otherwise /// /// \note This function performs boundary check. bool add(edge e, edge::type type = edge::type::uni) { if ((e.from >= n) || (e.to >= n)) return false; push_back_unique(m[e.from], e.to); if (type == edge::type::bi) push_back_unique(m[e.to], e.from); return true; }
VOID cCELL_OFF_WRITER::WriteOffFiles() { INT i = 0; INT nCellsInit = (INT)(m_cellIndexTable.size()); //only adjacent cells of the first cells are exported while (i < (INT)(m_cellIndexTable.size())){ INT c = m_cellIndexTable[i]; cCELL_RECORD_GENERATOR cellRecord(m_foamReader, c); cellRecord.Generate(); cellRecord.ExportToOff(); if ( i < nCellsInit){ //export adjacrent cells only for the first cells for (INT j = 0; j < cellRecord.NumAdjacentCells(); j++){ INT adjacentCell = cellRecord.AdjacentCell(j); if (adjacentCell != -1 && push_back_unique(&m_cellIndexTable, adjacentCell)){ cCELL_RECORD_GENERATOR adjCellRecord(m_foamReader, adjacentCell); adjCellRecord.Generate(); adjCellRecord.ExportToOff(); } } } cBOX3 cellBox = cellRecord.CellBox(); m_cellBoxTable.push_back(cellBox); i++; } }
// Helper function for GetSolModifiers: adds an entry if it doesnt already exist void AddSolModifier(ObjTypeList* otl, CRunObjType* type) { // System object ignored if (type == NULL) return; // If not found, add push_back_unique(*otl, type); // Add sister types ObjTypeIterator t = type->sisterTypes.begin(); ObjTypeIterator end = type->sisterTypes.end(); for ( ; t != end; t++) push_back_unique(*otl, *t); // Add family movement types t = type->familyMovs.begin(); end = type->familyMovs.end(); for ( ; t != end; t++) push_back_unique(*otl, *t); // Add all the families this object is in (for triggers) t = type->teams.begin(); end = type->teams.end(); for ( ; t != end; t++) { push_back_unique(*otl, *t); // If a family movement, add the main family types which can also be affected. if (type->IsFamily() && type->movement) { ObjTypeIterator f = (*t)->teams.begin(); ObjTypeIterator teams_end = (*t)->teams.end(); for ( ; f != teams_end; f++) AddSolModifier(otl, *f); } // Add the family's movements too ObjTypeIterator u = (*t)->familyMovs.begin(); ObjTypeIterator familyMovs_end = (*t)->familyMovs.end(); for ( ; u != familyMovs_end; u++) push_back_unique(*otl, *u); } }
bool CTypeChecker::PrivateVariableExists(CString objName, CString expName, int paramNum, int numParams, CString varName) { CString actualvarName = varName; objName.MakeLower(); expName.MakeLower(); varName.MakeLower(); if (objName == "<system>") if(exists_element(pApp->global_variables.begin(), pApp->global_variables.end(), varName)) return true; else { // Variable is undefined, add it to our list of undefined variables push_back_unique(m_UndefinedVariables, CUndefinedVariable(true, 0, varName)); return true; } CObjType* oT; POSITION pos = objMap->GetStartPosition(); long mapKey; // Loop through and add the objects while (pos != NULL) { objMap->GetNextAssoc(pos, mapKey, oT); CString Name = oT->GetName(); Name.MakeLower(); if (Name == objName) { if(exists_element(oT->m_PrivateValues.begin(), oT->m_PrivateValues.end(), varName)) return true; else { // Variable undefined, add it to our list of undefined variables push_back_unique(m_UndefinedVariables, CUndefinedVariable(false, oT, actualvarName)); return true; } } } // Check families list<Family>::iterator f = pApp->families.begin(); for ( ; f != pApp->families.end(); f++) { if(f->is_in_use) { CString familyName = f->name; familyName.MakeLower(); f->UpdateFamilyData(); if (objName == familyName) { return f->VariableNameExists(varName); } } } return false; }