comparison framework/Document.cpp @ 233:8aace2d9f1c2

Seems to be a bad idea to use plain DEBUG symbol on OS/X (system wants it)
author Chris Cannam
date Tue, 14 Jun 2011 15:27:12 +0100
parents 8c13e8219903
children dd14baa45847
comparison
equal deleted inserted replaced
232:025065fd5b49 233:8aace2d9f1c2
61 std::cerr << "\n\nDocument::~Document: about to clear command history" << std::endl; 61 std::cerr << "\n\nDocument::~Document: about to clear command history" << std::endl;
62 #endif 62 #endif
63 CommandHistory::getInstance()->clear(); 63 CommandHistory::getInstance()->clear();
64 64
65 #ifdef DEBUG_DOCUMENT 65 #ifdef DEBUG_DOCUMENT
66 DEBUG << "Document::~Document: about to delete layers" << endl; 66 SVDEBUG << "Document::~Document: about to delete layers" << endl;
67 #endif 67 #endif
68 while (!m_layers.empty()) { 68 while (!m_layers.empty()) {
69 deleteLayer(*m_layers.begin(), true); 69 deleteLayer(*m_layers.begin(), true);
70 } 70 }
71 71
72 if (!m_models.empty()) { 72 if (!m_models.empty()) {
73 DEBUG << "Document::~Document: WARNING: " 73 SVDEBUG << "Document::~Document: WARNING: "
74 << m_models.size() << " model(s) still remain -- " 74 << m_models.size() << " model(s) still remain -- "
75 << "should have been garbage collected when deleting layers" 75 << "should have been garbage collected when deleting layers"
76 << endl; 76 << endl;
77 while (!m_models.empty()) { 77 while (!m_models.empty()) {
78 Model *model = m_models.begin()->first; 78 Model *model = m_models.begin()->first;
79 if (model == m_mainModel) { 79 if (model == m_mainModel) {
80 // just in case! 80 // just in case!
81 DEBUG << "Document::~Document: WARNING: Main model is also" 81 SVDEBUG << "Document::~Document: WARNING: Main model is also"
82 << " in models list!" << endl; 82 << " in models list!" << endl;
83 } else if (model) { 83 } else if (model) {
84 model->aboutToDelete(); 84 model->aboutToDelete();
85 emit modelAboutToBeDeleted(model); 85 emit modelAboutToBeDeleted(model);
86 delete model; 86 delete model;
88 m_models.erase(m_models.begin()); 88 m_models.erase(m_models.begin());
89 } 89 }
90 } 90 }
91 91
92 #ifdef DEBUG_DOCUMENT 92 #ifdef DEBUG_DOCUMENT
93 DEBUG << "Document::~Document: About to get rid of main model" 93 SVDEBUG << "Document::~Document: About to get rid of main model"
94 << endl; 94 << endl;
95 #endif 95 #endif
96 if (m_mainModel) { 96 if (m_mainModel) {
97 m_mainModel->aboutToDelete(); 97 m_mainModel->aboutToDelete();
98 emit modelAboutToBeDeleted(m_mainModel); 98 emit modelAboutToBeDeleted(m_mainModel);
112 newLayer->setObjectName(getUniqueLayerName(newLayer->objectName())); 112 newLayer->setObjectName(getUniqueLayerName(newLayer->objectName()));
113 113
114 m_layers.insert(newLayer); 114 m_layers.insert(newLayer);
115 115
116 #ifdef DEBUG_DOCUMENT 116 #ifdef DEBUG_DOCUMENT
117 DEBUG << "Document::createLayer: Added layer of type " << type 117 SVDEBUG << "Document::createLayer: Added layer of type " << type
118 << ", now have " << m_layers.size() << " layers" << endl; 118 << ", now have " << m_layers.size() << " layers" << endl;
119 #endif 119 #endif
120 120
121 emit layerAdded(newLayer); 121 emit layerAdded(newLayer);
122 122
158 setChannel(newLayer, -1); 158 setChannel(newLayer, -1);
159 159
160 m_layers.insert(newLayer); 160 m_layers.insert(newLayer);
161 161
162 #ifdef DEBUG_DOCUMENT 162 #ifdef DEBUG_DOCUMENT
163 DEBUG << "Document::createImportedLayer: Added layer of type " << type 163 SVDEBUG << "Document::createImportedLayer: Added layer of type " << type
164 << ", now have " << m_layers.size() << " layers" << endl; 164 << ", now have " << m_layers.size() << " layers" << endl;
165 #endif 165 #endif
166 166
167 emit layerAdded(newLayer); 167 emit layerAdded(newLayer);
168 return newLayer; 168 return newLayer;
280 // model, or delete the layer for each layer that is currently 280 // model, or delete the layer for each layer that is currently
281 // using one of these. Carry out this replacement before we 281 // using one of these. Carry out this replacement before we
282 // delete any of the models. 282 // delete any of the models.
283 283
284 #ifdef DEBUG_DOCUMENT 284 #ifdef DEBUG_DOCUMENT
285 DEBUG << "Document::setMainModel: Have " 285 SVDEBUG << "Document::setMainModel: Have "
286 << m_layers.size() << " layers" << endl; 286 << m_layers.size() << " layers" << endl;
287 std::cerr << "Models now: "; 287 std::cerr << "Models now: ";
288 for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) { 288 for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) {
289 std::cerr << i->first << " "; 289 std::cerr << i->first << " ";
290 } 290 }
295 295
296 Layer *layer = *i; 296 Layer *layer = *i;
297 Model *model = layer->getModel(); 297 Model *model = layer->getModel();
298 298
299 #ifdef DEBUG_DOCUMENT 299 #ifdef DEBUG_DOCUMENT
300 DEBUG << "Document::setMainModel: inspecting model " 300 SVDEBUG << "Document::setMainModel: inspecting model "
301 << (model ? model->objectName(): "(null)") << " in layer " 301 << (model ? model->objectName(): "(null)") << " in layer "
302 << layer->objectName() << endl; 302 << layer->objectName() << endl;
303 #endif 303 #endif
304 304
305 if (model == oldMainModel) { 305 if (model == oldMainModel) {
365 emit modelRegenerationWarning(layer->objectName(), 365 emit modelRegenerationWarning(layer->objectName(),
366 transformId, 366 transformId,
367 message); 367 message);
368 } 368 }
369 #ifdef DEBUG_DOCUMENT 369 #ifdef DEBUG_DOCUMENT
370 DEBUG << "Replacing model " << model << " (type " 370 SVDEBUG << "Replacing model " << model << " (type "
371 << typeid(*model).name() << ") with model " 371 << typeid(*model).name() << ") with model "
372 << replacementModel << " (type " 372 << replacementModel << " (type "
373 << typeid(*replacementModel).name() << ") in layer " 373 << typeid(*replacementModel).name() << ") in layer "
374 << layer << " (name " << layer->objectName() << ")" 374 << layer << " (name " << layer->objectName() << ")"
375 << endl; 375 << endl;
395 for (ModelMap::iterator i = m_models.begin(); i != m_models.end(); ++i) { 395 for (ModelMap::iterator i = m_models.begin(); i != m_models.end(); ++i) {
396 396
397 Model *m = i->first; 397 Model *m = i->first;
398 398
399 #ifdef DEBUG_DOCUMENT 399 #ifdef DEBUG_DOCUMENT
400 DEBUG << "considering alignment for model " << m << " (name \"" 400 SVDEBUG << "considering alignment for model " << m << " (name \""
401 << m->objectName() << "\")" << endl; 401 << m->objectName() << "\")" << endl;
402 #endif 402 #endif
403 403
404 if (m_autoAlignment) { 404 if (m_autoAlignment) {
405 405
436 << std::endl; 436 << std::endl;
437 return; 437 return;
438 } 438 }
439 439
440 #ifdef DEBUG_DOCUMENT 440 #ifdef DEBUG_DOCUMENT
441 DEBUG << "Document::addDerivedModel: source is " << input.getModel() << " \"" << input.getModel()->objectName() << "\"" << endl; 441 SVDEBUG << "Document::addDerivedModel: source is " << input.getModel() << " \"" << input.getModel()->objectName() << "\"" << endl;
442 #endif 442 #endif
443 443
444 ModelRecord rec; 444 ModelRecord rec;
445 rec.source = input.getModel(); 445 rec.source = input.getModel();
446 rec.channel = input.getChannel(); 446 rec.channel = input.getChannel();
450 outputModelToAdd->setSourceModel(input.getModel()); 450 outputModelToAdd->setSourceModel(input.getModel());
451 451
452 m_models[outputModelToAdd] = rec; 452 m_models[outputModelToAdd] = rec;
453 453
454 #ifdef DEBUG_DOCUMENT 454 #ifdef DEBUG_DOCUMENT
455 DEBUG << "Document::addDerivedModel: Added model " << outputModelToAdd << endl; 455 SVDEBUG << "Document::addDerivedModel: Added model " << outputModelToAdd << endl;
456 std::cerr << "Models now: "; 456 std::cerr << "Models now: ";
457 for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) { 457 for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) {
458 std::cerr << i->first << " "; 458 std::cerr << i->first << " ";
459 } 459 }
460 std::cerr << std::endl; 460 std::cerr << std::endl;
478 rec.refcount = 0; 478 rec.refcount = 0;
479 479
480 m_models[model] = rec; 480 m_models[model] = rec;
481 481
482 #ifdef DEBUG_DOCUMENT 482 #ifdef DEBUG_DOCUMENT
483 DEBUG << "Document::addImportedModel: Added model " << model << endl; 483 SVDEBUG << "Document::addImportedModel: Added model " << model << endl;
484 std::cerr << "Models now: "; 484 std::cerr << "Models now: ";
485 for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) { 485 for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) {
486 std::cerr << i->first << " "; 486 std::cerr << i->first << " ";
487 } 487 }
488 std::cerr << std::endl; 488 std::cerr << std::endl;
573 i->second.source = 0; 573 i->second.source = 0;
574 } 574 }
575 } 575 }
576 576
577 if (sourceCount > 0) { 577 if (sourceCount > 0) {
578 DEBUG << "Document::releaseModel: Deleting model " 578 SVDEBUG << "Document::releaseModel: Deleting model "
579 << model << " even though it is source for " 579 << model << " even though it is source for "
580 << sourceCount << " other derived model(s) -- resetting " 580 << sourceCount << " other derived model(s) -- resetting "
581 << "their source fields appropriately" << endl; 581 << "their source fields appropriately" << endl;
582 } 582 }
583 583
584 model->aboutToDelete(); 584 model->aboutToDelete();
585 emit modelAboutToBeDeleted(model); 585 emit modelAboutToBeDeleted(model);
586 m_models.erase(model); 586 m_models.erase(model);
587 587
588 #ifdef DEBUG_DOCUMENT 588 #ifdef DEBUG_DOCUMENT
589 DEBUG << "Document::releaseModel: Deleted model " << model << endl; 589 SVDEBUG << "Document::releaseModel: Deleted model " << model << endl;
590 std::cerr << "Models now: "; 590 std::cerr << "Models now: ";
591 for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) { 591 for (ModelMap::const_iterator i = m_models.begin(); i != m_models.end(); ++i) {
592 std::cerr << i->first << " "; 592 std::cerr << i->first << " ";
593 } 593 }
594 std::cerr << std::endl; 594 std::cerr << std::endl;
628 return; 628 return;
629 } 629 }
630 } 630 }
631 631
632 if (m_layers.find(layer) == m_layers.end()) { 632 if (m_layers.find(layer) == m_layers.end()) {
633 DEBUG << "Document::deleteLayer: Layer " 633 SVDEBUG << "Document::deleteLayer: Layer "
634 << layer << " (" << typeid(layer).name() << 634 << layer << " (" << typeid(layer).name() <<
635 ") does not exist, or has already been deleted " 635 ") does not exist, or has already been deleted "
636 << "(this may not be as serious as it sounds)" << endl; 636 << "(this may not be as serious as it sounds)" << endl;
637 return; 637 return;
638 } 638 }
639 639
640 m_layers.erase(layer); 640 m_layers.erase(layer);
641 641
642 #ifdef DEBUG_DOCUMENT 642 #ifdef DEBUG_DOCUMENT
643 DEBUG << "Document::deleteLayer: Removing, now have " 643 SVDEBUG << "Document::deleteLayer: Removing, now have "
644 << m_layers.size() << " layers" << endl; 644 << m_layers.size() << " layers" << endl;
645 #endif 645 #endif
646 646
647 releaseModel(layer->getModel()); 647 releaseModel(layer->getModel());
648 emit layerRemoved(layer); 648 emit layerRemoved(layer);
665 } 665 }
666 666
667 Model *previousModel = layer->getModel(); 667 Model *previousModel = layer->getModel();
668 668
669 if (previousModel == model) { 669 if (previousModel == model) {
670 DEBUG << "NOTE: Document::setModel: Layer " << layer << " (\"" 670 SVDEBUG << "NOTE: Document::setModel: Layer " << layer << " (\""
671 << layer->objectName() << "\") is already set to model " 671 << layer->objectName() << "\") is already set to model "
672 << model << " (\"" 672 << model << " (\""
673 << (model ? model->objectName(): "(null)") 673 << (model ? model->objectName(): "(null)")
674 << "\")" << endl; 674 << "\")" << endl;
675 return; 675 return;
701 Document::addLayerToView(View *view, Layer *layer) 701 Document::addLayerToView(View *view, Layer *layer)
702 { 702 {
703 Model *model = layer->getModel(); 703 Model *model = layer->getModel();
704 if (!model) { 704 if (!model) {
705 #ifdef DEBUG_DOCUMENT 705 #ifdef DEBUG_DOCUMENT
706 DEBUG << "Document::addLayerToView: Layer (\"" 706 SVDEBUG << "Document::addLayerToView: Layer (\""
707 << layer->objectName() << "\") with no model being added to view: " 707 << layer->objectName() << "\") with no model being added to view: "
708 << "normally you want to set the model first" << endl; 708 << "normally you want to set the model first" << endl;
709 #endif 709 #endif
710 } else { 710 } else {
711 if (model != m_mainModel && 711 if (model != m_mainModel &&
846 RangeSummarisableTimeValueModel *rm = 846 RangeSummarisableTimeValueModel *rm =
847 dynamic_cast<RangeSummarisableTimeValueModel *>(model); 847 dynamic_cast<RangeSummarisableTimeValueModel *>(model);
848 if (!rm) return; 848 if (!rm) return;
849 849
850 if (rm->getAlignmentReference() == m_mainModel) { 850 if (rm->getAlignmentReference() == m_mainModel) {
851 DEBUG << "Document::alignModel: model " << rm << " is already aligned to main model " << m_mainModel << endl; 851 SVDEBUG << "Document::alignModel: model " << rm << " is already aligned to main model " << m_mainModel << endl;
852 return; 852 return;
853 } 853 }
854 854
855 if (model == m_mainModel) { 855 if (model == m_mainModel) {
856 // The reference has an empty alignment to itself. This makes 856 // The reference has an empty alignment to itself. This makes
857 // it possible to distinguish between the reference and any 857 // it possible to distinguish between the reference and any
858 // unaligned model just by looking at the model itself, 858 // unaligned model just by looking at the model itself,
859 // without also knowing what the main model is 859 // without also knowing what the main model is
860 DEBUG << "Document::alignModel(" << model << "): is main model, setting appropriately" << endl; 860 SVDEBUG << "Document::alignModel(" << model << "): is main model, setting appropriately" << endl;
861 rm->setAlignment(new AlignmentModel(model, model, 0, 0)); 861 rm->setAlignment(new AlignmentModel(model, model, 0, 0));
862 return; 862 return;
863 } 863 }
864 864
865 // This involves creating three new models: 865 // This involves creating three new models:
900 (id, aggregateModel->getSampleRate()); 900 (id, aggregateModel->getSampleRate());
901 901
902 transform.setStepSize(transform.getBlockSize()/2); 902 transform.setStepSize(transform.getBlockSize()/2);
903 transform.setParameter("serialise", 1); 903 transform.setParameter("serialise", 1);
904 904
905 DEBUG << "Document::alignModel: Alignment transform step size " << transform.getStepSize() << ", block size " << transform.getBlockSize() << endl; 905 SVDEBUG << "Document::alignModel: Alignment transform step size " << transform.getStepSize() << ", block size " << transform.getBlockSize() << endl;
906 906
907 ModelTransformerFactory *mtf = ModelTransformerFactory::getInstance(); 907 ModelTransformerFactory *mtf = ModelTransformerFactory::getInstance();
908 908
909 QString message; 909 QString message;
910 Model *transformOutput = mtf->transform(transform, aggregate, message); 910 Model *transformOutput = mtf->transform(transform, aggregate, message);
954 } 954 }
955 955
956 Document::AddLayerCommand::~AddLayerCommand() 956 Document::AddLayerCommand::~AddLayerCommand()
957 { 957 {
958 #ifdef DEBUG_DOCUMENT 958 #ifdef DEBUG_DOCUMENT
959 DEBUG << "Document::AddLayerCommand::~AddLayerCommand" << endl; 959 SVDEBUG << "Document::AddLayerCommand::~AddLayerCommand" << endl;
960 #endif 960 #endif
961 if (!m_added) { 961 if (!m_added) {
962 m_d->deleteLayer(m_layer); 962 m_d->deleteLayer(m_layer);
963 } 963 }
964 } 964 }
965 965
966 QString 966 QString
967 Document::AddLayerCommand::getName() const 967 Document::AddLayerCommand::getName() const
968 { 968 {
969 #ifdef DEBUG_DOCUMENT 969 #ifdef DEBUG_DOCUMENT
970 DEBUG << "Document::AddLayerCommand::getName(): Name is " 970 SVDEBUG << "Document::AddLayerCommand::getName(): Name is "
971 << m_name << endl; 971 << m_name << endl;
972 #endif 972 #endif
973 return m_name; 973 return m_name;
974 } 974 }
975 975
1014 } 1014 }
1015 1015
1016 Document::RemoveLayerCommand::~RemoveLayerCommand() 1016 Document::RemoveLayerCommand::~RemoveLayerCommand()
1017 { 1017 {
1018 #ifdef DEBUG_DOCUMENT 1018 #ifdef DEBUG_DOCUMENT
1019 DEBUG << "Document::RemoveLayerCommand::~RemoveLayerCommand" << endl; 1019 SVDEBUG << "Document::RemoveLayerCommand::~RemoveLayerCommand" << endl;
1020 #endif 1020 #endif
1021 if (!m_added) { 1021 if (!m_added) {
1022 m_d->deleteLayer(m_layer); 1022 m_d->deleteLayer(m_layer);
1023 } 1023 }
1024 } 1024 }
1025 1025
1026 QString 1026 QString
1027 Document::RemoveLayerCommand::getName() const 1027 Document::RemoveLayerCommand::getName() const
1028 { 1028 {
1029 #ifdef DEBUG_DOCUMENT 1029 #ifdef DEBUG_DOCUMENT
1030 DEBUG << "Document::RemoveLayerCommand::getName(): Name is " 1030 SVDEBUG << "Document::RemoveLayerCommand::getName(): Name is "
1031 << m_name << endl; 1031 << m_name << endl;
1032 #endif 1032 #endif
1033 return m_name; 1033 return m_name;
1034 } 1034 }
1035 1035