1f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===- NameSpec.cpp -------------------------------------------------------===// 2f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// 3f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// The MCLinker Project 4f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// 5f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// This file is distributed under the University of Illinois Open Source 6f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// License. See LICENSE.TXT for details. 7f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// 8f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 9f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Script/NameSpec.h> 10f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Support/GCFactory.h> 11f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <llvm/Support/ManagedStatic.h> 12f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 13f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesusing namespace mcld; 14f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 15f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinestypedef GCFactory<NameSpec, MCLD_SYMBOLS_PER_INPUT> NameSpecFactory; 16f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesstatic llvm::ManagedStatic<NameSpecFactory> g_NameSpecFactory; 17f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 18f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 19f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// NameSpec 20f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 21f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesNameSpec::NameSpec() 22f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 23f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 24f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesNameSpec::NameSpec(const std::string& pName, bool pAsNeeded) 26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines : InputToken(InputToken::NameSpec, pName, pAsNeeded) 27f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 28f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 29f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 30f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesNameSpec::~NameSpec() 31f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 32f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 33f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 34f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesNameSpec* NameSpec::create(const std::string& pName, bool pAsNeeded) 35f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 36f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines NameSpec* result = g_NameSpecFactory->allocate(); 37f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines new (result) NameSpec(pName, pAsNeeded); 38f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines return result; 39f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 40f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 41f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesvoid NameSpec::destroy(NameSpec*& pNameSpec) 42f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 43f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_NameSpecFactory->destroy(pNameSpec); 44f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_NameSpecFactory->deallocate(pNameSpec); 45f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines pNameSpec = NULL; 46f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 47f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 48f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesvoid NameSpec::clear() 49f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 50f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_NameSpecFactory->clear(); 51f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 52