//===- FileToken.cpp ------------------------------------------------------===// // // The MCLinker Project // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "mcld/Script/FileToken.h" #include "mcld/Support/GCFactory.h" #include <llvm/Support/ManagedStatic.h> namespace mcld { typedef GCFactory<FileToken, MCLD_SYMBOLS_PER_INPUT> FileTokenFactory; static llvm::ManagedStatic<FileTokenFactory> g_FileTokenFactory; //===----------------------------------------------------------------------===// // FileToken //===----------------------------------------------------------------------===// FileToken::FileToken() { } FileToken::FileToken(const std::string& pName, bool pAsNeeded) : InputToken(InputToken::File, pName, pAsNeeded) { } FileToken::~FileToken() { } FileToken* FileToken::create(const std::string& pName, bool pAsNeeded) { FileToken* result = g_FileTokenFactory->allocate(); new (result) FileToken(pName, pAsNeeded); return result; } void FileToken::destroy(FileToken*& pFileToken) { g_FileTokenFactory->destroy(pFileToken); g_FileTokenFactory->deallocate(pFileToken); pFileToken = NULL; } void FileToken::clear() { g_FileTokenFactory->clear(); } } // namespace mcld