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