Program Listing for File decomposition_base.h

Return to documentation for file (fields2cover/decomposition/decomposition_base.h)

//=============================================================================
//    Copyright (C) 2021-2024 Wageningen University - All Rights Reserved
//                     Author: Gonzalo Mier
//                        BSD-3 License
//=============================================================================

#pragma once
#ifndef FIELDS2COVER_DECOMPOSITION_DECOMPOSITION_BASE_H_
#define FIELDS2COVER_DECOMPOSITION_DECOMPOSITION_BASE_H_

#include "fields2cover/types.h"
#include "fields2cover/objectives/decomp_obj/decomp_objective.h"

namespace f2c::decomp {

class DecompositionBase {
 public:
  virtual F2CCells decompose(const F2CCells& cells,
      const obj::DecompObjective& obj = obj::DecompObjective());

 public:
  virtual F2CCells split(const F2CCells& cells,
      const obj::DecompObjective& obj);

  virtual F2CMultiLineString genSplitLines(const F2CCells& cells,
      const obj::DecompObjective& obj) = 0;

  virtual F2CCells merge(const F2CCells& cells,
      const obj::DecompObjective& obj);

  virtual ~DecompositionBase() = default;
};

}  // namespace f2c::decomp


#endif  // FIELDS2COVER_DECOMPOSITION_DECOMPOSITION_BASE_H_