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