1 //===- NameSpec.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/Script/NameSpec.h>
10 #include <mcld/Support/GCFactory.h>
11 #include <llvm/Support/ManagedStatic.h>
12 
13 using namespace mcld;
14 
15 typedef GCFactory<NameSpec, MCLD_SYMBOLS_PER_INPUT> NameSpecFactory;
16 static llvm::ManagedStatic<NameSpecFactory> g_NameSpecFactory;
17 
18 //===----------------------------------------------------------------------===//
19 // NameSpec
20 //===----------------------------------------------------------------------===//
NameSpec()21 NameSpec::NameSpec()
22 {
23 }
24 
NameSpec(const std::string & pName,bool pAsNeeded)25 NameSpec::NameSpec(const std::string& pName, bool pAsNeeded)
26   : InputToken(InputToken::NameSpec, pName, pAsNeeded)
27 {
28 }
29 
~NameSpec()30 NameSpec::~NameSpec()
31 {
32 }
33 
create(const std::string & pName,bool pAsNeeded)34 NameSpec* NameSpec::create(const std::string& pName, bool pAsNeeded)
35 {
36   NameSpec* result = g_NameSpecFactory->allocate();
37   new (result) NameSpec(pName, pAsNeeded);
38   return result;
39 }
40 
destroy(NameSpec * & pNameSpec)41 void NameSpec::destroy(NameSpec*& pNameSpec)
42 {
43   g_NameSpecFactory->destroy(pNameSpec);
44   g_NameSpecFactory->deallocate(pNameSpec);
45   pNameSpec = NULL;
46 }
47 
clear()48 void NameSpec::clear()
49 {
50   g_NameSpecFactory->clear();
51 }
52