15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- LDSectionFactory.cpp -----------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/LDSectionFactory.h> 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//========================== 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// LDSectionFactory 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDSectionFactory::LDSectionFactory(size_t pNum) 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao : GCFactory<LDSection, 0>(pNum) { 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDSectionFactory::~LDSectionFactory() 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDSection* LDSectionFactory::produce(const std::string& pName, 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDFileFormat::Kind pKind, 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao uint32_t pType, 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao uint32_t pFlag) 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // create a LDSection 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* result = allocate(); 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new (result) LDSection(pName, pKind, pType, pFlag); 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return result; 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid LDSectionFactory::destroy(LDSection*& pSection) 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // do not recycle LDSection. HeaderFactory will do that job. 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao deallocate(pSection); 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDSection* LDSectionFactory::find(const std::string& pName) 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao iterator sect_iter, sect_end = end(); 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao for (sect_iter = begin(); sect_iter != sect_end; ++sect_iter) 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if ((*sect_iter).name() == pName) 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao break; 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (sect_iter == sect_end) 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return NULL; 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return &(*sect_iter); 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 50