00001
00007 #if !defined(INC_OSKI_HEUR_TYPEDEP_H)
00008
00009 #define INC_OSKI_HEUR_TYPEDEP_H
00010
00011 #include <oski/common.h>
00012 #include <oski/matrix.h>
00013
00014 #if defined(DO_NAME_MANGLING)
00015
00017 #define oski_IsHeurApplicable MANGLE_(oski_IsHeurApplicable)
00018 #define oski_EstimateHeurCost MANGLE_(oski_EstimateHeurCost)
00019 #define oski_EvaluateHeur MANGLE_(oski_EvaluateHeur)
00020 #define oski_ApplyHeurResults MANGLE_(oski_ApplyHeurResults)
00021
00022 #define oski_HeurIsApplicable_funcpt \
00023 MANGLE_(oski_HeurIsApplicable_funcpt)
00024 #define oski_HeurEstimateCost_funcpt \
00025 MANGLE_(oski_HeurEstimateCost_funcpt)
00026 #define oski_HeurEvaluate_funcpt \
00027 MANGLE_(oski_HeurEvaluate_funcpt)
00028 #define oski_HeurApplyResults_funcpt \
00029 MANGLE_(oski_HeurApplyResults_funcpt)
00030
00031 #endif
00032
00037 int oski_IsHeurApplicable (oski_id_t id, const oski_matrix_t A_tunable);
00038
00043 double oski_EstimateHeurCost (oski_id_t id, const oski_matrix_t A_tunable);
00044
00051 void *oski_EvaluateHeur (oski_id_t id, const oski_matrix_t A_tunable);
00052
00057 int oski_ApplyHeurResults (oski_id_t id, void *results,
00058 const oski_matrix_t A_tunable);
00059
00061 #define CRAZY_HEUR_COST (double)1e9
00062
00064 typedef int (*oski_HeurIsApplicable_funcpt) (const oski_matrix_t A_tunable);
00065
00068 typedef double (*oski_HeurEstimateCost_funcpt) (const oski_matrix_t A);
00069
00072 typedef void *(*oski_HeurEvaluate_funcpt) (const oski_matrix_t A);
00073
00076 typedef int (*oski_HeurApplyResults_funcpt) (void *results,
00077 const oski_matrix_t A);
00078
00079 #endif
00080
00081