// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
/**
 * @class   vtkNonOverlappingAMRAlgorithm
 *  produce vtkNonOverlappingAMR as output.
 *
 *
 *
 */

#ifndef vtkNonOverlappingAMRAlgorithm_h
#define vtkNonOverlappingAMRAlgorithm_h

#include "vtkCommonExecutionModelModule.h" // For export macro
#include "vtkUniformGridAMRAlgorithm.h"
#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO

VTK_ABI_NAMESPACE_BEGIN
class vtkNonOverlappingAMR;
class vtkInformation;

class VTKCOMMONEXECUTIONMODEL_EXPORT VTK_MARSHALAUTO vtkNonOverlappingAMRAlgorithm
  : public vtkUniformGridAMRAlgorithm
{
public:
  static vtkNonOverlappingAMRAlgorithm* New();
  vtkTypeMacro(vtkNonOverlappingAMRAlgorithm, vtkUniformGridAMRAlgorithm);
  void PrintSelf(ostream& os, vtkIndent indent) override;

  ///@{
  /**
   * Get the output data object for a port on this algorithm
   */
  vtkNonOverlappingAMR* GetOutput();
  vtkNonOverlappingAMR* GetOutput(int);
  ///@}

protected:
  vtkNonOverlappingAMRAlgorithm();
  ~vtkNonOverlappingAMRAlgorithm() override;

  ///@{
  /**
   * See algorithm for more info.
   */
  int FillOutputPortInformation(int port, vtkInformation* info) override;
  int FillInputPortInformation(int port, vtkInformation* info) override;
  ///@}

private:
  vtkNonOverlappingAMRAlgorithm(const vtkNonOverlappingAMRAlgorithm&) = delete;
  void operator=(const vtkNonOverlappingAMRAlgorithm&) = delete;
};

VTK_ABI_NAMESPACE_END
#endif /* VTKNONOVERLAPPINGAMRALGORITHM_H_ */
