void UmlBaseUseCaseDiagramDefinition::read_() { QHash<void*,UmlUseCaseReference*> ucrefs; unsigned n; unsigned rank; n = UmlCom::read_unsigned(); _fragments.resize(n); for (rank = 0; rank != n; rank += 1) { UmlFragment * f = new UmlFragment(); _fragments.insert(rank, f); f->read_(); } //_fragments.setAutoDelete(TRUE); UmlBaseFragment::compute_container_(_fragments); n = UmlCom::read_unsigned(); _subjects.resize(n); for (rank = 0; rank != n; rank += 1) { UmlSubject * sb = new UmlSubject(); _subjects.insert(rank, sb); sb->read_(); } //_subjects.setAutoDelete(TRUE); n = UmlCom::read_unsigned(); _use_cases.resize(n); for (rank = 0; rank != n; rank += 1) { UmlUseCaseReference * uc = new UmlUseCaseReference(); _use_cases.insert(rank, uc); ucrefs.insert(reinterpret_cast<void*>(uintptr_t(UmlCom::read_unsigned())), uc); uc->read_(_fragments, _subjects); } // _use_cases.setAutoDelete(TRUE); n = UmlCom::read_unsigned(); _actors.resize(n); for (rank = 0; rank != n; rank += 1) _actors.insert(rank, (UmlClass *) UmlBaseItem::read_()); n = UmlCom::read_unsigned(); _rels.resize(n); for (rank = 0; rank != n; rank += 1) { UmlUseCaseAssociation * r = new UmlUseCaseAssociation(); _rels.insert(rank, r); r->read_(ucrefs); } //_rels.setAutoDelete(TRUE); }
void UmlBaseSequenceDiagramDefinition::read_() { QHash<void*,UmlClassInstanceReference*> instances; unsigned n; unsigned rank; n = UmlCom::read_unsigned(); _fragments.resize(n); for (rank = 0; rank != n; rank += 1) { UmlFragment * f = new UmlFragment(); _fragments.insert(rank, f); f->read_(); } //_fragments.setAutoDelete(TRUE); UmlBaseFragment::compute_container_(_fragments); n = UmlCom::read_unsigned(); _instances.resize(n); for (rank = 0; rank != n; rank += 1) { UmlClassInstanceReference * i = new UmlClassInstanceReference(); _instances.insert(rank, i); instances.insert((void *) UmlCom::read_unsigned(), i); i->read_(); } //_instances.setAutoDelete(TRUE); n = UmlCom::read_unsigned(); _messages.resize(n); if (n != 0) { for (rank = 0; rank != n; rank += 1) { UmlSequenceMessage * m = new UmlSequenceMessage(); _messages.insert(rank, m); m->read_(instances, _fragments); } ::qsort(_messages.data(), 0, n - 1); //_messages.setAutoDelete(TRUE); } n = _fragments.count(); for (rank = 0; rank != n; rank += 1) _fragments.at(rank)->read_covered_(instances); while (UmlCom::read_bool()) { WrapperStr s = UmlCom::read_string(); int x = (int) UmlCom::read_unsigned(); int y = (int) UmlCom::read_unsigned(); int w = (int) UmlCom::read_unsigned(); int h = (int) UmlCom::read_unsigned(); UmlFragmentCompartment * cp = UmlBaseFragment::get_container_(x, y, w, h, _fragments); if (cp != 0) cp->add_text_(s); } while (UmlCom::read_bool()) { WrapperStr s = UmlCom::read_string(); int x = (int) UmlCom::read_unsigned(); int y = (int) UmlCom::read_unsigned(); int w = (int) UmlCom::read_unsigned(); int h = (int) UmlCom::read_unsigned(); UmlFragmentCompartment * cp = UmlBaseFragment::get_container_(x, y, w, h, _fragments); if (cp != 0) cp->add_cont_(s, y + h / 2); } }