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