//===- LDSectionFactory.cpp -----------------------------------------------===//
//
// The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include <mcld/LD/LDSectionFactory.h>
using namespace mcld;
//==========================
// LDSectionFactory
LDSectionFactory::LDSectionFactory(size_t pNum)
: GCFactory<LDSection, 0>(pNum) {
}
LDSectionFactory::~LDSectionFactory()
{
}
LDSection* LDSectionFactory::produce(const std::string& pName,
LDFileFormat::Kind pKind,
uint32_t pType,
uint32_t pFlag)
{
// create a LDSection
LDSection* result = allocate();
new (result) LDSection(pName, pKind, pType, pFlag);
return result;
}
void LDSectionFactory::destroy(LDSection*& pSection)
{
// do not recycle LDSection. HeaderFactory will do that job.
deallocate(pSection);
}
LDSection* LDSectionFactory::find(const std::string& pName)
{
iterator sect_iter, sect_end = end();
for (sect_iter = begin(); sect_iter != sect_end; ++sect_iter)
if ((*sect_iter).name() == pName)
break;
if (sect_iter == sect_end)
return NULL;
return &(*sect_iter);
}