text: /*
   * Copyright 2016 Google Inc.
   *
   * Use of this source code is governed by a BSD-style license that can be
   * found in the LICENSE file.
   */
   
  #ifndef SKSL_ASTCALLSUFFIX
  #define SKSL_ASTCALLSUFFIX
  
  #include <vector>
  #include "SkSLASTSuffix.h"
  
  namespace SkSL {
  
  /**
   * A parenthesized list of arguments following an expression, indicating a function call. 
   */
  struct ASTCallSuffix : public ASTSuffix {
      ASTCallSuffix(Position position, std::vector<std::unique_ptr<ASTExpression>> arguments) 
      : INHERITED(position, ASTSuffix::kCall_Kind)
      , fArguments(std::move(arguments)) {}
  
      SkString description() const override {
          SkString result("(");
          SkString separator;
          for (size_t i = 0; i < fArguments.size(); ++i) {
              result += separator;
              separator = ", ";
              result += fArguments[i]->description();
          }
          result += ")";
          return result;
      }
  
      std::vector<std::unique_ptr<ASTExpression>> fArguments;
  
      typedef ASTSuffix INHERITED;
  };
  
  } // namespace
  
  #endif
  