/* StarPU --- Runtime system for heterogeneous multicore architectures.
 *
 * Copyright (C) 2010-2021  Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
 *
 * StarPU is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or (at
 * your option) any later version.
 *
 * StarPU is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * See the GNU Lesser General Public License in COPYING.LGPL for more details.
 */

#ifndef __STARPU_DEPRECATED_API_H__
#define __STARPU_DEPRECATED_API_H__

#ifdef __cplusplus
extern "C"
{
#endif

#if defined(STARPU_USE_DEPRECATED_API) || defined(STARPU_USE_DEPRECATED_ONE_ZERO_API)
#warning Your application is using deprecated types. You may want to update to use the latest API, by using tools/dev/rename.sh.
#endif /* defined(STARPU_USE_DEPRECATED_API) || defined(STARPU_USE_DEPRECATED_ONE_ZERO_API) */

#define starpu_permodel_history_based_expected_perf	starpu_perfmodel_history_based_expected_perf

#ifdef STARPU_USE_DEPRECATED_ONE_ZERO_API

#define starpu_allocate_buffer_on_node	starpu_malloc_on_node
#define starpu_free_buffer_on_node	starpu_free_on_node
#define starpu_helper_cublas_init	starpu_cublas_init
#define starpu_helper_cublas_shutdown	starpu_cublas_shutdown

#define starpu_canonical_block_filter_bcsr	starpu_bcsr_filter_canonical_block
#define starpu_vertical_block_filter_func_csr	starpu_csr_filter_vertical_block

#define starpu_block_filter_func			starpu_matrix_filter_block
#define starpu_block_shadow_filter_func			starpu_matrix_filter_block_shadow
#define starpu_vertical_block_filter_func		starpu_matrix_filter_vertical_block
#define starpu_vertical_block_shadow_filter_func	starpu_matrix_filter_vertical_block_shadow

#define starpu_block_filter_func_vector		starpu_vector_filter_block
#define starpu_block_shadow_filter_func_vector	starpu_vector_filter_block_shadow
#define starpu_vector_list_filter_func		starpu_vector_filter_list
#define starpu_vector_divide_in_2_filter_func	starpu_vector_filter_divide_in_2

#define starpu_block_filter_func_block			starpu_block_filter_block
#define starpu_block_shadow_filter_func_block		starpu_block_filter_block_shadow
#define starpu_vertical_block_filter_func_block		starpu_block_filter_vertical_block
#define starpu_vertical_block_shadow_filter_func_block	starpu_block_filter_vertical_block_shadow
#define starpu_depth_block_filter_func_block		starpu_block_filter_depth_block
#define starpu_depth_block_shadow_filter_func_block	starpu_block_filter_depth_block_shadow

#define starpu_display_codelet_stats		starpu_codelet_display_stats

#define starpu_access_mode				starpu_data_access_mode
#define starpu_buffer_descr				starpu_data_descr
#define starpu_memory_display_stats			starpu_data_display_memory_stats
#define starpu_handle_to_pointer			starpu_data_handle_to_pointer
#define starpu_handle_get_local_ptr			starpu_data_get_local_ptr
#define starpu_crc32_be_n				starpu_hash_crc32c_be_n
#define starpu_crc32_be					starpu_hash_crc32c_be
#define starpu_crc32_string				starpu_hash_crc32c_string
#define starpu_perf_archtype				starpu_perfmodel_archtype
#define starpu_history_based_expected_perf		starpu_perfmodel_history_based_expected_perf
#define starpu_task_profiling_info			starpu_profiling_task_info
#define starpu_worker_profiling_info			starpu_profiling_worker_info
#define starpu_bus_profiling_info			starpu_profiling_bus_info
#define starpu_set_profiling_id				starpu_profiling_set_id
#define starpu_worker_get_profiling_info		starpu_profiling_worker_get_info
#define starpu_bus_profiling_helper_display_summary	starpu_profiling_bus_helper_display_summary
#define starpu_worker_profiling_helper_display_summary	starpu_profiling_worker_helper_display_summary
#define starpu_archtype					starpu_worker_archtype

#define starpu_handle_get_interface_id		starpu_data_get_interface_id
#define starpu_handle_get_size			starpu_data_get_size
#define starpu_handle_pack_data			starpu_data_pack
#define starpu_handle_unpack_data		starpu_data_unpack

#endif /* STARPU_USE_DEPRECATED_ONE_ZERO_API */

#ifdef STARPU_USE_DEPRECATED_API
typedef starpu_data_handle_t starpu_data_handle;
typedef struct starpu_block_interface starpu_block_interface_t;
typedef struct starpu_matrix_interface starpu_matrix_interface_t;
typedef struct starpu_vector_interface starpu_vector_interface_t;
typedef struct starpu_variable_interface starpu_variable_interface_t;
typedef struct starpu_csr_interface starpu_csr_interface_t;
typedef struct starpu_bcsr_interface starpu_bcsr_interface_t;
typedef struct starpu_multiformat_interface starpu_multiformat_interface_t;
#define starpu_machine_topology_s starpu_machine_topology
#define starpu_htbl32_node_s starpu_htbl32_node
#define starpu_history_list_t starpu_history_list
#define starpu_buffer_descr_t starpu_buffer_descr
#define starpu_regression_model_t starpu_regression_model
#define starpu_per_arch_perfmodel_t starpu_per_arch_perfmodel
#define starpu_perfmodel_t starpu_perfmodel
#define starpu_sched_policy_s starpu_sched_policy
#define starpu_data_interface_ops_t starpu_data_interface_ops

typedef struct starpu_buffer_descr starpu_buffer_descr;
typedef struct starpu_codelet starpu_codelet;
typedef struct starpu_codelet starpu_codelet_t;
typedef enum starpu_access_mode starpu_access_mode;

#define starpu_print_bus_bandwidth     starpu_bus_print_bandwidth
#define starpu_get_handle_interface_id starpu_handle_get_interface_id
#define starpu_get_current_task        starpu_task_get_current
#define starpu_unpack_cl_args          starpu_codelet_unpack_args
#define starpu_pack_cl_args   	       starpu_codelet_pack_args
#define starpu_task_deinit	       starpu_task_clean

#endif /* STARPU_USE_DEPRECATED_API */

#ifdef __cplusplus
}
#endif

#endif /* __STARPU_DEPRECATED_API_H__ */
