| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /*=========================================================================
- Program: Insight Segmentation & Registration Toolkit
- Module: $RCSfile$
- Language: C++
- Date: $Date$
- Version: $Revision$
- Copyright (c) 2000 National Library of Medicine
- All rights reserved.
- See COPYRIGHT.txt for copyright details.
- =========================================================================*/
- #include "cmSourceGroup.h"
- /**
- * The constructor initializes the group's regular expression.
- */
- cmSourceGroup::cmSourceGroup(const char* name, const char* regex):
- m_Name(name),
- m_GroupRegex(regex)
- {
- }
- /**
- * Copy constructor.
- */
- cmSourceGroup::cmSourceGroup(const cmSourceGroup& r):
- m_Name(r.m_Name),
- m_GroupRegex(r.m_GroupRegex),
- m_Sources(r.m_Sources),
- m_CustomCommands(r.m_CustomCommands)
- {
- }
- /**
- * Returns whether the given name matches the group's regular expression.
- */
- bool cmSourceGroup::Matches(const char* name)
- {
- return m_GroupRegex.find(name);
- }
- /**
- * Add a source and corresponding custom command to the group. If the
- * source already exists, the command will be added to its set of commands.
- * If the command also already exists, the given dependencies and outputs
- * are added to it.
- */
- void cmSourceGroup::AddCustomCommand(const cmCustomCommand &cmd)
- {
- CustomCommands::iterator s = m_CustomCommands.find(cmd.m_Source);
- if(s == m_CustomCommands.end())
- {
- // The source was not found. Add it with this command.
- m_CustomCommands[cmd.m_Source][cmd.m_Command].
- m_Depends.insert(cmd.m_Depends.begin(),cmd.m_Depends.end());
- m_CustomCommands[cmd.m_Source][cmd.m_Command].
- m_Outputs.insert(cmd.m_Outputs.begin(),cmd.m_Outputs.end());
- return;
- }
-
- // The source already exists. See if the command exists.
- Commands& commands = s->second;
- Commands::iterator c = commands.find(cmd.m_Command);
- if(c == commands.end())
- {
- // The command did not exist. Add it.
- commands[cmd.m_Command].m_Depends.insert(cmd.m_Depends.begin(), cmd.m_Depends.end());
- commands[cmd.m_Command].m_Outputs.insert(cmd.m_Outputs.begin(), cmd.m_Outputs.end());
- return;
- }
-
- // The command already exists for this source. Merge the sets.
- CommandFiles& commandFiles = c->second;
- commandFiles.m_Depends.insert(cmd.m_Depends.begin(), cmd.m_Depends.end());
- commandFiles.m_Outputs.insert(cmd.m_Outputs.begin(), cmd.m_Outputs.end());
- }
|