Home | History | Annotate | Download | only in Script
      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 
     16 namespace mcld
     17 {
     18 
     19 /** \class NameSpec
     20  *  \brief This class defines the interfaces to a namespec in INPUT/GROUP
     21  *         command.
     22  */
     23 
     24 class NameSpec : public InputToken
     25 {
     26 private:
     27   friend class Chunk<NameSpec, MCLD_SYMBOLS_PER_INPUT>;
     28   NameSpec();
     29   NameSpec(const std::string& pName, bool pAsNeeded);
     30 
     31 public:
     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