//===- 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); }