00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00016 #include "common.h"
00017
00018
00019
00020
00021
00022 const char *drizzle_version(void)
00023 {
00024 return PACKAGE_VERSION;
00025 }
00026
00027 drizzle_st *drizzle_create(drizzle_st *drizzle)
00028 {
00029 if (drizzle == NULL)
00030 {
00031 drizzle= malloc(sizeof(drizzle_st));
00032 if (drizzle == NULL)
00033 return NULL;
00034
00035 memset(drizzle, 0, sizeof(drizzle_st));
00036 drizzle->options|= DRIZZLE_ALLOCATED;
00037 }
00038 else
00039 memset(drizzle, 0, sizeof(drizzle_st));
00040
00041 return drizzle;
00042 }
00043
00044 drizzle_st *drizzle_clone(drizzle_st *drizzle, drizzle_st *from)
00045 {
00046 drizzle_con_st *con;
00047
00048 drizzle= drizzle_create(drizzle);
00049 if (drizzle == NULL)
00050 return NULL;
00051
00052 drizzle->options|= (from->options & ~(uint32_t)DRIZZLE_ALLOCATED);
00053
00054 for (con= from->con_list; con != NULL; con= con->next)
00055 {
00056 if (drizzle_con_clone(drizzle, NULL, con) == NULL)
00057 {
00058 drizzle_free(drizzle);
00059 return NULL;
00060 }
00061 }
00062
00063 return drizzle;
00064 }
00065
00066 void drizzle_free(drizzle_st *drizzle)
00067 {
00068 drizzle_con_st *con;
00069 drizzle_query_st *query;
00070
00071 for (con= drizzle->con_list; con != NULL; con= drizzle->con_list)
00072 drizzle_con_free(con);
00073
00074 for (query= drizzle->query_list; query != NULL; query= drizzle->query_list)
00075 drizzle_query_free(query);
00076
00077 if (drizzle->pfds != NULL)
00078 free(drizzle->pfds);
00079
00080 if (drizzle->options & DRIZZLE_ALLOCATED)
00081 free(drizzle);
00082 }
00083
00084 const char *drizzle_error(drizzle_st *drizzle)
00085 {
00086 return (const char *)(drizzle->last_error);
00087 }
00088
00089 int drizzle_errno(drizzle_st *drizzle)
00090 {
00091 return drizzle->last_errno;
00092 }
00093
00094 uint16_t drizzle_error_code(drizzle_st *drizzle)
00095 {
00096 return drizzle->error_code;
00097 }
00098
00099 const char *drizzle_sqlstate(drizzle_st *drizzle)
00100 {
00101 return drizzle->sqlstate;
00102 }
00103
00104 drizzle_options_t drizzle_options(drizzle_st *drizzle)
00105 {
00106 return drizzle->options;
00107 }
00108
00109 void drizzle_set_options(drizzle_st *drizzle, drizzle_options_t options)
00110 {
00111 drizzle->options= options;
00112 }
00113
00114 void drizzle_add_options(drizzle_st *drizzle, drizzle_options_t options)
00115 {
00116 drizzle->options|= options;
00117 }
00118
00119 void drizzle_remove_options(drizzle_st *drizzle, drizzle_options_t options)
00120 {
00121 drizzle->options&= ~options;
00122 }
00123
00124 void drizzle_set_event_watch(drizzle_st *drizzle,
00125 drizzle_event_watch_fn *event_watch,
00126 void *event_watch_arg)
00127 {
00128 drizzle->event_watch= event_watch;
00129 drizzle->event_watch_arg= event_watch_arg;
00130 }