15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- ContextFactory.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/LDContext.h> 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/MC/ContextFactory.h> 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===---------------------------------------------------------------------===// 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// LDContextFactory 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoContextFactory::ContextFactory(size_t pNum) 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao : UniqueGCFactoryBase<sys::fs::Path, LDContext, 0>(pNum) 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoContextFactory::~ContextFactory() 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDContext* ContextFactory::produce(const sys::fs::Path& pPath) 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDContext* result = find(pPath); 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (0 == result) { 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao result = UniqueGCFactoryBase<sys::fs::Path, LDContext, 0>::allocate(); 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new (result) LDContext(); 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao f_KeyMap.insert(std::make_pair(pPath, result)); 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return result; 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 36affc150dc44fab1911775a49636d0ce85333b634Zonr ChangLDContext* ContextFactory::produce() 37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 38affc150dc44fab1911775a49636d0ce85333b634Zonr Chang LDContext* result = allocate(); 39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang new (result) LDContext(); 40affc150dc44fab1911775a49636d0ce85333b634Zonr Chang return result; 41affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 42affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 43