#pragma once
#include <stdbool.h>
#include <stddef.h>
#define CATBOOST_APPLIER_MAJOR 1
#define CATBOOST_APPLIER_MINOR 0
#define CATBOOST_APPLIER_FIX 4
#if defined(__cplusplus)
extern "C" {
#endif
#if defined(_WIN32) && !defined(CATBOOST_API_STATIC_LIB)
#ifdef _WINDLL
#define CATBOOST_API __declspec(dllexport)
#else
#define CATBOOST_API __declspec(dllimport)
#endif
#else
#define CATBOOST_API
#endif
typedef void DataWrapperHandle;
typedef void DataProviderHandle;
CATBOOST_API DataWrapperHandle* DataWrapperCreate(size_t docsCount);
CATBOOST_API void DataWrapperDelete(DataWrapperHandle* dataWrapperHandle);
CATBOOST_API void AddFloatFeatures(DataWrapperHandle* dataWrapperHandle, const float** floatFeatures, size_t floatFeaturesSize);
CATBOOST_API void AddCatFeatures(DataWrapperHandle* dataWrapperHandle, const char*** catFeatures, size_t catFeaturesSize);
CATBOOST_API void AddTextFeatures(DataWrapperHandle* dataWrapperHandle, const char*** textFeatures, size_t textFeaturesSize);
CATBOOST_API DataProviderHandle* BuildDataProvider(DataWrapperHandle* dataWrapperHandle);
typedef void ModelCalcerHandle;
enum EApiPredictionType {
APT_RAW_FORMULA_VAL = 0,
APT_EXPONENT = 1,
APT_RMSE_WITH_UNCERTAINTY = 2,
APT_PROBABILITY = 3,
APT_CLASS = 4,
};
CATBOOST_API ModelCalcerHandle* ModelCalcerCreate();
CATBOOST_API void ModelCalcerDelete(ModelCalcerHandle* modelHandle);
CATBOOST_API const char* GetErrorString();
CATBOOST_API bool LoadFullModelFromFile(
ModelCalcerHandle* modelHandle,
const char* filename);
CATBOOST_API bool LoadFullModelFromBuffer(
ModelCalcerHandle* modelHandle,
const void* binaryBuffer,
size_t binaryBufferSize);
CATBOOST_API bool EnableGPUEvaluation(ModelCalcerHandle* modelHandle, int deviceId);
CATBOOST_API bool SetPredictionType(ModelCalcerHandle* modelHandle, enum EApiPredictionType predictionType);
CATBOOST_API bool SetPredictionTypeString(ModelCalcerHandle* modelHandle, const char* predictionTypeStr);
CATBOOST_API bool CalcModelPredictionFlat(
ModelCalcerHandle* modelHandle,
size_t docCount,
const float** floatFeatures, size_t floatFeaturesSize,
double* result, size_t resultSize);
CATBOOST_API bool CalcModelPrediction(
ModelCalcerHandle* modelHandle,
size_t docCount,
const float** floatFeatures, size_t floatFeaturesSize,
const char*** catFeatures, size_t catFeaturesSize,
double* result, size_t resultSize);
CATBOOST_API bool CalcModelPredictionText(
ModelCalcerHandle* modelHandle,
size_t docCount,
const float** floatFeatures, size_t floatFeaturesSize,
const char*** catFeatures, size_t catFeaturesSize,
const char*** textFeatures, size_t textFeaturesSize,
double* result, size_t resultSize);
CATBOOST_API bool CalcModelPredictionSingle(
ModelCalcerHandle* modelHandle,
const float* floatFeatures, size_t floatFeaturesSize,
const char** catFeatures, size_t catFeaturesSize,
double* result, size_t resultSize);
CATBOOST_API bool CalcModelPredictionWithHashedCatFeatures(
ModelCalcerHandle* modelHandle,
size_t docCount,
const float** floatFeatures, size_t floatFeaturesSize,
const int** catFeatures, size_t catFeaturesSize,
double* result, size_t resultSize);
CATBOOST_API bool CalcModelPredictionWithHashedCatFeaturesAndTextFeatures(
ModelCalcerHandle* modelHandle,
size_t docCount,
const float** floatFeatures, size_t floatFeaturesSize,
const int** catFeatures, size_t catFeaturesSize,
const char*** textFeatures, size_t textFeaturesSize,
double* result, size_t resultSize);
CATBOOST_API bool PredictSpecificClassFlat(
ModelCalcerHandle* modelHandle,
size_t docCount,
const float** floatFeatures, size_t floatFeaturesSize,
int classId,
double* result, size_t resultSize);
CATBOOST_API bool PredictSpecificClass(
ModelCalcerHandle* modelHandle,
size_t docCount,
const float** floatFeatures, size_t floatFeaturesSize,
const char*** catFeatures, size_t catFeaturesSize,
int classId,
double* result, size_t resultSize);
CATBOOST_API bool PredictSpecificClassText(
ModelCalcerHandle* modelHandle,
size_t docCount,
const float** floatFeatures, size_t floatFeaturesSize,
const char*** catFeatures, size_t catFeaturesSize,
const char*** textFeatures, size_t textFeaturesSize,
int classId,
double* result, size_t resultSize);
CATBOOST_API bool PredictSpecificClassSingle(
ModelCalcerHandle* modelHandle,
const float* floatFeatures, size_t floatFeaturesSize,
const char** catFeatures, size_t catFeaturesSize,
int classId,
double* result, size_t resultSize);
CATBOOST_API bool PredictSpecificClassWithHashedCatFeatures(
ModelCalcerHandle* modelHandle,
size_t docCount,
const float** floatFeatures, size_t floatFeaturesSize,
const int** catFeatures, size_t catFeaturesSize,
int classId,
double* result, size_t resultSize);
CATBOOST_API bool PredictSpecificClassWithHashedCatFeaturesAndTextFeatures(
ModelCalcerHandle* modelHandle,
size_t docCount,
const float** floatFeatures, size_t floatFeaturesSize,
const int** catFeatures, size_t catFeaturesSize,
const char*** textFeatures, size_t textFeaturesSize,
int classId,
double* result, size_t resultSize);
CATBOOST_API int GetStringCatFeatureHash(const char* data, size_t size);
CATBOOST_API int GetIntegerCatFeatureHash(long long val);
CATBOOST_API size_t GetFloatFeaturesCount(ModelCalcerHandle* modelHandle);
CATBOOST_API size_t GetCatFeaturesCount(ModelCalcerHandle* modelHandle);
CATBOOST_API size_t GetTreeCount(ModelCalcerHandle* modelHandle);
CATBOOST_API size_t GetDimensionsCount(ModelCalcerHandle* modelHandle);
CATBOOST_API size_t GetPredictionDimensionsCount(ModelCalcerHandle* modelHandle);
CATBOOST_API bool CheckModelMetadataHasKey(ModelCalcerHandle* modelHandle, const char* keyPtr, size_t keySize);
CATBOOST_API size_t GetModelInfoValueSize(ModelCalcerHandle* modelHandle, const char* keyPtr, size_t keySize);
CATBOOST_API const char* GetModelInfoValue(ModelCalcerHandle* modelHandle, const char* keyPtr, size_t keySize);
#if defined(__cplusplus)
}
#endif