| //===- CommandAction.h ----------------------------------------------------===// |
| // |
| // The MCLinker Project |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| #ifndef MCLD_MC_COMMAND_ACTION_H |
| #define MCLD_MC_COMMAND_ACTION_H |
| #ifdef ENABLE_UNITTEST |
| #include <gtest.h> |
| #endif |
| |
| #include <string> |
| #include <mcld/Support/Path.h> |
| #include <mcld/MC/InputAction.h> |
| |
| namespace mcld { |
| |
| class SearchDirs; |
| class InputBuilder; |
| |
| //===----------------------------------------------------------------------===// |
| // Derived InputAction |
| //===----------------------------------------------------------------------===// |
| /// InputFileAction |
| class InputFileAction : public InputAction |
| { |
| public: |
| explicit InputFileAction(unsigned int pPosition, const sys::fs::Path &pPath); |
| |
| const sys::fs::Path& path() const { return m_Path; } |
| |
| bool activate(InputBuilder&) const; |
| |
| private: |
| sys::fs::Path m_Path; |
| }; |
| |
| /// NamespecAction |
| class NamespecAction : public InputAction |
| { |
| public: |
| NamespecAction(unsigned int pPosition, |
| const std::string &pNamespec, |
| SearchDirs& pSearchDirs); |
| |
| const std::string &namespec() const { return m_Namespec; } |
| |
| bool activate(InputBuilder&) const; |
| |
| private: |
| std::string m_Namespec; |
| SearchDirs& m_SearchDirs; |
| }; |
| |
| /// BitcodeAction |
| class BitcodeAction : public InputAction |
| { |
| public: |
| BitcodeAction(unsigned int pPosition, const sys::fs::Path &pPath); |
| |
| const sys::fs::Path& path() const { return m_Path; } |
| |
| bool activate(InputBuilder&) const; |
| |
| private: |
| sys::fs::Path m_Path; |
| }; |
| |
| /// StartGroupAction |
| class StartGroupAction : public InputAction |
| { |
| public: |
| explicit StartGroupAction(unsigned int pPosition); |
| |
| bool activate(InputBuilder&) const; |
| }; |
| |
| /// EndGroupAction |
| class EndGroupAction : public InputAction |
| { |
| public: |
| explicit EndGroupAction(unsigned int pPosition); |
| |
| bool activate(InputBuilder&) const; |
| }; |
| |
| /// WholeArchiveAction |
| class WholeArchiveAction : public InputAction |
| { |
| public: |
| explicit WholeArchiveAction(unsigned int pPosition); |
| |
| bool activate(InputBuilder&) const; |
| }; |
| |
| /// NoWholeArchiveAction |
| class NoWholeArchiveAction : public InputAction |
| { |
| public: |
| explicit NoWholeArchiveAction(unsigned int pPosition); |
| |
| bool activate(InputBuilder&) const; |
| }; |
| |
| /// AsNeededAction |
| class AsNeededAction : public InputAction |
| { |
| public: |
| explicit AsNeededAction(unsigned int pPosition); |
| |
| bool activate(InputBuilder&) const; |
| }; |
| |
| /// NoAsNeededAction |
| class NoAsNeededAction : public InputAction |
| { |
| public: |
| explicit NoAsNeededAction(unsigned int pPosition); |
| |
| bool activate(InputBuilder&) const; |
| }; |
| |
| /// AddNeededAction |
| class AddNeededAction : public InputAction |
| { |
| public: |
| explicit AddNeededAction(unsigned int pPosition); |
| |
| bool activate(InputBuilder&) const; |
| }; |
| |
| /// NoAddNeededAction |
| class NoAddNeededAction : public InputAction |
| { |
| public: |
| explicit NoAddNeededAction(unsigned int pPosition); |
| |
| bool activate(InputBuilder&) const; |
| }; |
| |
| /// BDynamicAction |
| class BDynamicAction : public InputAction |
| { |
| public: |
| explicit BDynamicAction(unsigned int pPosition); |
| |
| bool activate(InputBuilder&) const; |
| }; |
| |
| /// BStaticAction |
| class BStaticAction : public InputAction |
| { |
| public: |
| explicit BStaticAction(unsigned int pPosition); |
| |
| bool activate(InputBuilder&) const; |
| }; |
| |
| } // end of namespace mcld |
| |
| #endif |
| |