int Staff::AlignVertically(FunctorParams *functorParams) { AlignVerticallyParams *params = dynamic_cast<AlignVerticallyParams *>(functorParams); assert(params); params->m_staffN = this->GetN(); // this gets (or creates) the measureAligner for the measure StaffAlignment *alignment = params->m_systemAligner->GetStaffAlignment(params->m_staffIdx, this, params->m_doc); assert(alignment); // Set the pointer of the m_alignment m_staffAlignment = alignment; std::vector<Object *>::iterator it; it = std::find_if(m_timeSpanningElements.begin(), m_timeSpanningElements.end(), ObjectComparison(VERSE)); if (it != m_timeSpanningElements.end()) { Verse *v = dynamic_cast<Verse *>(*it); assert(v); alignment->SetVerseCount(v->GetN()); } // for next staff params->m_staffIdx++; return FUNCTOR_CONTINUE; }
Object* ObjectListInterface::GetListFirst(const Object *startFrom, const std::type_info *elementType) { ListOfObjects::iterator it = m_list.begin(); std::advance(it, GetListIndex(startFrom)); it = std::find_if(it, m_list.end(), ObjectComparison( elementType ) ); return (it == m_list.end()) ? NULL : *it; }
Object* Object::GetFirst( const std::type_info *elementType ) { m_iteratorElementType = elementType; m_iteratorEnd = m_children.end(); m_iteratorCurrent = std::find_if(m_children.begin(), m_iteratorEnd, ObjectComparison( m_iteratorElementType ) ); return (m_iteratorCurrent == m_iteratorEnd) ? NULL : *m_iteratorCurrent; }
Object* ObjectListInterface::GetListFirstBackward(Object *startFrom, const std::type_info *elementType) { ListOfObjects::iterator it = m_list.begin(); std::advance(it, GetListIndex(startFrom)); ListOfObjects::reverse_iterator rit(it); rit = std::find_if(rit, m_list.rend(), ObjectComparison( elementType ) ); return (rit == m_list.rend()) ? NULL : *rit; }
Object* Object::GetNext( ) { m_iteratorCurrent++; m_iteratorCurrent = std::find_if(m_iteratorCurrent, m_iteratorEnd, ObjectComparison( m_iteratorElementType ) ); return (m_iteratorCurrent == m_iteratorEnd) ? NULL : *m_iteratorCurrent; }
int Object::GetChildCount( const std::type_info *elementType ) { return (int)count_if (m_children.begin(), m_children.end(), ObjectComparison( elementType )); }