void Measure::AddChild(Object *child) { if (child->IsControlElement()) { assert(dynamic_cast<ControlElement *>(child)); } else if (child->IsEditorialElement()) { assert(dynamic_cast<EditorialElement *>(child)); } else if (child->Is(STAFF)) { Staff *staff = dynamic_cast<Staff *>(child); assert(staff); if (staff && (staff->GetN() < 1)) { // This is not 100% safe if we have a <app> and <rdg> with more than // one staff as a previous child. staff->SetN(this->GetChildCount()); } } else { LogError("Adding '%s' to a '%s'", child->GetClassName().c_str(), this->GetClassName().c_str()); assert(false); } child->SetParent(this); m_children.push_back(child); Modify(); }
void Measure::AddFloatingElement( FloatingElement *element ) { element->SetParent( this ); m_children.push_back( element ); if (element->Is() == STAFF) { Staff *staff = dynamic_cast<Staff*>(element); assert( staff ); if ( staff->GetN() < 1) { // This is not 100% safe if we have a <app> and <rdg> with more than // one staff as a previous child. staff->SetN( this->GetChildCount() ); } } }