Program Listing for File permute_order_one.h

Return to documentation for file (src/sparsebase/permute/permute_order_one.h)

#include <vector>

#include "sparsebase/config.h"
#include "sparsebase/format/array.h"
#include "sparsebase/permute/permuter.h"
#include "sparsebase/utils/parameterizable.h"

#ifndef SPARSEBASE_PROJECT_PERMUTE_ORDER_ONE_H
#define SPARSEBASE_PROJECT_PERMUTE_ORDER_ONE_H
namespace sparsebase::permute {


template <typename IDType>
struct PermuteOrderOneParams : utils::Parameters {
  IDType *order;
  explicit PermuteOrderOneParams(IDType *order) : order(order){};
};
template <typename IDType, typename ValueType>
class PermuteOrderOne : public Permuter<format::FormatOrderOne<ValueType>,
                                        format::FormatOrderOne<ValueType>> {
 public:
  PermuteOrderOne(IDType *);
  typedef PermuteOrderOneParams<IDType> ParamsType;
  explicit PermuteOrderOne(ParamsType);

 protected:

  static format::FormatOrderOne<ValueType> *PermuteArray(
      std::vector<format::Format *> formats, utils::Parameters *);
};

}  // namespace sparsebase::permute
#ifdef _HEADER_ONLY
#include "sparsebase/permute/permute_order_one.cc"
#endif

#endif  // SPARSEBASE_PROJECT_PERMUTE_ORDER_ONE_H