/*
 Copyright 2019 Alain Dargelas
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
 http://www.apache.org/licenses/LICENSE-2.0
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */

/* 
 * File:   ClockingBlockHolder.cpp
 * Author: alain
 * 
 * Created on June 1, 2018, 9:08 PM
 */

#include "ClockingBlockHolder.h"

using namespace SURELOG;

void ClockingBlockHolder::addClockingBlock(SymbolId blockId, ClockingBlock& block) {
  m_clockingBlockMap.insert(std::make_pair(blockId, block));
}

ClockingBlock*
ClockingBlockHolder::getClockingBlock (SymbolId blockId)
{
  ClockingBlockMap::iterator itr = m_clockingBlockMap.find (blockId);
  if (itr != m_clockingBlockMap.end ())
    {
      return &(*itr).second;
    }
  else
    {
      return NULL;
    }
}
