Home | History | Annotate | Download | only in Script
      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 
     15 namespace mcld {
     16 
     17 typedef GCFactory<FileToken, MCLD_SYMBOLS_PER_INPUT> FileTokenFactory;
     18 static llvm::ManagedStatic<FileTokenFactory> g_FileTokenFactory;
     19 
     20 //===----------------------------------------------------------------------===//
     21 // FileToken
     22 //===----------------------------------------------------------------------===//
     23 FileToken::FileToken() {
     24 }
     25 
     26 FileToken::FileToken(const std::string& pName, bool pAsNeeded)
     27     : InputToken(InputToken::File, pName, pAsNeeded) {
     28 }
     29 
     30 FileToken::~FileToken() {
     31 }
     32 
     33 FileToken* 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 
     39 void FileToken::destroy(FileToken*& pFileToken) {
     40   g_FileTokenFactory->destroy(pFileToken);
     41   g_FileTokenFactory->deallocate(pFileToken);
     42   pFileToken = NULL;
     43 }
     44 
     45 void FileToken::clear() {
     46   g_FileTokenFactory->clear();
     47 }
     48 
     49 }  // namespace mcld
     50