// // Created by fu on 4/25/18. // #pragma once #import #import #ifdef __ANDROID__ #include #define LOG_TAG "OCR_NDK" #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__) #define LOGW(...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__) #else #include #define LOGI(format, ...) \ fprintf(stdout, "[" LOG_TAG "]" format "\n", ##__VA_ARGS__) #define LOGW(format, ...) \ fprintf(stdout, "[" LOG_TAG "]" format "\n", ##__VA_ARGS__) #define LOGE(format, ...) \ fprintf(stderr, "[" LOG_TAG "]Error: " format "\n", ##__VA_ARGS__) #endif enum RETURN_CODE { RETURN_OK = 0 }; enum NET_TYPE { NET_OCR = 900100, NET_OCR_INTERNAL = 991008 }; template inline T product(const std::vector &vec) { if (vec.empty()) { return 0; } return std::accumulate(vec.begin(), vec.end(), 1, std::multiplies()); }