1//===- NameSpec.h ---------------------------------------------------------===//
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#ifndef MCLD_SCRIPT_NAMESPEC_H
10#define MCLD_SCRIPT_NAMESPEC_H
11
12#include <mcld/Script/InputToken.h>
13#include <mcld/Support/Allocators.h>
14#include <mcld/Config/Config.h>
15
16namespace mcld
17{
18
19/** \class NameSpec
20 *  \brief This class defines the interfaces to a namespec in INPUT/GROUP
21 *         command.
22 */
23
24class NameSpec : public InputToken
25{
26private:
27  friend class Chunk<NameSpec, MCLD_SYMBOLS_PER_INPUT>;
28  NameSpec();
29  NameSpec(const std::string& pName, bool pAsNeeded);
30
31public:
32  ~NameSpec();
33
34  static bool classof(const InputToken* pToken)
35  {
36    return pToken->type() == InputToken::NameSpec;
37  }
38
39  /* factory method */
40  static NameSpec* create(const std::string& pName, bool pAsNeeded);
41  static void destroy(NameSpec*& pToken);
42  static void clear();
43};
44
45} // namepsace of mcld
46
47#endif
48