X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/blast.git/blobdiff_plain/f311fbc3e1436bf248c54225f0743cfa671c4bd7..cfe8322b50c9ef08ffbc3e52b0849bca4cd1d0bf:/Graph.cpp diff --git a/Graph.cpp b/Graph.cpp index 8cd0f99..a4dd676 100644 --- a/Graph.cpp +++ b/Graph.cpp @@ -6,9 +6,11 @@ Graph::Graph() { topGroup = new GroupBlock(NULL); topGroup->setName("top group"); + groups.append(topGroup); } Graph::~Graph() { + delete topGroup; } @@ -16,12 +18,27 @@ QList Graph::getOutsideInterfaces() { return topGroup->getInterfaces(); } -GroupBlock* Graph::createChildBlock(GroupBlock* parent) { +GroupBlock* Graph::createChildGroupBlock(GroupBlock* parent) { GroupBlock* b = new GroupBlock(parent); + groups.append(b); return b; } -FunctionalBlock* Graph::addFunctionalBlock(GroupBlock* group, ReferenceBlock* ref) { +bool Graph::removeGroupBlock(GroupBlock *group) { + group->removeAllBlocks(); + GroupBlock* parent = AB_TO_GRP(group->getParent()); + parent->removeBlock(group); + groups.removeAll(group); +} + +GroupBlock* Graph::getGroupBlockByName(QString name) { + foreach(GroupBlock* group, groups) { + if (group->getName() == name) return group; + } + return NULL; +} + +FunctionalBlock* Graph::createFunctionalBlock(GroupBlock* group, ReferenceBlock* ref) { FunctionalBlock* newBlock = new FunctionalBlock(group,ref); newBlock->populate(); @@ -30,12 +47,63 @@ FunctionalBlock* Graph::addFunctionalBlock(GroupBlock* group, ReferenceBlock* re return newBlock; } -bool Graph::removeFunctionalBlock(FunctionalBlock* block, GroupBlock *group) { +FunctionalBlock* Graph::duplicateFunctionalBlock(FunctionalBlock *block) { + + ReferenceBlock* ref = block->getReference(); + GroupBlock* group = AB_TO_GRP(block->getParent()); + + // adding to the graph + FunctionalBlock* newBlock = createFunctionalBlock(group,ref); + return newBlock; +} + + +bool Graph::removeFunctionalBlock(FunctionalBlock* block) { + GroupBlock* group = AB_TO_GRP(block->getParent()); group->removeBlock(block); + return true; } -bool Graph::removeGroupBlock(GroupBlock *group) { - group->removeAllBlocks(); - GroupBlock* parent = AB_TO_GRP(group->getParent()); - parent->removeBlock(group); +FunctionalBlock* Graph::getFunctionalBlockByName(QString name, GroupBlock* parent) { + FunctionalBlock* block = NULL; + if (parent != NULL) { + block = AB_TO_FUN(parent->getFunctionalBlockByName(name)); + } + else { + foreach(GroupBlock* group, groups) { + block = AB_TO_FUN(group->getFunctionalBlockByName(name)); + if (block != NULL) return block; + } + } + return block; +} + +FunctionalBlock* Graph::createSourceBlock(ReferenceBlock* ref) { + + FunctionalBlock* newBlock = new FunctionalBlock(NULL,ref); + newBlock->populate(); + sources.append(newBlock); + return newBlock; +} + +FunctionalBlock* Graph::duplicateSourceBlock(FunctionalBlock *block) { + + ReferenceBlock* ref = block->getReference(); + GroupBlock* group = AB_TO_GRP(block->getParent()); + + // adding to the graph + FunctionalBlock* newBlock = createSourceBlock(ref); + return newBlock; +} + +FunctionalBlock* Graph::getSourceBlockByName(QString name) { + foreach(FunctionalBlock* block, sources) { + if (block->getName() == name) return block; + } + return NULL; +} + +bool Graph::removeSourceBlock(FunctionalBlock *block) { + sources.removeAll(block); + return true; }