//===- 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