1 //===- StrToken.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/StrToken.h"
10 
11 #include "mcld/Support/GCFactory.h"
12 
13 #include <llvm/Support/ManagedStatic.h>
14 
15 namespace mcld {
16 
17 typedef GCFactory<StrToken, MCLD_SYMBOLS_PER_INPUT> StrTokenFactory;
18 static llvm::ManagedStatic<StrTokenFactory> g_StrTokenFactory;
19 
20 //===----------------------------------------------------------------------===//
21 // StrToken
22 //===----------------------------------------------------------------------===//
StrToken()23 StrToken::StrToken() : m_Kind(Unknown) {
24 }
25 
StrToken(Kind pKind,const std::string & pString)26 StrToken::StrToken(Kind pKind, const std::string& pString)
27     : m_Kind(pKind), m_Name(pString) {
28 }
29 
~StrToken()30 StrToken::~StrToken() {
31 }
32 
create(const std::string & pString)33 StrToken* StrToken::create(const std::string& pString) {
34   StrToken* result = g_StrTokenFactory->allocate();
35   new (result) StrToken(String, pString);
36   return result;
37 }
38 
destroy(StrToken * & pStrToken)39 void StrToken::destroy(StrToken*& pStrToken) {
40   g_StrTokenFactory->destroy(pStrToken);
41   g_StrTokenFactory->deallocate(pStrToken);
42   pStrToken = NULL;
43 }
44 
clear()45 void StrToken::clear() {
46   g_StrTokenFactory->clear();
47 }
48 
49 }  // namespace mcld
50