Action.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. //===--- Action.cpp - Abstract compilation steps --------------------------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. #include "clang/Driver/Action.h"
  10. #include <cassert>
  11. using namespace clang::driver;
  12. Action::~Action() {
  13. if (OwnsInputs) {
  14. for (iterator it = begin(), ie = end(); it != ie; ++it)
  15. delete *it;
  16. }
  17. }
  18. const char *Action::getClassName(ActionClass AC) {
  19. switch (AC) {
  20. case InputClass: return "input";
  21. case BindArchClass: return "bind-arch";
  22. case PreprocessJobClass: return "preprocessor";
  23. case PrecompileJobClass: return "precompiler";
  24. case AnalyzeJobClass: return "analyzer";
  25. case CompileJobClass: return "compiler";
  26. case AssembleJobClass: return "assembler";
  27. case LinkJobClass: return "linker";
  28. case LipoJobClass: return "lipo";
  29. case DsymutilJobClass: return "dsymutil";
  30. }
  31. assert(0 && "invalid class");
  32. return 0;
  33. }
  34. InputAction::InputAction(const Arg &_Input, types::ID _Type)
  35. : Action(InputClass, _Type), Input(_Input) {
  36. }
  37. BindArchAction::BindArchAction(Action *Input, const char *_ArchName)
  38. : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) {
  39. }
  40. JobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type)
  41. : Action(Kind, Input, Type) {
  42. }
  43. JobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type)
  44. : Action(Kind, Inputs, Type) {
  45. }
  46. PreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType)
  47. : JobAction(PreprocessJobClass, Input, OutputType) {
  48. }
  49. PrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType)
  50. : JobAction(PrecompileJobClass, Input, OutputType) {
  51. }
  52. AnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType)
  53. : JobAction(AnalyzeJobClass, Input, OutputType) {
  54. }
  55. CompileJobAction::CompileJobAction(Action *Input, types::ID OutputType)
  56. : JobAction(CompileJobClass, Input, OutputType) {
  57. }
  58. AssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType)
  59. : JobAction(AssembleJobClass, Input, OutputType) {
  60. }
  61. LinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type)
  62. : JobAction(LinkJobClass, Inputs, Type) {
  63. }
  64. LipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type)
  65. : JobAction(LipoJobClass, Inputs, Type) {
  66. }
  67. DsymutilJobAction::DsymutilJobAction(ActionList &Inputs, types::ID Type)
  68. : JobAction(DsymutilJobClass, Inputs, Type) {
  69. }