#ifdef STANDARD
/* STANDARD is defined, don't use any mysql functions */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#ifdef __WIN__
typedef unsigned __int64 ulonglong;	/* Microsofts 64 bit types */
typedef __int64 longlong;
#else
typedef unsigned long long ulonglong;
typedef long long longlong;
#endif /*__WIN__*/
#else
#include <my_global.h>
#include <my_sys.h>
#if defined(MYSQL_SERVER)
#include <m_string.h>		/* To get strmov() */
#else
/* when compiled as standalone */
#define strmov(a,b) strcpy(a,b)
#define bzero(a,b) memset(a,0,b)
#define memcpy_fixed(a,b,c) memcpy(a,b,c)
#endif
#endif
#include <mysql.h>
#include <ctype.h>

#ifndef HAVE_DLOPEN
	#error "HAVE_DLOPEN not set"
#endif

/* These must be right or mysqld will not find the symbol! */

my_bool steuern_ch_init(UDF_INIT *initid, UDF_ARGS *args, char *message);

my_bool steuern_ch_e_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
void steuern_ch_e_deinit(UDF_INIT *initid);
double steuern_ch_e(UDF_INIT *initid, UDF_ARGS *args, char *result,
			unsigned long *length, char *is_null, char *error);

my_bool steuern_ch_v_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
void steuern_ch_v_deinit(UDF_INIT *initid);
double steuern_ch_v(UDF_INIT *initid, UDF_ARGS *args, char *result,
			unsigned long *length, char *is_null, char *error);

double steuern_e_ag(double v, short unsigned int t, unsigned int k);
double steuern_v_ag(double v, short unsigned int t, unsigned int k);

double steuern_e_ai(double v, short unsigned int t, unsigned int k);
double steuern_v_ai(double v, short unsigned int t, unsigned int k);

double steuern_e_ar(double v, short unsigned int t, unsigned int k);
double steuern_v_ar(double v, short unsigned int t, unsigned int k);

double steuern_e_be(double v, short unsigned int t, unsigned int k);
double steuern_v_be(double v, short unsigned int t, unsigned int k);

double steuern_e_bs(double v, short unsigned int t, unsigned int k);
double steuern_v_bs(double v, short unsigned int t, unsigned int k);

double steuern_e_fr(double v, short unsigned int t, unsigned int k);
double steuern_v_fr(double v, short unsigned int t, unsigned int k);

double steuern_e_ge(double v, short unsigned int t, unsigned int k);
double steuern_v_ge(double v, short unsigned int t, unsigned int k);

double steuern_e_gl(double v, short unsigned int t, unsigned int k);
double steuern_v_gl(double v, short unsigned int t, unsigned int k);

double steuern_e_gr(double v, short unsigned int t, unsigned int k);
double steuern_v_gr(double v, short unsigned int t, unsigned int k);

double steuern_e_ju(double v, short unsigned int t, unsigned int k);
double steuern_v_ju(double v, short unsigned int t, unsigned int k);

double steuern_e_lu(double v, short unsigned int t, unsigned int k);
double steuern_v_lu(double v, short unsigned int t, unsigned int k);

double steuern_e_ne(double v, short unsigned int t, unsigned int k);
double steuern_v_ne(double v, short unsigned int t, unsigned int k);

double steuern_e_nw(double v, short unsigned int t, unsigned int k);
double steuern_v_nw(double v, short unsigned int t, unsigned int k);

double steuern_e_ow(double v, short unsigned int t, unsigned int k);
double steuern_v_ow(double v, short unsigned int t, unsigned int k);

double steuern_e_sg(double v, short unsigned int t, unsigned int k);
double steuern_v_sg(double v, short unsigned int t, unsigned int k);

double steuern_e_sh(double v, short unsigned int t, unsigned int k);
double steuern_v_sh(double v, short unsigned int t, unsigned int k);

double steuern_e_so(double v, short unsigned int t, unsigned int k);
double steuern_v_so(double v, short unsigned int t, unsigned int k);

double steuern_e_sz(double v, short unsigned int t, unsigned int k);
double steuern_v_sz(double v, short unsigned int t, unsigned int k);

double steuern_e_tg(double v, short unsigned int t, unsigned int k);
double steuern_v_tg(double v, short unsigned int t, unsigned int k);

double steuern_e_ti(double v, short unsigned int t, unsigned int k);
double steuern_v_ti(double v, short unsigned int t, unsigned int k);

double steuern_e_ur(double v, short unsigned int t, unsigned int k);
double steuern_v_ur(double v, short unsigned int t, unsigned int k);

double steuern_e_vd(double v, short unsigned int t, unsigned int k);
double steuern_v_vd(double v, short unsigned int t, unsigned int k);

double steuern_e_zg(double v, short unsigned int t, unsigned int k);
double steuern_v_zg(double v, short unsigned int t, unsigned int k);

double steuern_e_zh(double v, short unsigned int t, unsigned int k);
double steuern_v_zh(double v, short unsigned int t, unsigned int k);

