00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MRCP_ENGINE_PLUGIN_H
00020 #define MRCP_ENGINE_PLUGIN_H
00021
00022
00023
00024
00025
00026
00027 #include "apr_version.h"
00028 #include "apt_log.h"
00029 #include "mrcp_engine_types.h"
00030
00031 APT_BEGIN_EXTERN_C
00032
00033
00034 #ifdef WIN32
00035 #define MRCP_PLUGIN_DECLARE(type) EXTERN_C __declspec(dllexport) type
00036 #else
00037 #define MRCP_PLUGIN_DECLARE(type) type
00038 #endif
00039
00040
00041 #define MRCP_PLUGIN_ENGINE_SYM_NAME "mrcp_plugin_create"
00042
00043 #define MRCP_PLUGIN_VERSION_SYM_NAME "mrcp_plugin_version"
00044
00045 #define MRCP_PLUGIN_LOGGER_SYM_NAME "mrcp_plugin_logger_set"
00046
00047
00048 typedef mrcp_engine_t* (*mrcp_plugin_creator_f)(apr_pool_t *pool);
00049
00050
00051 typedef apt_bool_t (*mrcp_plugin_log_accessor_f)(apt_logger_t *logger);
00052
00053
00054 #define MRCP_PLUGIN_LOGGER_IMPLEMENT \
00055 MRCP_PLUGIN_DECLARE(apt_bool_t) mrcp_plugin_logger_set(apt_logger_t *logger) \
00056 { return apt_log_instance_set(logger); }
00057
00058
00059 #define MRCP_PLUGIN_VERSION_DECLARE \
00060 MRCP_PLUGIN_DECLARE(mrcp_plugin_version_t) mrcp_plugin_version = \
00061 {PLUGIN_MAJOR_VERSION, PLUGIN_MINOR_VERSION, PLUGIN_PATCH_VERSION};
00062
00063
00064
00065
00066
00067
00068
00069 #define PLUGIN_MAJOR_VERSION 1
00070
00071
00072
00073
00074
00075 #define PLUGIN_MINOR_VERSION 0
00076
00077
00078
00079
00080
00081 #define PLUGIN_PATCH_VERSION 0
00082
00083
00084
00085
00086
00087
00088 #define PLUGIN_VERSION_AT_LEAST(major,minor,patch) \
00089 (((major) < PLUGIN_MAJOR_VERSION) \
00090 || ((major) == PLUGIN_MAJOR_VERSION && (minor) < PLUGIN_MINOR_VERSION) \
00091 || ((major) == PLUGIN_MAJOR_VERSION && (minor) == PLUGIN_MINOR_VERSION && (patch) <= PLUGIN_PATCH_VERSION))
00092
00093
00094 #define PLUGIN_VERSION_STRING \
00095 APR_STRINGIFY(PLUGIN_MAJOR_VERSION) "." \
00096 APR_STRINGIFY(PLUGIN_MINOR_VERSION) "." \
00097 APR_STRINGIFY(PLUGIN_PATCH_VERSION)
00098
00099
00100 typedef apr_version_t mrcp_plugin_version_t;
00101
00102
00103 static APR_INLINE void mrcp_plugin_version_get(mrcp_plugin_version_t *version)
00104 {
00105 version->major = PLUGIN_MAJOR_VERSION;
00106 version->minor = PLUGIN_MINOR_VERSION;
00107 version->patch = PLUGIN_PATCH_VERSION;
00108 }
00109
00110
00111 static APR_INLINE int mrcp_plugin_version_check(mrcp_plugin_version_t *version)
00112 {
00113 return PLUGIN_VERSION_AT_LEAST(version->major,version->minor,version->patch);
00114 }
00115
00116 APT_END_EXTERN_C
00117
00118 #endif