1 //===- LDSectionFactory.cpp -----------------------------------------------===// 2 // 3 // The MCLinker Project 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 #include <mcld/LD/LDSectionFactory.h> 10 11 using namespace mcld; 12 13 //========================== 14 // LDSectionFactory 15 LDSectionFactory::LDSectionFactory(size_t pNum) 16 : GCFactory<LDSection, 0>(pNum) { 17 } 18 19 LDSectionFactory::~LDSectionFactory() 20 { 21 } 22 23 LDSection* LDSectionFactory::produce(const std::string& pName, 24 LDFileFormat::Kind pKind, 25 uint32_t pType, 26 uint32_t pFlag) 27 { 28 // create a LDSection 29 LDSection* result = allocate(); 30 new (result) LDSection(pName, pKind, pType, pFlag); 31 return result; 32 } 33 34 void LDSectionFactory::destroy(LDSection*& pSection) 35 { 36 // do not recycle LDSection. HeaderFactory will do that job. 37 deallocate(pSection); 38 } 39 40 LDSection* LDSectionFactory::find(const std::string& pName) 41 { 42 iterator sect_iter, sect_end = end(); 43 for (sect_iter = begin(); sect_iter != sect_end; ++sect_iter) 44 if ((*sect_iter).name() == pName) 45 break; 46 if (sect_iter == sect_end) 47 return NULL; 48 return &(*sect_iter); 49 } 50