SkSLDoStatement.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * Copyright 2016 Google Inc.
  3. *
  4. * Use of this source code is governed by a BSD-style license that can be
  5. * found in the LICENSE file.
  6. */
  7. #ifndef SKSL_DOSTATEMENT
  8. #define SKSL_DOSTATEMENT
  9. #include "src/sksl/ir/SkSLExpression.h"
  10. #include "src/sksl/ir/SkSLStatement.h"
  11. namespace SkSL {
  12. /**
  13. * A 'do' statement.
  14. */
  15. struct DoStatement : public Statement {
  16. DoStatement(int offset, std::unique_ptr<Statement> statement,
  17. std::unique_ptr<Expression> test)
  18. : INHERITED(offset, kDo_Kind)
  19. , fStatement(std::move(statement))
  20. , fTest(std::move(test)) {}
  21. std::unique_ptr<Statement> clone() const override {
  22. return std::unique_ptr<Statement>(new DoStatement(fOffset, fStatement->clone(),
  23. fTest->clone()));
  24. }
  25. String description() const override {
  26. return "do " + fStatement->description() + " while (" + fTest->description() + ");";
  27. }
  28. std::unique_ptr<Statement> fStatement;
  29. std::unique_ptr<Expression> fTest;
  30. typedef Statement INHERITED;
  31. };
  32. } // namespace
  33. #endif