 }
 
 
-template <template <typename> class hash_function,
-          typename size_type>
-struct table_row_hasher
-{
-  table_row_hasher(gdf_table<size_type> const & table_to_hash) 
-    : the_table{table_to_hash}
-  {}
-  
-  __device__
-  hash_value_type operator()(size_type row_index) const
-  {
-    return the_table.template hash_row<hash_function>(row_index);
-  }
-
-  gdf_table<size_type> const & the_table;
-};
-
-
 /* --------------------------------------------------------------------------*/
 /** 
  * @Synopsis  Functor to map a hash value to a particular 'bin' or partition number

  thrust::scatter(input_column,
                  input_column + num_rows,
                  row_output_locations,
                  partitioned_output_column);

  CUDA_CHECK_LAST();

  return gdf_status;
}

template <typename size_type>
gdf_error scatter_gdf_table(gdf_table<size_type> const & input_table,
                            size_type const * const row_output_locations,

  }
};

/* --------------------------------------------------------------------------*/
/** 
 * @brief Computes which partition each row of a gdf_table will belong to based
   on hashing each row, and applying a partition function to the hash value. 
   Also computes the number of rows that belong to each partition.
 * 
 * @Param[in] the_table The table whose rows will be partitioned
 * @Param[in] num_rows The number of rows in the table
 * @Param[in] num_partitions The number of partitions to divide the rows into
 * @Param[in] the_partitioner The functor that maps a rows hash value to a partition number
 * @Param[out] row_partition_numbers Array that holds which partition each row belongs to
 * @Param[out] partition_sizes The number of rows in each partition.
 */
/* ----------------------------------------------------------------------------*/
template <template <typename> class hash_function,
          typename partitioner_type,
          typename size_type>
